ROS用python読み書きシリアルポートデータ
1043 ワード
プログラム:
プロセス:
まずUbuntuでpyserialをインストールします
シリアル名を表示し、権限を付与
読み書き実験を行うは、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
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 )
読み書き実験を行う
読み書きの内容
読み取り
読み出したのは16ビットbyteタイプのデータで、unpackの後、その後処理し、上位6ビットはそれぞれroll pitch yaw、7、8ビットはangular_z,9位から16位は各輪の回転数であると読み出される.奇数ビットは方向ビット、偶数ビットは速度ビットである.
書き込み
255,254 mode v_を先にx v_y a_z flag(方向フラグビット)BBBHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH