11

Linux Androidで、USB経由でシリアルデバイスを制御するアプリケーションを開発したいと考えています。
Android OS は USB ホストをサポートする 3.1 です。

Q1: シリアルデバイスが搭載されているポートを取得する方法を教えてください。

Dalvik Debug Monitor で「Dump Device State」を取得したところ、おそらく USB デバイスの情報が得られました。
そして、adb を使用して Android デバイスの /dev/tty* を確認しました。
シリアルデバイスがどれ(/dev/tty??)かわかりません。

adb shell
$ ls /dev/tty*
/dev/tty
/dev/ttyFIQ0
/dev/ttyHS0
/dev/ttyHS2
/dev/ttyHS3
/dev/ttyHS4
/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3

Q2: Android で root 権限なしでシリアルデバイスを制御する方法を教えてください。

Linuxでシリアルデバイスを制御できるアプリケーション(exe)があります。
私は android でやろうとしましたが、許可が拒否されたためできませんでした。

で、シリアルポートにリダイレクトしてみました(多分)
$ ls > /dev/ttyS0
でもダメでした。
/dev/ttyS0 を作成できません: 権限が拒否されました。

シリアルデバイスの制御方法とアクセス方法があれば教えてください。

4

3 に答える 3

4

XDAフォーラムスレッドには、これに関するすばらしいレビューがあります。

ATコマンドを使用してモデムと通信する方法

このスレッドは、リモート端末(PCに接続されたUSB)でATコマンド(ATC)を送信する方法を示していますが、ローカル(電話)端末を使用して電話モデムと通信する方法の問題はまだ解決されていません。

ところで。モデムとの通信を行うには、ターミナルアプリケーション/プログラムが必要です(双方向通信であることを忘れないでください)。ルートキットには通常Busyboxmicrocomターミナルプログラムが含まれています)が付属しているため、ルート化されたデバイスが必要なのはそのためです。それ以外の場合は、独自のプログラムを作成する必要があります。

于 2012-01-31T16:09:35.413 に答える
4

次のステップでは、いくつかのコマンドで tty* ポートをテスト でき ます

幸運を!

于 2014-06-13T16:44:11.583 に答える
0

ルート化されたデバイスで試しますか?? 同じことを調べていると、3.1 / 2.3.4 のデバイスのいくつかだけが、USB ポートへの非ルート アクセスを許可していることがわかりました。

これは、ルート化されていない HTC Desire 2.2 で得られるものです。

$ ls /dev/tty*
ls /dev/tty*
/dev/tty
/dev/ttyHS0
/dev/ttyHSUSB0
/dev/ttyHSUSB1
/dev/ttyHSUSB2
/dev/ttyMSM0

私のAsus Transformer、ルート化されていない、3.2:

$ ls /dev/tty*
ls /dev/tty*
/dev/tty
/dev/ttyHS1
/dev/ttyHS2
/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3

キーボードドックがインストールされた状態でドッキングすると、まったく同じリストが表示されます(2 x USBポートとして)。

それが役に立てば幸いです。同じことができるようになりたいと思っていることを教えてください。

于 2011-08-03T11:09:54.877 に答える