私が使用していたFPGAは115200転送速度でプログラムされていたので、#stty -F / dev / ttyUSB0 115200コマンドを使用してLinux USBポートの転送速度を9600から115200に変更しました。
# stty -F/dev/ttyUSB0 -a を使用して新しい転送速度をクロス検証しました。これは私に次のような結果を与えます:
スピード115200ボード;行0;列0;行=0; intr = ^C;exit=^\;erase=^? ; kill = ^U;中断=;開始 = ^S; rpnt = ^W; ;破棄=^ O;時間= 0; -parenb -parodd -cmspar cs8 hupcl -cstopb crread clocal -crtscts -ignbrk -brkint -ignpar -inlcr -igncr icrnl ixon -ixoff -ixany -imaxbel -iutf8opost -olcuc -ocrnl onlcr0n bs0 vt0 ff0isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
ただし、プログラムを実行すると、ボーレートは9600に戻ります。 python new.pyインターフェースを検索しています... ['/dev/ttyUSB0']
ser: シリアル (ポート='/dev/ttyUSB0',転送速度=9600、バイトサイズ=8、パリティ='N'、ストップビット=1、タイムアウト=なし、xonxoff=False、rtscts=False、dsrdtr=False)。
どうすればいいですか?
答え1
pyserialを使用して転送速度を明示的に言及しない場合は、次のようにします。9600デフォルトとして。したがって、以前のボーレート設定は役に立ちません。 sttyコマンドを使用してボーレートを115200に設定し、レシーバーをcat /dev/ttyUSByに設定してから、echo hello> /dev/ttyUSB0を試してください。
答え2
Pyserialはボーレートを変更せずにポートを開くことをサポートしていません。ボーレートパラメータが指定されていない場合、デフォルトは9600です。
各Pyserial呼び出しで必要な転送速度を渡す必要があります。