gpt4 book ai didi

c++ - Windows 上的串行 (COM) 端口重新连接

转载 作者:行者123 更新时间:2023-11-28 06:07:36 25 4
gpt4 key购买 nike

我正在编写一个通过串口连接到 Arduino 或 Teensy 的小软件。我希望软件能够识别 USB 串口是否断开连接,并在再次插入时自动重新连接。

这在 Linux 下非常简单,但我什至不确定在 Windows 上是否可行,因为我发现所有终端程序在断开连接后不重新启动就无法重新连接到 COM 端口。

我目前正在使用 QT5 QSerialPort 实现,但如果有人知道一个 C++ 类能够在不重新启动程序的情况下正确地重新连接,我会立即更改。

此外,如果有人知道可以自动重新连接的串行终端程序,我将不胜感激。

编辑我使用的是 64 位 Win7,通常是 32 位程序。

最佳答案

重点是,当连接到串行端口的设备断开连接时,您将在 readline 中收到 null,因此如果它为 null,您将尝试重新连接。此外,您需要设置超时,否则 readline 将永远等待。Python 示例:

import serial
import threading
import time
class MainTHread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self._data = ""
self.ser = None
def run(self):
while(True):
try:
time.sleep(1)
ser = serial.Serial('COM3',9600,timeout=2)

except serial.SerialException as err:
print("Connection failed")
try:
ser.close()
except UnboundLocalError:
print("No Serial")
print(err)
continue
while True:
try:
print("Trying to read")
data_json = ser.readline()
self._data =data_json.decode('UTF-8');
if(not self._data):
break
print("Main Thread " + self._data)
except serial.SerialException as err:
print("Connection failed")
ser.close()
break
def getData(self):
return self._data
thread = MainTHread()
thread.start()

关于c++ - Windows 上的串行 (COM) 端口重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32071581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com