C+中带有侦听器的WaitCommEvent+;Winforms应用程序
我正在尝试编写winforms,从Arduino板读取数据。CLR应用程序不允许线程,所以我必须用侦听器解决这个问题。当端口上有可用数据时,如何使用WaitCommEvent触发侦听器C+中带有侦听器的WaitCommEvent+;Winforms应用程序,winforms,serial-port,c++-cli,listener,Winforms,Serial Port,C++ Cli,Listener,我正在尝试编写winforms,从Arduino板读取数据。CLR应用程序不允许线程,所以我必须用侦听器解决这个问题。当端口上有可用数据时,如何使用WaitCommEvent触发侦听器 我的代码与本例中的示例2类似使用COM端口接收的数据。com端口中的用户ReadLine方法,例如: private: System::Void comPort1_DataReceived(System::Object ^sender, System::IO::Ports::SerialDataRecei
我的代码与本例中的示例2类似使用COM端口接收的数据。com端口中的用户ReadLine方法,例如:
private:
System::Void comPort1_DataReceived(System::Object ^sender, System::IO::Ports::SerialDataReceivedEventArgs ^e)
{
System^ data = comPort1->ReadLine();
this->Invoke(gcnew EventHandler(processData));
}
System::Void processData(System::Object ^sender, System::EventArgs ^e)
{
// data receive
}
使用.Net,请阅读本教程:。那么,你说过放弃使用WaitCommEvent,是吗?不必,我提出了一个完全基于.Net的解决方案。但您可以使用C++/CLI包装器与Windows窗体应用程序交互Win32 API。它不允许std::thread,使用System::Threading::thread或CreateTread()完全没有问题。不要自己调用WaitCommEvent,让SerialPort类为您完成。这就是它引发DataReceived事件的方式。