Есть вот такое решение для датчиков посетителей. Это для Linux, и всё корректно пашет. Требуется такое же замутить для винды на том же python.
Толковых примеров считывания сигналов под вендой не нашёл. Накопал только, что это делается через win32api и WaitCommEvent. Но что там и как - материалов нет. Поможите, если кто решал подобное.
#!/usr/bin/python
#coding=utf-8
import os,sys,datetime
from serial import Serial
from fcntl import ioctl
from termios import (TIOCMIWAIT,TIOCM_RNG,TIOCM_CTS)
ser = Serial('/dev/ttyUSB0')
wait_signals = (TIOCM_RNG | TIOCM_CTS)
ins=0
out=0
status=""
x=0
os.system('clear')
while True:
ioctl(ser.fd, TIOCMIWAIT, wait_signals)
if ser.getRI() == True and ser.getCTS() == False:
x=x+1
status=status+"in"
if ser.getRI() == False and ser.getCTS() == True:
x=x+1
status=status+"out"
if x == x*2/2:
if status == "inout":
ins=ins+1
status=""
f=open("posetiteli.csv", "a+")
print >>f,datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"),'Вошло:',1,'Вышло:',0
f.close()
os.system('clear')
print datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"),'Вошло:',ins,'Вышло:',out
if status == "outin":
out=out+1print >>f,datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"),'Вошло:',0,'Вышло:',1
f.close()
os.system('clear')
print datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"),'Вошло:',ins,'Вышло:',out
status=""
f=open("posetiteli.csv", "a+")