关于c#:无法从串口获取所有字符

Unable to get all characters from serial port

我正在为 10 位 ID 输入做一个键盘项目。每按一次按键,就会向串口发送\\'1\\'或\\'2\\'或\\'3\\'等信息。但是,在尝试使用 Console.WriteLine(id[i]) 显示我的 id 缓冲区的内容后,它只显示来自串行端口的第一个键盘值。我需要显示缓冲区中的所有 10 位输入。我找不到代码中的错误在哪里。我正在使用 System.IO.Ports

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
static void Main(string[] args)
{
    char[] id = new char[10] ;

    SerialPort port = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);

    port.Open();

    if (port.IsOpen)
    {
        Console.WriteLine("port is now open");      
    }
    else
    {
        Console.WriteLine("port not opened correctly");
    }

    port.Read(id, 0, 10);

    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(id[i]);
    }
    Console.ReadLine();
}


首先检查您的设备是否正在发送任何数据。
您可以为此使用 RS232 终端。

Termite 是一款免费的终端软件。

如果您的硬件发送数据正确,

添加数据接收事件,

1
port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

然后使用 ReadExisting() 方法捕获接收到的数据。

1
2
3
4
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
   Console.WriteLine(port.ReadExisting());
}