Подскажите, пожалуйста, если не сложно.
На компьютере нужно “слушать” COM порт,
на который периодически с интервалом в несколько минут приходят данные.
Нашел в сети пример работы скрипта с com-портом посредством pyserial. Отправляешь команду, возвращается ответ с порта.
А как поступить если нужно периодически порт слушать? И как понять, что пришли новые данные? Данные - это строка в 25 символов.
Не хотелось бы скрипт периодически по крону запускать, лучше б запустить его только один раз при загрузке системы, а дальше чтоб он сам “ловил” с порта данные и дальше писал куда я скажу.
Спасибо за помощь!
#! /usr/bin/env python
import time
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=38400,
timeout=10,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.open()
ser.isOpen()
print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
input=1
while 1 :
# get keyboard input
input = raw_input(">> ")
if input == 'exit':
ser.close()
exit()
else:
# send the character to the device
# (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
ser.write(input + '\r\n')
out = ''
# let's wait one second before reading output (let's give device time to answer)
time.sleep(1)
while ser.inWaiting() > 0:
out += ser.read(1)
if out != '':
print ">>" + out