Visual c++ 使用定时器提高读/写串行端口的速度

Visual c++ 使用定时器提高读/写串行端口的速度,visual-c++,mfc,timer,serial-port,Visual C++,Mfc,Timer,Serial Port,我有我的代码,可以读取和写入用MFC编写的串行端口。程序运行良好,但有点慢,因为有许多操作正在进行(读和写)。我有一个定时器,可以在串口上进行操作。计时器如下所示: Loop_Timer = SetTimer(1,50,0); 串行端口传输信息如下所示: BaudRate = 57600; ByteSize = 8; Parity = NOPARITY; StopBits = ONESTOPBIT; fAbortOnError = false; 计时器启动时,会发生以下写入和读取操作: Wr

我有我的代码,可以读取和写入用MFC编写的串行端口。程序运行良好,但有点慢,因为有许多操作正在进行(读和写)。我有一个定时器,可以在串口上进行操作。计时器如下所示:

Loop_Timer = SetTimer(1,50,0);
串行端口传输信息如下所示:

BaudRate = 57600;
ByteSize = 8;
Parity = NOPARITY;
StopBits = ONESTOPBIT;
fAbortOnError = false;
计时器启动时,会发生以下写入和读取操作:

Write(command);
Read(returned_message);
returned_message.Trim();
...   
//finds a value from the returned string
...
因此,对于给定的选定选项,此读写操作可能发生1、2、3或4次

例如:选项1要求上述功能在给定计时器中发生4次。 选项2要求上述功能出现2次。(因为它只有两个返回值的变量)。等


现在,我想做的是提高整个操作的速度,使其健壮并快速响应。我试着换了一下计时器,但还是很慢。有改进建议吗?

最好在单独的线程中运行实际的串行端口处理,并使用WaitCommEvent而不是计时器来接受传入数据。将本地存储缓冲区中新接收的数据附加到该线程

如果您愿意,可以使用计时器从串行端口thtread检索数据,或者让串行端口线程与主应用程序通信。当收到完整的消息时

当向串行端口线程发送数据时,您需要一种机制,通过这种机制,数据将本地存储到串行端口代码中,并从那里传输

需要记住的是,与所有其他通信方式相比,串行端口传输和接收速度较慢,通过访问主应用程序线程上的串行端口,您将大大降低其速度,尤其是在传输数据时


如果您觉得使用Win32 API和串行端口直接编码很痛苦,那么我发现它非常有用。

谢谢您提供的信息。我会调查的。