162 lines
4.7 KiB
Python
162 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Sun Mar 21 10:06:43 2021
|
|
|
|
@author: angoosh
|
|
"""
|
|
from serial.tools import list_ports
|
|
import serial
|
|
import gi
|
|
from time import sleep
|
|
import threading
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk
|
|
|
|
ser = ""
|
|
baud = 19200
|
|
readPortEnable = False
|
|
handshakeMsg = b'Hello\n'
|
|
|
|
|
|
def readPort():
|
|
global readPortEnable
|
|
file = open("PORT_DATA.csv","w")
|
|
file.write("AQ_START\n")
|
|
file.close()
|
|
while readPortEnable == True:
|
|
with open("PORT_DATA.csv","a") as file:
|
|
s = ser.read(255)
|
|
print(s)
|
|
file.write(s.decode())
|
|
sleep(2)
|
|
|
|
|
|
class ComboBoxWindow(Gtk.Window):
|
|
def __init__(self):
|
|
Gtk.Window.__init__(self, title="ComboBox Example")
|
|
|
|
self.set_border_width(10)
|
|
|
|
self.portList = Gtk.ListStore(str)
|
|
self.baudList = Gtk.ListStore(str)
|
|
|
|
box = Gtk.Box(spacing=6)
|
|
|
|
self.port_combo = Gtk.ComboBox.new_with_model_and_entry(self.portList)
|
|
self.port_combo.connect("changed", self.on_name_combo_changed)
|
|
self.port_combo.set_entry_text_column(0)
|
|
self.refresh("ignore")
|
|
try:
|
|
self.port_combo.set_active(0)
|
|
except:
|
|
pass
|
|
box.pack_start(self.port_combo, False, False, 0)
|
|
|
|
self.baud_combo = Gtk.ComboBox.new_with_model_and_entry(self.baudList)
|
|
self.baud_combo.connect("changed", self.baud_change)
|
|
self.baud_combo.set_entry_text_column(0)
|
|
|
|
bauds = ["9600",
|
|
"19200",
|
|
"38400",
|
|
"57600",
|
|
"115200",
|
|
"250000",
|
|
"500000",
|
|
"1000000"
|
|
]
|
|
|
|
for baud in bauds:
|
|
self.baudList.append([baud])
|
|
|
|
self.baud_combo.set_active(1)
|
|
box.pack_start(self.baud_combo, False, False, 0)
|
|
|
|
button1 = Gtk.Button()
|
|
button1.connect("clicked", self.refresh)
|
|
button1.set_image(Gtk.Image.new_from_icon_name("view-refresh",1))
|
|
box.pack_start(button1, True, True, 0)
|
|
|
|
button2 = Gtk.Button(label="Connect")
|
|
button2.set_image(Gtk.Image.new_from_icon_name("Connect",1))
|
|
button2.connect("clicked", self.connect_disconnect)
|
|
box.pack_start(button2, True, True, 0)
|
|
|
|
self.add(box)
|
|
|
|
def refresh(self, widget):
|
|
ports = list_ports.comports()
|
|
self.portList.clear()
|
|
for port in ports:
|
|
self.portList.append([port[0]])
|
|
|
|
def baud_change(self, combo):
|
|
global baud
|
|
tree_iter = combo.get_active_iter()
|
|
if tree_iter is not None:
|
|
model = combo.get_model()
|
|
baud = model[tree_iter][0]
|
|
print("Selected Baud: %s" % (baud))
|
|
else:
|
|
entry = combo.get_child()
|
|
print("Entered Baud: %s" % entry.get_text())
|
|
|
|
def connect_disconnect(self, butt):
|
|
global ser, baud, readPortEnable, handshakeMsg
|
|
if butt.get_label() == "Connect":
|
|
self.port_combo.set_sensitive(False)
|
|
self.baud_combo.set_sensitive(False)
|
|
|
|
tree_iter = self.port_combo.get_active_iter()
|
|
model = self.port_combo.get_model()
|
|
port = model[tree_iter][0]
|
|
ser = serial.Serial(port, baud, timeout=1)
|
|
print("Connecting to:"+ port)
|
|
butt.set_label("Disconnect")
|
|
ser.write(b'Hello\n')
|
|
while(ser.readline() != handshakeMsg):
|
|
sleep(0.5)
|
|
|
|
readPortEnable = True
|
|
self.Port_thread = threading.Thread(target=readPort)
|
|
self.Port_thread.start()
|
|
else:
|
|
ser.close()
|
|
self.port_combo.set_sensitive(True)
|
|
self.baud_combo.set_sensitive(True)
|
|
readPortEnable = False
|
|
print("Disconnecting")
|
|
butt.set_label("Connect")
|
|
|
|
def on_name_combo_changed(self, combo):
|
|
tree_iter = combo.get_active_iter()
|
|
if tree_iter is not None:
|
|
model = combo.get_model()
|
|
port = model[tree_iter][0]
|
|
print("Selected Port: %s" % (port))
|
|
else:
|
|
entry = combo.get_child()
|
|
print("Entered: %s" % entry.get_text())
|
|
|
|
def on_country_combo_changed(self, combo):
|
|
tree_iter = combo.get_active_iter()
|
|
if tree_iter is not None:
|
|
model = combo.get_model()
|
|
country = model[tree_iter][0]
|
|
print("Selected: country=%s" % country)
|
|
|
|
def on_currency_combo_changed(self, combo):
|
|
text = combo.get_active_text()
|
|
if text is not None:
|
|
print("Selected: currency=%s" % text)
|
|
|
|
|
|
win = ComboBoxWindow()
|
|
win.connect("destroy", Gtk.main_quit)
|
|
win.show_all()
|
|
Gtk.main()
|
|
|
|
|