3

这个问题的灵感来自这里找到的问题和答案: Passing a Command to a Comm Port Using C#'s SerialPort Class

这个问题本身回答了我遇到的一些问题,但也为我提出了其他一些问题。演示中的答案如下:

var serialPort = new SerialPort("COM1", 9600);
serialPort.Write("UUT_SEND \"REMS\\n\" \n");

用于基本的串行端口使用。还要注意这一点:要获得任何响应,您必须挂钩 DataReceived 事件。

我的问题如下。我必须使用DataReceived event还是可以使用serialPort.ReadLine?的具体功能是serialPort.ReadLine什么?我还需要在我的应用程序中使用serialPort.Open()和吗?serialPort.Close()

4

1 回答 1

3

您可以在MSDN 文档中找到有关属性和用法的详细说明,这里有一个小示例:

void OpenConnection()
{
    //Create new serialport
    _serialPort = new SerialPort("COM8");

    //Make sure we are notified if data is send back to use
    _serialPort.DataReceived += _serialPort_DataReceived;

    //Open the port
    _serialPort.Open();

    //Write to the port
    _serialPort.Write("UUT_SEND \"REMS\\n\" \n");
}

void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    //Read all existing bytes
    var received = _serialPort.ReadExisting();
}

void CloseConnectionOrExitAppliction()
{
    //Close the port when we are done
    _serialPort.Close();
}
于 2013-07-09T15:41:24.747 回答