原生库 使用的是 志勇大神写的串口工具库 [项目地址]:[https://github.com/licheedev/Android-SerialPort-API]
-
在
package.json
里面的dependencies
添加"react-native-serial-port": "github:Marcello168/react-native-SerialPort"
-
添加后 �执行
$ npm install
就会下载 -
执行 如下命令 自动链接到原生库
$ react-native link react-native-serial-port
-
在Android 目录下 的
build.gradle
文件里面的repositories
增加maven { url 'https://jitpack.io' }
如下allprojects { repositories { mavenLocal() google() jcenter() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } maven { url 'https://jitpack.io' } } }
- 在AndraidMainifest.xml 文件中 将
android:allowBackup="false"
改成android:allowBackup="true"
- 在AndraidMainifest.xml 文件中 将
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactlibrary.RNSerialPortPackage;
to the imports at the top of the file - Add
new RNSerialPortPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-serial-port' project(':react-native-serial-port').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-serial-port/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-serial-port')
- 获取设备的路径列表
import RNSerialPort from 'react-native-serial-port';
// TODO: 获取设备的路径列表
RNSerialPort.getAllDevicesPath((result) => {
console.log(result);
});
- 打开串口
import RNSerialPort from 'react-native-serial-port';
// TODO: 打开串口
RNSerialPort.openSerialPort('/dev/ttySO', 9600);
- 发送数据
import RNSerialPort from 'react-native-serial-port';
let byteData = [0x00,0x01,0x02,0x03,0x05]
// TODO: 发送数据
RNSerialPort.sendByteData(byteData);
- 监听串口的状态 和 监听串口回传数据
import RNSerialPort from 'react-native-serial-port';
DeviceEventEmitter.addListener('onSerialPortRecevieData', this.onSerialPortRecevieData, this)
//监听接收串口开关的状态
DeviceEventEmitter.addListener('onSerialPortOpenStatus',this.onSerialPortOpenStatus, this)
//监听串口的状态
onSerialPortOpenStatus(status) {
alert(status)
console.log("onSerialPortOpenStatus");
//处理逻辑
}
// 监听串口回传数据
onSerialPortRecevieData(receiveData) {
console.log(receiveData);
console.log("onSerialPortRecevieData");
// 处理接收的数据
}