无法从串口获取所有字符
Unable to get all characters from 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();
}
首先检查您的设备是否正在发送任何数据。
为此,您可以使用 RS232 终端。
Termite是一款免费终端软件。
如果您的硬件发送数据正确,
添加DataReceive事件,
port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
然后使用ReadExisting()方法获取接收到的数据。
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
Console.WriteLine(port.ReadExisting());
}
我正在做一个用于 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();
}
首先检查您的设备是否正在发送任何数据。 为此,您可以使用 RS232 终端。
Termite是一款免费终端软件。
如果您的硬件发送数据正确,
添加DataReceive事件,
port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
然后使用ReadExisting()方法获取接收到的数据。
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
Console.WriteLine(port.ReadExisting());
}