6
6
7
7
__author__ = 'Mehmet Cagri Aksoy - github.com/mcagriaksoy'
8
8
__annotations__ = 'AFCOM - Serial Communication GUI Program'
9
+ __version__ = '2024.04'
10
+ __license__ = 'MIT'
11
+ __status__ = 'Research'
9
12
10
13
# IMPORTS
11
- import sys
12
- import glob
13
- import os
14
+ from os import path , system
15
+ from sys import platform , exit , argv
16
+ from glob import glob
14
17
15
18
# Runtime Type Checking
16
19
PROGRAM_TYPE_DEBUG = 1
17
20
PROGRAM_TYPE_RELEASE = 0
21
+
18
22
try :
19
- import serial
20
23
import serial .tools .list_ports
21
- from serial import SerialException
24
+ from serial import SerialException , Serial
22
25
except ImportError as e :
23
26
print ("Import Error! I am installing the PySerial library." )
24
- os . system ("python -m pip install pyserial" )
27
+ system ("python -m pip install pyserial" )
25
28
26
29
try :
27
- from PyQt6 .QtCore import QObject , QThread , pyqtSignal , pyqtSlot
30
+ from PyQt6 .QtCore import QObject , QThread , pyqtSignal
28
31
from PyQt6 .QtWidgets import QApplication , QMainWindow , QMessageBox , QInputDialog
29
32
30
33
if (PROGRAM_TYPE_DEBUG ):
33
36
from ui_config import Ui_main_window
34
37
except ImportError as e :
35
38
print ("Import Error! I am installing the required libraries: " + str (e ))
36
- os . system ("pip install {0}" .format (str (e ).split (" " )[- 1 ]))
39
+ system ("pip install {0}" .format (str (e ).split (" " )[- 1 ]))
37
40
38
41
# GLOBAL VARIABLES
39
- SERIAL_INFO = serial . Serial ()
42
+ SERIAL_INFO = Serial ()
40
43
PORTS = []
41
-
42
44
is_serial_port_established = False
43
45
44
-
45
46
def get_serial_port ():
46
47
""" Lists serial port names
47
48
@@ -50,35 +51,32 @@ def get_serial_port():
50
51
:returns:
51
52
A list of the serial ports available on the system
52
53
"""
53
- if sys . platform .startswith ('win' ):
54
+ if platform .startswith ('win' ):
54
55
ports = ['COM%s' % (i + 1 ) for i in range (256 )]
55
- elif sys . platform .startswith ('linux' ) or sys . platform .startswith ('cygwin' ):
56
+ elif platform .startswith ('linux' ) or platform .startswith ('cygwin' ):
56
57
# this excludes your current terminal "/dev/tty"
57
- ports = glob . glob ('/dev/tty[A-Za-z]*' )
58
- elif sys . platform .startswith ('darwin' ):
59
- ports = glob . glob ('/dev/tty.*' )
58
+ ports = glob ('/dev/tty[A-Za-z]*' )
59
+ elif platform .startswith ('darwin' ):
60
+ ports = glob ('/dev/tty.*' )
60
61
else :
61
62
raise EnvironmentError ('Unsupported platform' )
62
63
63
64
result = []
64
65
for port in ports :
65
66
try :
66
- s = serial . Serial (port )
67
+ s = Serial (port )
67
68
s .close ()
68
69
result .append (port )
69
- except ( OSError , serial . SerialException ) :
70
+ except SerialException :
70
71
pass
71
72
return result
72
73
73
74
# MULTI-THREADING
74
-
75
-
76
75
class Worker (QObject ):
77
76
""" Worker Thread """
78
77
finished = pyqtSignal ()
79
78
serial_data = pyqtSignal (str )
80
79
81
- @pyqtSlot ()
82
80
def __init__ (self ):
83
81
super (Worker , self ).__init__ ()
84
82
self .working = True
@@ -96,18 +94,17 @@ def work(self):
96
94
self .working = False
97
95
self .finished .emit ()
98
96
99
-
100
97
class MainWindow (QMainWindow ):
101
98
""" Main Window """
102
99
103
100
def __init__ (self ):
104
101
""" Initialize Main Window """
105
102
super (MainWindow , self ).__init__ ()
106
103
if PROGRAM_TYPE_DEBUG :
107
- file_path = os . path .join ("../ui/main_window.ui" )
108
- if not os . path .exists (file_path ):
104
+ file_path = path .join ("../ui/main_window.ui" )
105
+ if not path .exists (file_path ):
109
106
print ("UI File Not Found!" )
110
- sys . exit (1 )
107
+ exit (1 )
111
108
loadUi (file_path , self ) # Load the .ui file
112
109
self .show () # Show the GUI
113
110
@@ -314,10 +311,9 @@ def on_send_data_button_clicked(self):
314
311
self .print_message_on_screen (
315
312
"Serial Port is not established yet! Please establish the serial port first!" )
316
313
317
-
318
314
def start_ui_design ():
319
315
""" Start the UI Design """
320
- app = QApplication (sys . argv ) # Create an instance
316
+ app = QApplication (argv ) # Create an instance
321
317
window_object = MainWindow () # Create an instance of our class
322
318
323
319
if PROGRAM_TYPE_RELEASE :
0 commit comments