为什么此端口名被视为不存在

本文关键字:不存在 为什么 | 更新日期: 2023-09-27 18:34:26

我正在尝试重构/更新一些遗留的串行通信代码。我有这个:

private SerialPort cereal;
private String receivedData;
private FileXferLegacy()
{
    cereal = new SerialPort("COM1", 9600);
    cereal.PortName = "7727";
    cereal.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
    // Is this just as well, as the elided part is grayed out above?: cereal.DataReceived += port_DataReceived;
}

。但是当我尝试连接并发送ping时,我收到错误消息"端口'7727:'不存在":

public void SendDataContentsAsXML(string destinationPath, string XMLData)
{
    byte[] stuff;
    ExceptionLoggingService.Instance.WriteLog("Reached FileXferLegacy.SendDataContentsAsXML"); // <= This is written to the log file
    cereal.Open();
    stuff = System.Text.UTF8Encoding.UTF8.GetBytes("PING" + "'n");
    cereal.Write(stuff, 0, stuff.Length);
    stuff = System.Text.UTF8Encoding.UTF8.GetBytes(XMLData + "'n");
    cereal.Write(stuff, 0, stuff.Length);
}

7727 是旧版应用中成功使用的同一端口。

我确实看到附加了一个冒号,并想知道这是否是问题所在 - 为什么它看到"7727:"而不是普通的旧"7727",如果这确实是一个问题,我如何消除附加冒号的概念?

为什么此端口名被视为不存在

因为PortName指的是串行端口名称,而不是端口号。在代码中创建SerialPort对象

cereal = new SerialPort("COM1", 9600);

所以COM1已经被分配到PortName.你的下一个陈述只是不必要和不正确地覆盖它。