Как читать и записывать данные в COM / последовательные порты в Android?
Я должен читать и записывать данные в COM-порты устройства с помощью android, я использую javax.пакет comm для этого, но когда я установил файл apk, он не отображает никаких портов устройства, поэтому есть ли какие-либо разрешения, которые мне нужно добавить в файл манифеста?
1 ответов
ваша проблема связана с операционными системами. Android запускает Linux под капотом, и Linux обрабатывает последовательные порты иначе, чем Windows. javax.comm
содержит win32com.dll
, a файл драйвера, который вы не сможете установить на Android-устройстве. Если вы найдете способ достичь того, что вы пытаетесь сделать, вы не можете искать "COM" порт в среде Linux. Последовательные порты будут называться по-разному.
Windows Com Port Linux equivalent
COM 1 /dev/ttyS0
COM 2 /dev/ttyS1
COM 3 /dev/ttyS2
так, гипотетически, если ваша идея должна была сработать, вы должны искать эти имена.
к счастью для вас, Android имеет положения для взаимодействия с USB-устройствами (которые, я полагаю, вы хотите подключить, в отличие от параллельных или RS-232 портов). Для этого вы настроите свое устройство как USB-хост. вот что вы хотите сделать:
- получить
USBManager
. - Найти устройство.
- получить
USBInterface
иUSBEndpoint
. - открыть соединение.
- передача данных.
вот моя приблизительная оценка того, как вы это сделаете. Ваш код, конечно, более зрелый способ делать вещи.
String YOUR_DEVICE_NAME;
byte[] DATA;
int TIMEOUT;
USBManager manager = getApplicationContext().getSystemService(Context.USB_SERVICE);
Map<String, USBDevice> devices = manager.getDeviceList();
USBDevice mDevice = devices.get(YOUR_DEVICE_NAME);
USBDeviceConnection connection = manager.openDevice(mDevice);
USBEndpoint endpoint = device.getInterface(0).getEndpoint(0);
connection.claimInterface(device.getInterface(0), true);
connection.bulkTransfer(endpoint, DATA, DATA.length, TIMEOUT);
дополнительный материал для вашего удовольствия от чтения:http://developer.android.com/guide/topics/connectivity/usb/host.html