2016-11-15 8 views
1

Pythonファイルを使用してモジュールと通信しようとしています。モジュールに書き込む途中で中断しないように改行ポイントを作成します。ポート通信の読み方は?

しかし、私はポート通信からの読み取り結果はありません。私はcmd.exeの中のすべてのデータを表示する必要がある、それはすでに意味私のpythonファイル

import serial 
ser = serial.Serial(
    port='COM4',\ 
    baudrate= 230400,\ 
    parity=serial.PARITY_NONE,\ 
    stopbits=serial.STOPBITS_ONE,\ 
    bytesize=serial.EIGHTBITS,\ 
     timeout=0) # open serial port 
print(ser.name)   # check which port was really used 
ser.write(b'hello')  # write a string 
str=ser.readline() 
print str 
ser.close()    # close ports 

を使用してCOM4にdiplayedその次の2行:

str=ser.readline() 
print str 

私に与えていない任意の結果。

+0

あなたはどのデバイスから読み込もうとしていますか?それはWindows OSですか(私はそう思います)? ser.readline()メソッドを使用すると、ブレークライン( '\ n')が導入されるまで待機します。より良いser.read()メソッドを使用してください。さらに、* ser *割り当て命令ではバックスラッシュ(\)を使用する必要はありません。 – Jalo

+2

['' 'str'''](https://docs.python.org/3/library/stdtypes.html#str)はPythonのデータ型/クラスです。その名前に他のものを代入すると後であなたを迷惑にさせる可能性があります'' 'str'''を使用しようとしましたが、これはもはやデータ型/クラスではなく変数名です。 – wwii

+0

Dear Jalo、\t py.exeファイルを使用して、cmd.exeにCOM4で既に表示されているすべてのデータを表示する必要があります。私はWindowsを使い、私のUARTはFPGAデバイスに含まれています。 – user7161303

答えて

1

ほとんどの場合、ser.readline()は改行文字(\n)がシリアルポートで受信されるのを待っていますが、ハングアップすることはありません。シリアルポートは、あなたがそれを送っているものをエコーするように設定されている場合、あなたはおそらくつまり、あなたがそれを送信したデータと改行文字を含める必要があり

ser.write(b'Hello\n') 

または、お使いのシリアルデバイスがWindowsスタイルの改行を期待している場合:あなたがstilll任意の応答を取得していない場合は

ser.write(b'Hello\r\n') 

は、あなたはそれがCOなどのすべてのバイトを表示するために

while True: 
    print(ser.read(1).decode()) 

であなたのser.write文の後にデバッグを試すことができますmes back 注:上記のデバッグにのみ使用してください。デバイスがスクリプト外で終了するまでハングアップします。

何も表示されない場合は、おそらくシリアルポートの設定のようなもっと基本的なことが起こります。あなたのボーレートはstandard baud rateではないことがわかりました、そうでしょうか?

サイドノート:serial.Serial宣言の各引数の後にバックスラッシュは必要ありません。テキストが囲まれたカッコ内にあるということは、コードを有効にします。また、ほとんどのパラメータにデフォルトの引数を指定しているため、それらをすべて含める必要はありません。余談

別:read秒でブロックI/Oデバイスで作業することは難しいことができ、そしてそれは、データがhere説明しているもののようqueue.Queueオブジェクトに受信プッシュリーダー・スレッドを設定する役に立つかもしれません。あなたが冒険的な気がするなら、asyncioモジュールを試してみてください。

+0

私のpy.exeファイルを使用してcmd.exeにCOM4で既に表示されているすべてのデータを表示する必要があります – user7161303

+0

親愛なる@Bill、私はあなたに私が注:このメモを理解していない:注:上記のデバッグにのみ使用し、デバイスがスクリプト外で閉じるまでハングします。本当に ser.writeを使用したポート – user7161303

+0

輸入シリアル SER = serial.Serial( ポート= 'COM4'、\ ボーレート= 230400)#オープンシリアルポート プリント(ser.name)#チェック(b'hello」あなたは 'ser.writeを試した – user7161303

関連する問題