У меня вопрос о Python и PySerial. Прочитать последовательный порт. STOPBITS_ONE ser.xonxoff=0 ser.rtscts=0 ser.timeout=20 ser.port='/dev/ttyUSB0.
Я пытаюсь получить данные с использованием последовательной связи в Python, что я могу сделать, но мне нужно улучшить код. Я посылаю «пакет» из Arduino, который находится в форме «& 4,25 / n», причем ключевыми факторами являются значения в позициях «4» и «25».
В этом пакете у меня есть «&» как стартбайт, а новая строка «/ n» - как терминатор. Это так, что я могу сказать, когда новый пакет отправлен, и он заканчивается. Как я могу получить этот пакет «& 4,24 / n» и извлечь значения, которые находятся в местах, где «4,24»? Также может быть полезно отметить, что значения будут меняться, они будут отличаться от значений датчиков, отправленных из Arduino. Вот код, который у меня есть прямо сейчас, который я использую для получения одного значения без начального байта, использует новый фид строки для завершения пакета. Import serial ser = serial. Serial ( '/dev/ttyUSB0', 9600 ) from PythonCard import model class MainWindow ( model.
Background ): def onSetSpdBtnmouseClick ( self, event ): spd = self. Value def onFwdBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser.
Write ( 'F' ) ser. Write ( chr ( spd )) def onLftBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser. Write ( 'L' ) ser.
Write ( chr ( spd )) def onRitBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser. Write ( 'R' ) ser. Write ( chr ( spd )) def onRvsBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser. Write ( 'B' ) ser. Write ( chr ( spd )) def onStpBtnmouseClick ( self, event ): spd = self.
Write ( '@' ) ser. Write ( 'S' ) ser. Write ( chr ( spd )) def onGetPingmouseClick ( self, event ): ser. Write ( ' ) ser.
Write ( 'P1' ) ser. Write ( 'p2' ) retval = ser. Readline pingdata = retval. Strip # strip out the newline self. Text = str ( pingdata ) app = model. Application ( MainWindow ) app. MainLoop Это, наряду с файлом ресурсов, дает мне графический интерфейс для удаленного управления роботом через.
Этот код получает одно значение ping от гидролокатора и передает его в графический интерфейс, который будет отображаться. Мне нужно два разных значения ping для двух разных датчиков, которые будут отображаться. Обновить Вот правильный код, который работает.
Import serial ser = serial. Serial ( '/dev/ttyUSB0', 9600 ) from PythonCard import model class MainWindow ( model. Background ): def onSetSpdBtnmouseClick ( self, event ): spd = self.
Value def onFwdBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser.
Write ( 'F' ) ser. Write ( chr ( spd )) def onLftBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser. Write ( 'L' ) ser. Write ( chr ( spd )) def onRitBtnmouseClick ( self, event ): spd = self.
Write ( '@' ) ser. Write ( 'R' ) ser. Write ( chr ( spd )) def onRvsBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser. Write ( 'B' ) ser.
Write ( chr ( spd )) def onStpBtnmouseClick ( self, event ): spd = self. Write ( '@' ) ser. Write ( 'S' ) ser. Write ( chr ( spd )) def onGetPingmouseClick ( self, event ): ser. Write ( ' ) ser.
Write ( 'P1' ) ser. Write ( 'p2' ) retval = ser. Readline pingdata = retval. Strip # strip out the newline, if you read an entire line splitdata = pingdata. Split ( ',' ) LPing = splitdata 0 RPing = splitdata 1 self. Text = str ( LPing ) self. Text = str ( RPing ) app = model.
Application ( MainWindow ) app. MainLoop Спасибо за большой и простой ответ!