Witam.. Piszę aplikację obsługującą modem ST75-80. Mianowicie mam taki problem, że podczas kliknięcia przycisku "RESET" ramki za pierwszym razem zwracane są poprawnie. Niestety, za każdym kolejnym razem mimo czyszczenia kolejki dane się dopisują przez co zwrócone dane są niepożądane. Wrzucam tylko częściowy kod zawierający mój problem.
global ser
ser = serial.Serial()
global q
q = queue.Queue()
def serveException():
try:
t2 = Thread(target=receiveData, args=())
if(t2.isAlive()==False):
t2.start()
except:
print("Nie moze wystartowac watek")
def receiveData():
global ser
global q
while(True):
if(ser.isOpen() == True):
if(ser.inWaiting()):
s = ser.read()
for i in s:
q.put(i)
while not q.empty():
print(hex(q.get()))
q.queue.clear()
def sendReset():
try:
tablicaHEX = bytes([0x02, 0x00, 0x3C, 0x3C, 0x00])
ser.setRTS(True)
ser.setDTR(True)
time.sleep(0.01)
ser.write(bytes(tablicaHEX))
ser.setRTS(False)
ser.setDTR(True)
serveException()
except:
print("nie")`
Od razu uprzedzę że zmienna ser to nic innego jak zmienna, która operuje na bibliotekach pySerial. TablicaHex to nic innego jak wysyłane ramki wymagane do RESETU obliczone na podstawie dokumentacji. Aplikacja zwraca mi takie wartości o to
Output:
0x3f
0x9
0x6
itd itd. Next Click
0x3f0x9
0x60x2
Jak możecie zauważyć kolejka nie jest czyszczona. Efektem pożądanym jest mieć za każdym kolejnym kliknięciem uzyskaną taką wartość jak za pierwszym kliknięciem. Dziękuję za pomoc