以编程方式选择两个Uart(ft232r)

时间:2016-07-20 09:24:21

标签: android uart

我正在使用samsung t365(android 4.4.4)并且它与一个uart通信相当不错。但我需要使用多个(两个)uart与一个Android设备的唯一一个端口进行通信。当我使用USB集线器(S-LİNKSL-U602 USB 2.0)并在游戏市场中使用uart术语应用程序时,我可以通过选择端口看到两个uart。问题是:

  
      
  • 是否可以使用com端口以编程方式选择并完成工作,
  •   
  • 什么可能是挑战(有多个uarts)
  •   

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试使用android-serialport-api库。
根据RS232标准,每个COM端口只允许一个设备。

答案 1 :(得分:0)

在FTdriver.java中有一个begin方法可以帮助连接多个设备。但是,默认情况下,它是为第一个设备设置的。你可以在评论专栏中看到。应修改它以进行多连接。 参考:https://github.com/ksksue/FTDriver/blob/master/FTDriver/src/jp/ksksue/driver/serial/FTDriver.java

// Open an FTDI USB Device
        public boolean begin(int baudrate) {
            for (UsbDevice device : mManager.getDeviceList().values()) {
                Log.i(TAG, "Devices : " + device.toString());

                getPermission(device);
                if (!mManager.hasPermission(device)) {
                    return false;
                }

                // TODO: support any connections(current version find a first
                // device)
                if (getUsbInterfaces(device)) {
                    break;
                }
            }

            if (mSelectedDeviceInfo == null) {
                return false;
            }

            if (mDevice == null) {
                return false;
            }

            if (mDevice.getDeviceClass() == UsbConstants.USB_CLASS_COMM) {
                isCDC = true;
            } else {
                isCDC = false;
            }

            mFTDIEndpointIN = new UsbEndpoint[mSelectedDeviceInfo.mNumOfChannels];
            mFTDIEndpointOUT = new UsbEndpoint[mSelectedDeviceInfo.mNumOfChannels];

            if (isCDC) {
                if (!getCdcEndpoint()) {
                    return false;
                }
            } else {
                if (!setFTDIEndpoints(mInterface,
                        mSelectedDeviceInfo.mNumOfChannels)) {
                    return false;
                }
            }

            if (isCDC) {
                initCdcAcm(mDeviceConnection, baudrate);
            } else {
                initFTDIChip(mDeviceConnection, baudrate);
            }

            Log.i(TAG, "Device Serial : " + mDeviceConnection.getSerial());

            return true;
    }