gpt4 book ai didi

c# - 从微 Controller 读取

转载 作者:行者123 更新时间:2023-11-30 16:32:14 27 4
gpt4 key购买 nike

我有一个 Arduino 微 Controller 。微 Controller 工作(我有一个应用程序可以显示微 Controller “吐出”数据。问题是我已经实现了一些代码(来自 http://www.c-sharpcorner.com/uploadfile/eclipsed4utoo/serialportcommunication12082008111137am/serialportcommunication.aspx):

这里我初始化串口

_serialPort = new SerialPort("COM17", 19200, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
_serialPort.ReadTimeout = 1000;
_serialPort.WriteTimeout = 1000;
_serialPort.Open();

这里我有监听处理程序:

void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(1000);
string data = _serialPort.ReadLine();
this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
}

但我收到此错误:操作已超时。 在处理程序中的 string data = _serialPort.ReadLine();

COM 端口是 COM17,端口打开(微 Controller 上的 LED 显示)。知道为什么操作超时吗?

即加载到微 Controller 中的程序设置为在 1 秒内“拍摄”数据。

最佳答案

问题的根源可能在电线的另一端。要让 SerialPort.ReadLine() 完成并且不产生超时错误,您必须传输行结束字符序列。 SerialPort.NewLine 的值,默认为换行控制字符(“\n”)。如果您传输字节而不是字符,那么您应该改用 Read()。

您还应该实现 ErrorReceived 事件,以便检测通信错误。当通信参数不匹配时您会得到的那种,例如波特率、奇偶校验、数据位和停止位。

关于c# - 从微 Controller 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4236982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com