-2

いくつかのレガシー シリアル通信コードをリファクタリング/更新しようとしています。私はこれを持っています:

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 を送信しようとすると、 「 The port '7727:' does not exist 」というエラー メッセージが表示されます。

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:」が表示されるのはなぜですか。は本当に問題ですか?

4

1 に答える 1

1

PortNameポート番号ではなく、シリアルポート名を参照するためです。あなたのコードでは、SerialPortオブジェクトを作成しています

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

SoCOM1はすでに に割り当てられていPortNameます。次のステートメントは、不必要かつ誤ってオーバーライドしているだけです。

于 2014-12-16T03:53:20.810 に答える