You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:58:13