Raspberry PIの奇妙なシリアルポート動作

Raspberry PIの奇妙なシリアルポート動作

GPIO15(RXD)ピンを介してRaspberry Piからシリアルデータを受信しようとしています。次のPythonスクリプトがあります。

serPort = serial.Serial("/dev/ttyAMA0", baudrate=2400)
while True:
    rcv = ord(serPort.read())
    print(str(rcv))

Raspbianディストリビューションでシームレスに作業するために使用されます。すべての着信バイトを印刷します。

変化する分布を見つけることができる場所。そしてDietPIをフォローしてください。 DietPIディストリビューションを使用してください。ガベージバイトのみを受信します。 (主にゼロが多い)。

いくつかの注意:

stty -F /dev/ttyAMA0 -a (以前のディストリビューションの結果):

speed 2400 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

stty -F /dev/ttyAMA0 -a (新しい Dietpi ディストリビューションの結果):

speed 2400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke -flusho -extproc

Dietpiのsttyコマンド(stty -F / dev / ttyAMA0 2400)を介して転送速度を設定する場合。 2400に変更されます。ただし、シリアルデータで爆発すると、他の値に戻ります。ほとんどの場合19200です。転送速度に自動的にキャリブレーションしようと思いましたか?以前のディストリビューションでもまだ機能していることを確認しました。これはハードウェアの問題ではありません。 Dietpiディストリビューションのシリアルポートの設定に問題がありますか?

関連情報