14

Android を使用しているデバイスの COM ポートに対してデータを読み書きする必要があります。そのためにjavax.commパッケージを使用していますが、apkファイルをインストールすると、デバイスのポートが表示されません。マニフェスト ファイルに追加する必要があるアクセス許可はありますか?

4

2 に答える 2

24

あなたの問題はオペレーティングシステムの問題です。Androidは内部でLinuxを実行し、LinuxはWindowsとは異なる方法でシリアルポートを処理します。また、Androidデバイスにインストールできないドライバファイルjavax.commも含まれてwin32com.dllいます。やろうとしていることを達成する方法を見つけた場合、Linux環境で「COM」ポートを実際に探すことはできません。シリアルポートは別の名前になります。

 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

于 2012-06-25T17:39:19.837 に答える