为什么这个PortName被认为不存在?

时间:2014-12-16 00:12:37

标签: c# serial-port compact-framework windows-ce port-number

我试图重构/更新一些传统的串行通信代码。我有这个:

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;
}

...但是我得到了错误的消息" 端口' 7727:'不存在"当我尝试连接并发送ping时:

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与旧版应用程序中成功使用的端口相同。

我确实看到附加了一个冒号,并想知道这是不是问题 - 为什么它会看到&#34; 7727:&#34;而不是普通的老式&#34; 7727&#34;,如果这确实是一个问题,我如何解除其附加冒号的概念呢?

1 个答案:

答案 0 :(得分:1)

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

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

因此COM1已被分配给PortName。你的下一个陈述只是不必要地和错误地覆盖它。