Sscom English Version Site

self.status_label = tk.Label(self.root, text="Status: Port closed", bd=1, relief=tk.SUNKEN, anchor=tk.W) self.status_label.pack(side="bottom", fill="x")

def open_port(self): if not self.port_combo.get(): messagebox.showerror("Error", "Select a serial port first.") return try: baud = int(self.baud_combo.get()) self.serial_port = serial.Serial(self.port_combo.get(), baud, timeout=0.1) self.running = True self.receive_thread = threading.Thread(target=self.receive_data, daemon=True) self.receive_thread.start() self.open_btn.config(text="Close Port", bg="lightcoral") self.status_label.config(text=f"Status: Opened {self.port_combo.get()} @ {baud} baud") except Exception as e: messagebox.showerror("Error", f"Cannot open port:\n{e}")

self.clear_btn = tk.Button(settings_frame, text="Clear Receive", command=self.clear_receive) self.clear_btn.grid(row=0, column=5, padx=5) sscom english version

def send_text_data(self): if not self.serial_port or not self.serial_port.is_open: messagebox.showerror("Error", "Port not opened.") return data = self.send_text.get("1.0", tk.END).encode('utf-8') self.serial_port.write(data)

self.send_btn = tk.Button(btn_frame, text="Send (Text)", command=self.send_text_data, bg="lightblue") self.send_btn.pack(side="left", padx=5) self.status_label = tk.Label(self.root

self.timestamp_var = tk.BooleanVar() tk.Checkbutton(settings_frame, text="Show Timestamp", variable=self.timestamp_var).grid(row=0, column=6, padx=10)

def clear_receive(self): self.recv_text.delete("1.0", tk.END) text="Status: Port closed"

def send_hex_data(self): if not self.serial_port or not self.serial_port.is_open: messagebox.showerror("Error", "Port not opened.") return hex_str = self.send_text.get("1.0", tk.END).strip() # Remove spaces, newlines hex_str = ''.join(hex_str.split()) try: data = bytes.fromhex(hex_str) self.serial_port.write(data) except ValueError: messagebox.showerror("Hex Error", "Invalid hex string (e.g., '01 AB CD')")

Discover more from CubicleNate.com

Subscribe now to keep reading and get access to the full archive.

Continue reading