0

私はCとシリアル通信の複雑さの両方を持った初心者のようなものです。この問題に関するすべての情報を提供するように努めます。他に役立つものがあれば教えてください。

私のラボで開発しているPythonアプリケーションで使用するために、シリアルデバイス(マイクロマニピュレーター)の通信プロトコルをCからPythonに移植しているところです。同社は、デバイスとのインターフェイスに使用される小さなコマンドラインユーティリティのソースコードを提供してくれました。このロジックを使用して、PythonモジュールはCRCを含む正しい/同一のデータブロックを生成できます。ただし、データブロック(Cコードによって生成されたデータブロックと同じ)がPythonコードによって送信された場合、デバイスからの応答は受信されません。シリアルポート監視プログラム(無料のシリアルポートモニター)を使用して、Pythonとデバイス間の通信が、会社が提供するユーティリティと異なる場合があることに気付きました。

提供されているユーティリティのログのスクリーンショットを次に示します。これは正しく機能します。これは、1つのデータブロックの送信とその応答、および2番目のデータブロックの送信と応答の開始を示しています。

ユーティリティからのログ例

これがPythonコードで何が起こるかのスクリーンショットです。ご覧のとおり、応答なしでデータブロックを送信します。

Pythonからのログ例

役に立つかもしれない他の情報に関しては、私は標準のPythonシリアルライブラリを使用しています。データブロックの構造は、STXで始まりETXで終わる14個のASCII文字です。最初の8文字は関数、アドレス、値などに対応し、最後の4文字はCRCです。

私が言ったように、私はこれに少し初心者であり、どこから始めればよいのか本当にわかりません。これを理解するのに役立つアドバイスや支援、またはリソースをいただければ幸いです。さらに具体的な情報があればお知らせください。

http://reentry.mit.edu/extserialport.c

http://reentry.mit.edu/extserialport.h

4

1 に答える 1

0

pyserialで提供されるwin32serial.pyは、フロー制御とRTSを含め、Cコードから1行ずつ設定をコピーした後、Windows APIシリアル設定に直接(バインディング?)を提供することがわかりました。@Sergeにご協力いただき、誠にありがとうございます。

于 2013-05-06T19:24:25.357 に答える