シリアル USB ケーブルを介してコンピュータに接続している 8 チャネル ADC チップからのマルチチャネル シリアル データがあります。これらの個別のチャネルを Pure Data で使用したいのですが、pd_comport オブジェクトがマルチチャネル シリアル データを読み取れません。Pd のディスカッション フォーラムを精査しましたが、これを行う方法については言及されていません。どうすればそれについて行くことができるかについて何か考えはありますか?
1 に答える
定義によれば、シリアル接続は単一チャネルのみです。複数の (同期された) チャネルがある場合は、 parallelと呼ばれます。
したがって、問題は基本的に次の2つのいずれかです。
パラレル シリアル ストリーム
異なるシリアル接続を介して 8 つの ADC チャネルを送信する場合、(特別な) ケーブルは 8 つの異なるデバイス (例: 、... ) を登録する必要が/dev/ttyUSB5
あり/dev/ttyUSB6
ます/dev/ttyUSB12
。この場合、単純に複数の[comport]
オブジェクトを使用します (インターフェイスするシリアル デバイスごとに 1 つ)。
シングルマルチプレックスストリーム
(より可能性が高い) ケースでは、ADC がデータを多重化することによって単一のシリアル接続で 8 チャネルを送信する場合、シリアル ストリームを自分で逆多重化する必要があります。これを行う方法は、データの実際の形式に大きく依存します。
ADC が 8 ビットのみで、チャンネルが 4 つしかないと仮定すると (簡単にするために)、次のようなシリアル ストリームを受信する可能性があります: ... A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 ....
(A、B、... は 4 チャンネルのサンプル、および 1,2,.. . がサンプル フレームである場合)、次のような方法で信号を 4 つのストリームに逆多重化できます。
|
[t b f]
| |
| +------------+ |
[i ]/[+ 1]/[% 4]/ |
| |
[pack 0 0]
|
[route 0 1 2 3]
| | | |
実際には、プロトコルはわずかに異なるように見えるかもしれません (たとえば、フレーム境界を指定する方法があるはずです (実際に表示されているかどうかにかかわらず、数字を見るだけでは方法がないA1 B1 C1 D1 A2 B2
ためB1 C1 D1 A2 B2 C2
、最初のサンプルがチャネル A に属しているかチャネル B に属しているかは不明です)。 )。
したがって、プロトコル定義を実際に手に入れ、取得したデータを解釈する必要があります[comport]