ROS用python読み書きシリアルポートデータ

1043 ワード

プログラム:
import serial
import struct

ser = serial.Serial('/dev/ttyUSB0','115200')
#write
data1 = 1
data2 = 2
data3 = 3
data = struct.pack('>BHB', data1, data2, data3)
ser.write(data)
#read
data = ''
data_temp = ser.read(4)
data = struct.unpack('>BHB', data_temp)

プロセス:
まずUbuntuでpyserialをインストールします
   pip install serial

シリアル名を表示し、権限を付与
   dmesg | grep ttyUSB
   sudo chmod a+x ttyUSBn(n      )

読み書き実験を行う
  • は、STM 32によって正常に認識されるように、読み書き使用中にstructのpackでデータを変換してシリアルポートに送信する.また、再読み込み時に読み取りを行っても通常のフォーマットのデータを読み出すことができます.ここで、Bは符号のないバイトを表し、Hは2ビットを表す.
  • データを読み取る時、単片機は何ビットを送信して、何ビットを読み取って、完全なデータを読み取ることができます.

  • 読み書きの内容
    読み取り
    読み出したのは16ビットbyteタイプのデータで、unpackの後、その後処理し、上位6ビットはそれぞれroll pitch yaw、7、8ビットはangular_z,9位から16位は各輪の回転数であると読み出される.奇数ビットは方向ビット、偶数ビットは速度ビットである.
    書き込み
    255,254 mode v_を先にx v_y a_z flag(方向フラグビット)BBBHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH