Android を使用しているデバイスの COM ポートに対してデータを読み書きする必要があります。そのためにjavax.commパッケージを使用していますが、apkファイルをインストールすると、デバイスのポートが表示されません。マニフェスト ファイルに追加する必要があるアクセス許可はありますか?
102420 次
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ホストとして設定します。これがあなたがしたいことです:
- を取得し
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
于 2012-06-25T17:39:19.837 に答える