2017-08-15 18 views
-1

ラズベリーパイとアルドゥイノの間にRS485通信システムを確立しようとしています。私は現在、Nick Gammons arduino 485ライブラリArduino RS485 Libraryを使用しており、Pythonに移植してラズベリーパイを実行したいと考えています。バイト操作(シリアルデータ)ラズベリーパイ

送信側はcrc8と補完エラー防止機能で正常に動作しますが、受信側では問題があります。 pySerial API HEREに記載されているように、ser.read()はバイト型の変数を返します。これに伴う問題は、私は、例として、エラーチェックを実行するビット演算を必要とすることである。もちろん

  in_byte = ser.read() 


      if (in_byte >> 4) != ((in_byte & 0x0F)^0x0F): 
       return 0 

      in_byte >>= 4 

これは、ビット演算子が「>>」int型の変数と互換性がないことを言って通訳エラーをスローしますそしてバイト

私はint.from_bytes方法を知っているがしかし、これは複数のバイトを必要とするように思わプラスエンディアン形式

私はバイトのシリアルデータによってバイトにビット演算を実行する必要があります「正しい」か、一般的な方法は何ですか?

C/C++背景、

おかげ

アンディ

+0

距離を望むのであれば、422を使うことができ、共有バスを有効にして有効にすることはできません。トランシーバを結線するだけで、ケーブルと作業が完了します。 –

+0

提案していただきありがとうございます。素晴らしいアイデアだが、485モジュールは人生を楽にしてくれるが、質問が投票された理由は不明だ。 –

+0

pythonには>> =演算子がありますin_byte = in_byte >> 4? –

答えて

関連する問題