Как читать и записывать данные в 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-хост. вот что вы хотите сделать:

  1. получить USBManager.
  2. Найти устройство.
  3. получить USBInterface и USBEndpoint.
  4. открыть соединение.
  5. передача данных.

вот моя приблизительная оценка того, как вы это сделаете. Ваш код, конечно, более зрелый способ делать вещи.

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