Repository navigation
Expand file tree
/
Copy pathStSerial.py
More file actions
93 lines (82 loc) · 2.58 KB
/
Copy pathStSerial.py
File metadata and controls
93 lines (82 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import threading
from time import sleep
from serial import Serial
import logging
from PyQt5.QtCore import pyqtSignal, QObject
logger = logging.getLogger('main.StSerial')
class StSerial(QObject, threading.Thread):
received = pyqtSignal(bytes)
def __init__(self):
super(StSerial, self).__init__()
# threading.Thread.__init__(self)
self.__terminate = None
logger.info('DsSerial Logger Start')
@staticmethod
def searchSerialPort():
''' Search the valid serial port '''
ports = []
for i in range(100):
port = 'COM' + str(i + 1)
try:
s = Serial(port)
if s.isOpen():
s.close()
ports.append(port)
logger.info("Found :" + port)
except Exception as msg:
pass
return ports
def open(self, settings):
try:
self.serial = Serial(settings['port'], settings['baud'],
settings['bytesize'], settings['parity'],
settings['stopbits'], settings['timeout'])
self.serial.flushInput()
self.serial.flushOutput()
except Exception as msg:
logger.info('Port Open Failed :' + msg)
logger.info('Port Opened Successful')
return True, 'Successful'
def getPort(self):
print(self.serial)
def terminate(self, flag):
self.__terminate = flag;
def send(self, data):
if self.serial.isOpen():
try:
self.serial.write(data)
except Exception as msg:
logger.info("Port write failed :" + msg)
else:
logger.error('Port Not Open')
def __recv(self):
data, quit = None, False
while True:
if self.__terminate == False:
self.serial.close()
break
data = self.serial.read(1)
sleep(0.1)
if data == b'':
continue
while True:
n = self.serial.inWaiting()
if n > 0:
data += self.serial.read(n)
sleep(0.1)
else:
quit = True
break
if quit:
break
return data
def close(self):
#if self.serial.isOpen():
self.serial.close()
def run(self):
while 1:
data = self.__recv()
if not data:
break
self.received.emit(data)
self.serial.close()