作成しようとしている Android アプリで 2 つのライブラリを使用しています。アンドロイド初心者。このアプリは、シリアル デバイスに接続し、端末を介してコンソールを制御するためのものです。
1 つのライブラリは、シリアル接続の設定、ボーレートの設定などに使用され、シリアル経由で読み取り/データを書き込むこともできます。もう 1 つのライブラリは、ターミナル セッションを作成するためのものです。これらのライブラリを実行して、単純な個別の例を起動して実行することに問題はありません。たとえば、最初のライブラリを使用すると、ルーターとのシリアル接続をセットアップし、次のようなテキスト ボックスを介してデータを送受信できます。
https://lh5.ggpht.com/R4CAJXY9ZPDVsgt8jUZg5hc-v81aa70sctiegIGDjzv2lyvuG6OZyYas_4I-h_es-4Aq
2番目のライブラリを使用すると、タブレットにローカル端末をセットアップしてディレクトリなどを見ることができます。私の問題は、これらの両方を組み合わせて、シリアルデバイスに接続された端末を持ち、データのレイアウト/受け渡しを行うことにあります.
ターミナル ライブラリでは、InputStream と OutputStream を提供して、ターミナルに入力と出力を提供する必要があります。そのため、setTermIn(java.io.InputStream) と setTermOut(java.io.OutputStream) を呼び出して、入力ストリームと出力ストリームをエミュレーターに接続する必要があります。
ただし、シリアル ライブラリには、送信と受信の 2 つの方法があり、これらはバイト配列を処理します。データを送信するための sendData(byte[] data) と、データを受信するための dataListener です。これを実装し、メソッド onDataReceived(int id, byte[] data) をコーディングする必要があります。id はデバイスの名前です。
だから私の質問は、これらをどのように接続するのですか? sendData と OnDataReceived の上に java.io.InputStream/OutputStream 実装を作成し、配列をストリームに変換して setTermIn/Out メソッドを呼び出すだけですか?
OnDataReceived の場合、byte[] データを受信し、メソッド内でストリームに変換して、これを terminalActivity に送信するだけだと思いますか? しかし、sendData についてはどうですか。私はこれを実装していません。バイトの配列を送信するだけです。setTermIn の代わりにストリームとして送信するにはどうすればよいですか?
また、これらのことがさまざまな活動で起こっていることと、それがどのように機能するかについても非常に混乱しています. あるアクティビティでシリアルが発生しているため、接続を押して、関連するボーレートなどを読み取り、シリアルデバイスに接続すると、現在何も接続されていない新しいターミナルアクティビティでターミナルが開かれます。ブランク端末。すべてをどのように配置すればよいかわかりません。ターミナルでエンターキーを押した場合と同様に、シリアル経由でデータを送信するための実装は、シリアルデバイスに接続している最初のアクティビティではなく、同じアクティビティにある必要がありますか? しかし、そもそもシリアルデバイスに接続されているかどうかを知るには、データを送受信する必要があります...両方のアクティビティでこれらのメソッドの実装が必要ですか?!
これらの両方を 1 つのアクティビティに組み合わせる必要がありますか?