0

シリアルポート経由で自家製のカードと通信しようとしているため、pySerial を使用しています。ハイパーターミナルでは、すべて正常に動作します。私は書くことができます:

$ audio on

オーディオは有効になっていますが、使用すると

ser = serial.Serial("COM1", 38400)
ser.write("audio on\r\n")

何も起こりません。ただし、着信データを読み取ることはできるので、通信に問題はありません。\r\n を単に \n または \r に変更しても役に立ちません。

編集:実際にフィードバックを受け取ることがあります:ハイパーターミナルから動作するのとまったく同じコマンドを送信すると、そのようなコマンドはありません。セットアップもハイパーターミナルとまったく同じです。

解決済み: 機能させるには、1 文字ずつ送信し、送信を \r で終了する必要がありました。

4

3 に答える 3

2

オシロスコープを入手して (持っていますよね?)、シリアル ラインを観察します。毎秒 1 文字を送信し、スコープに何が表示されるかを確認します (開始ビットでトリガーするように設定します)。シリアル ポート ビットは、開始、LSB .. MSB、パリティ、停止の順です。

通じない文字がないか、パターンがあるかどうかを確認します。もう 1 つの可能性は、すべてが実際にポートから出ており、ボードがキャラクターをドロップしているということです。

于 2010-06-25T12:23:01.123 に答える
0

ハイパーターミナル経由で文字を送信すると、入力した速度で文字が配信されます。連続ストリームとして配信される pyserial を介して文字を送信します。レシーバーの性質によっては、レシーバーが (特に高いボーレートで) それらをドロップする可能性があります。

また、コマンドをインタープリターに送信するときは、\r ターミネーター (\n なし) のみが必要です (通常、ハイパータームによって送信されるのはこれだけです)。ただし、値を表示するだけの場合は、新しい行を生成するために \n が必要になる場合があります。

于 2014-04-12T20:48:43.287 に答える
0
  1. デバイスのボーレートが実際に 38400 であることをトリプルチェックします
  2. トリプル チェック パリティ、ストップ ビットなど
  3. 長距離でのシリアル伝送の信号劣化に注意してください(おそらくあなたの問題ではありません)

上記のチェックアウトがすべて実行された場合は、文字列をバイト配列に入れて、書き込みコマンドを介して送信してみてください。推測です。

于 2010-06-25T12:31:42.167 に答える