无法从串口获取所有字符

时间:2015-09-08 04:44:37

标签: c# serial-port

我正在为10位ID输入做一个键盘项目。对于每个按键,它将发送' 1'或者' 2'或者' 3'等等到串口。但是,在尝试使用Console.WriteLine(id[i])显示我的id缓冲区的内容后,它仅显示串行端口的第一个键盘值。我需要显示缓冲区中的所有10位数输入。我无法找到代码中的错误。我正在使用System.IO.Ports

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

1 个答案:

答案 0 :(得分:1)

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

Termite是免费的终端软件。

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

添加DataReceive事件,

port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); 

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

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