Expo环境下Android与CDC串口设备通信问题求助
Expo环境下Android与CDC串口设备通信的可行方案求解
已尝试方案及问题
React Native第三方库尝试
- 集成
react-native-usb-serialport-for-android库,运行代码时触发no driver for device错误,无法解决。怀疑原因:- CDC设备未被识别,且无法手动添加设备信息;
- 该库依赖的
mik3y/usb-serial-for-android版本为v3.4.3,而v3.5+版本才支持通过USB接口自动检测CDC设备(经simpleusbterminal测试,设备可正常通信);
- 尝试
react-native-serialport库,因版本过旧无法通过npm完成安装。
原生方案尝试
- 使用Expo Prebuild生成Android项目目录后,因不熟悉Java/Kotlin,不知道如何与原生库进行交互;
- 使用Expo Modules API封装第三方原生库时,找不到
build.gradle文件来添加依赖,陷入停滞。
困惑与诉求
对Expo Prebuild与Expo Modules API的区别存在困惑,恳请提供Expo环境下Android与CDC串口设备建立通信的可行解决方案。
附尝试代码
const handlePressSave = async (data) => { try { const devices = await UsbSerialManager.list(); devices.forEach(device => { console.log('Device ID:', device.deviceId, 'Product ID:', device.productId, 'Vendor ID:', device.vendorId); console.log('-----------------------------------'); }); await UsbSerialManager.tryRequestPermission(5023); const usbSerialport = await UsbSerialManager.open(5023, { baudRate: 9600, parity: Parity.None, dataBits: 8, stopBits: 1 }); const sub = usbSerialport.onReceived((event) => { console.log(event.deviceId, event.data); }); const jsonData = { "tranType": "ping-test" }; const jsonString = JSON.stringify(jsonData); const hexData = Array.from(jsonString) .map(char => char.charCodeAt(0).toString(16).padStart(2, '0')) .join(''); await usbSerialport.send(hexData); usbSerialport.close(); } catch (error) { console.error('Error opening serial port:', error); } }
内容的提问来源于stack exchange,提问作者Desmond
相关产品推荐
相关产品推荐

