现在在研究vb.net 和单片机com 通讯的程序,单片机上电时,显示串口是COM3,加上电脑默认的一个COM1,共2个com,保存在ComboBox1。
打开端口
SerialPort1.PortName = ComboBox1.Text ‘选择COM3
SerialPort1.Open()
正常关闭com3
SerialPort1.Close()
然后关闭单片机电源,刷新ComboBox1,
Dim ports As String() = SerialPort.GetPortNames()
ComboBox1.Items.Clear()
Dim port As String
For Each port In ports
ComboBox1.Items.Add(port)
Next port
可以看到COM1, COM3不见了,结果正常。
打开com3口后,直接关闭单片机的电源,然后点击关闭COM3口 SerialPort1.Close()
刷新ComboBox1,始终有2个端口COM1 COM3 ,在注册表里也是显示2个,应该只有COM1才对。
关闭整个程序后,COM3端口才释放,在注册表只有COM1,
我想问,在下位机突然断电,上位机的程序怎么才可以彻底关闭COM3,就是 SerialPort.GetPortNames() 里能反映真实端口情况?
------解决思路----------------------
你这是虚拟的串口吧,usb的?用mscomm32试试
------解决思路----------------------
这个会有些滞后,有的时候重启程序就可以,有的时候要重启电脑,
我觉得你不用SerialPort.GetPortNames。直接列出10个串口名或自定义输入串口名,然后有就能打开,没有就无法打开。