我只是在回顾我在CF2.0上用C#编写的与串行端口通信的一些代码。我没有使用DataReceived事件,因为它不可靠。MSDNstatesthat:TheDataReceivedeventisnotgauranteedtoberaisedforeverybytereceived.UsetheBytesToReadpropertytodeterminehowmuchdataislefttobereadinthebuffer.我用read()轮询端口,并有一个委托(delegate)在读取数据时处理数据。我还在某处读到“轮询不好”(没有给出解释)。知道轮询为什么不好吗?除了通常的线程警告
我正在使用正在开发的WinformGUI上与串行端口上的微控制器进行通信。我正在根据预定义的协议发送一组命令,并从微控制器接收反馈字符串。我想知道在发送命令后是否有一种简单的方法来等待某个反馈。例如。发送命令等待一定的时间(可能需要几秒钟到几分钟)如果及时显示反馈,然后继续发布下一个命令/操作如果未及时收到反馈,将触发超时并显示故障消息。如果数据及时返回,则应立即停止等待方法,然后继续进行下一个行动方案。我也不想在等待反馈时阻止UI。我正在使用以下代码接收数据。delegatevoidSetTextCallback(stringtext);privatevoidserialPort1_Data
我正在尝试创建一个小型应用程序来收集从连接到COM10的外部传感器接收到的数据。我已经成功创建了一个小型C#控制台对象和应用程序,它打开端口并使用for循环将数据流式传输到文件一段固定的时间。我想将此应用程序转换为使用dataReceived事件来进行流式传输。看完Top5SerialPortTips,我似乎仍然无法让它发挥作用,也不知道我错过了什么。我重写了控制台应用程序,以便所有代码都在Main中并粘贴在下面。谁能帮我解释为什么即使我知道硬件正在向端口发送数据,事件处理程序port_OnReceiveDatazz也没有被调用?谢谢感谢@Gabe,@JasonDown,和@abati
我正在尝试创建一个小型应用程序来收集从连接到COM10的外部传感器接收到的数据。我已经成功创建了一个小型C#控制台对象和应用程序,它打开端口并使用for循环将数据流式传输到文件一段固定的时间。我想将此应用程序转换为使用dataReceived事件来进行流式传输。看完Top5SerialPortTips,我似乎仍然无法让它发挥作用,也不知道我错过了什么。我重写了控制台应用程序,以便所有代码都在Main中并粘贴在下面。谁能帮我解释为什么即使我知道硬件正在向端口发送数据,事件处理程序port_OnReceiveDatazz也没有被调用?谢谢感谢@Gabe,@JasonDown,和@abati
我正在编写一个应用程序,它使用单声道中的SerialPort类公开的串行端口。到目前为止,我所写的内容在Windows中运行完美,但是在Linux中,从未输入DataReceived事件处理程序,因此我无法从我的设备接收任何数据。我已经声明事件处理程序如下:comPort.DataReceived+=newSerialDataReceivedEventHandler(comPort_DataReceived);基本上,我正在探索良好的跨平台选项,但这是一个交易破坏者。关于如何解决这个问题或发生了什么的任何建议?编辑-我还应该指出,我已经用其他应用程序在Linux上测试了串口和设备,一切
我正在编写一个应用程序,它使用单声道中的SerialPort类公开的串行端口。到目前为止,我所写的内容在Windows中运行完美,但是在Linux中,从未输入DataReceived事件处理程序,因此我无法从我的设备接收任何数据。我已经声明事件处理程序如下:comPort.DataReceived+=newSerialDataReceivedEventHandler(comPort_DataReceived);基本上,我正在探索良好的跨平台选项,但这是一个交易破坏者。关于如何解决这个问题或发生了什么的任何建议?编辑-我还应该指出,我已经用其他应用程序在Linux上测试了串口和设备,一切