我有一个Arduino微控制器。该微控制器的作品(我有一个应用程序,显示我的微控制器“吐”出的数据的事情是,我已经实现了一些代码(从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 });
}
,但我得到这个错误:在处理程序The operation has timed out.
在string data = _serialPort.ReadLine();
COM端口为COM17,端口打开(微控制器上的LED指示灯显示)。任何想法为什么手术超时?
即加载到微控制器中的程序被设置为在1秒内“拍摄”数据。
thread.sleep背后有原因吗?只有当数据准备好被接收后,函数才会被调用吗? – 2010-11-21 08:17:08
如果我评论thread.sleep,程序停止更快。 (即快1秒) – Alex 2010-11-21 08:23:56
你是否尝试将这些COM设置放入超级终端(或者任何你有的COM端口控制台)?你是否尝试了更长的超时时间,比如30秒开始? – 2010-11-21 08:34:22