Найти - Пользователи
Полная версия: С COM порта поступают сообщения.
Начало » Python для новичков » С COM порта поступают сообщения.
1
Queeee
Привет. Ну серьезно, очень нужна ваша помощь. С COM порта поступают сообщения.
import serial
import time
import binascii
ser = serial.Serial('COM3', 115200,timeout = 1, xonxoff=True, dsrdtr = True, interCharTimeout = True)
d = 0
time.sleep(3)
print ‘3 seconds’
ser.write('$CMD,CLEAR\r\n') # подали команду через порт
a = ser.readline()
SaveFile = open( ‘Data.txt’, ‘a’ )# пишем лог
SaveFile.write(a)
SaveFile.close()
print ‘just waiting for 15 seconds……..’
time.sleep(15)
ser.write('$CMD,CHN,1,MSG,RT3_1005,1\r\n') # подали команду выдавать RTCM сообщения
while d < 1000:
a = ser.readline()
Воот, а дальше, нужно выделить строки, двоичный код которых начинается на “11010011” . и после этого прверить, стоит ли после нашего “11010011” еще “000000”?
Советовали с модулем struct работать, но я нихрена его чет не понимаю. Помогите написать прогу, или объясните.
cutwater
Руководствуясь такой замечательной постановкой задачи вот код.

bytes = struct.unpack('bb', a[:2])
bytes[0] == 0xd3 # ваш 11010011 в HEX
bytes[1] >> 2 == 0 # ваши следующие 6 нулей.
Queeee
спасибо! Не могли бы вы как вы это сделали, пожалуйста.
cutwater
Да очень просто. Я же Вам уже кажется советовал изучать битовые операции и маски?
struct.unpack извлекает из строки с двоичными данными два байта, предварительно конвертируя их в int
первый байт проверяется без сдвига, так как 11010011 - 8 бит эквивалентно 1 байту.
вторые старшие 6 бит проверяются при помощи битового сдвига второго байта на 2
Queeee
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB