C# 端口终止时侦听串行端口
所以我有一个C#WinForm可以使用C# 端口终止时侦听串行端口,c#,winforms,serial-port,port,virtual-serial-port,C#,Winforms,Serial Port,Port,Virtual Serial Port,所以我有一个C#WinForm可以使用 SerialPort SerialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); SerialPort1.Open() SerialPort1.DataReceived += new SerialDataReceivedEventHandler(...) 收听由其他软件创建的多个虚拟COM端口(我无法控制) 因此,通常情况下,它运行良好,除非其他软件已死亡或消失,否则
SerialPort SerialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
SerialPort1.Open()
SerialPort1.DataReceived += new SerialDataReceivedEventHandler(...)
收听由其他软件创建的多个虚拟COM端口(我无法控制)
因此,通常情况下,它运行良好,除非其他软件已死亡或消失,否则它创建的虚拟COM端口也将消失或丢失
所以我的WinForm应用程序失败了,因为没有可监听的COM1
问题:当没有可侦听的COM端口时,应如何处理此错误
非常感谢您的回复如果发生了不好的事情,请将其放入try-catch语句中,并向用户打印一条消息
try
{
SerialPort SerialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
SerialPort1.Open()
SerialPort1.DataReceived += new SerialDataReceivedEventHandler(...)
}
catch(Exception e)
{
//Print error to user
}
有关异常的更精细的粒度,请参阅串行端口的msdn文档。哦,不,虚拟串行端口是由软件模拟的。如果该软件出现故障,那么当然就没有功能性串行端口了。除了找到更好的软件,你什么也做不了
如果这是常见的故障模式,在程序与USB设备通话时拔出USB设备的连接器,那么就不用麻烦了。无论是谁,都需要了解使用Windows“安全删除硬件”托盘图标选项是可选的。要让他们意识到“不安全地移除硬件”的作用,往往需要一些强化。尽管奇怪的是,这样做的往往是程序员,而很少是普通用户。可能是网站偏见,普通用户只是倾向于自己认为这样做不是一个好主意。事实并非如此,这些司机指望人类的合作。由于串行端口不是即插即用设备,所以驱动程序无法发送“设备已丢失,停止使用”通知。好的,除了故意使程序硬崩溃之外。如果唯一的问题是端口数量不可预测,您可以检测所有可用端口,如下所示,然后一次尝试一个。当usb设备有时显示为COM1,有时显示为COM5时,我曾经遇到过这个问题
string[] availablePorts = SerialPort.GetPortNames();
foreach (string strPortName in availablePorts)
{
try
{
SerialPort SerialPort1 = new SerialPort(strPortName, 9600, Parity.None, 8, StopBits.One);
SerialPort1.Open();
}
catch (Exception e)
{
//Print error to user
}
}
谢谢你的回复。有办法解决这个问题吗?我无法控制串行端口丢失或丢失,但在软件方面我能做些什么???@user3479682我能向您推荐一款对我来说运行良好的软件吗?它叫。顺便说一句,在打开端口和向端口发送数据时,应该尝试使用try/catch块。