我正在使用samsung t365(android 4.4.4)并且它与一个uart通信相当不错。但我需要使用多个(两个)uart与一个Android设备的唯一一个端口进行通信。当我使用USB集线器(S-LİNKSL-U602 USB 2.0)并在游戏市场中使用uart术语应用程序时,我可以通过选择端口看到两个uart。问题是:
- 是否可以使用com端口以编程方式选择并完成工作,
- 什么可能是挑战(有多个uarts)
谢谢。
答案 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;
}