1简介串行通信是计算机和其他设备交换数据时经常使用的方法之一。具有实现简单,使用灵活方便,数据传输可靠的优点。因此,它广泛用于工业监控,数据采集和实时监控系统。应用。高速串行数据采集软件的设计不同于普通的串行通信。它需要实时存储接收到的数据,同时从数据采集设备接收大量数据。如果两者之间的关系处理不当,将导致数据丢失甚至程序崩溃。这要求应用程序能够同时处理两个或多个不同的任务。 Win32是基于线程的抢占式多任务操作系统,使应用程序可以同时执行多个任务,即在一个进程中可以同时运行多个线程。线程是指程序的执行路径,并且系统不断在多个线程之间切换。由于时间短,似乎多个线程正在同时运行。对于通信而言,需要花费大量时间来测试I / O操作,同时维持对应用程序其他用户操作的响应,创建多线程是最佳选择。 2系统结构系统的组成结构如图1所示。中央控制PC为系统核心要求数据采集软件具有良好的稳定性和兼容性。因此,独立设计了一套基于Visual C ++ 6.0的多线程通信软件。这是与前端扫描仪串行端口的典型主从通信。 MOXA公司的串口卡实现了500K波特率的采集。 3使用MSComm控制实现高速串行数据收集的问题。 MSComm控制在串行编程中非常方便。程序员无需花费时间来了解更复杂的API功能,只需要在串行通信资源(ProperTIes)的属性中配置串行端口即可。波特率,数据位,停止位,奇偶校验,发送缓冲区大小,接收缓冲区大小和串行通信的超时设置都在这里。串口配置完成后,可以打开串口进行数据读写。对于常规数据交换和串行通信,MSComm控件可以完全满足要求。但是,由于控件自身的接收缓冲区大小设置的限制,因此是高速的。数据采集软件的设计带来了麻烦。如果接收缓冲区不能满足设计要求,则当缓冲区中的数据达到消息响应值并响应存储命令时,新收集到的数据的传输速度将大于接收到的数据的存储速度,这将导致接收缓冲区溢出并直接导致系统崩溃。在程序设计的早期阶段就对此深有理解。在程序设计中,当缓冲区达到响应消息的阈值时,它还会尝试在消息响应中启动新线程。 ,首先将缓冲区中接收到的数据取出到新打开的存储单元中,然后再存储该数据。该程序可以运行,但是出现了一个新问题,即某些数据帧中的数据丢失了。分析产生此结果。数据丢失的原因仍然是由于控制所致。接收缓冲区的大小受到限制。 4程序设计创新4.1多线程编程思想在32位Windows系统中,术语多任务意味着系统可以同时运行多个进程,并且每个进程也可以同时执行。多线程。该进程是应用程序的运行实例。每个进程都有自己的专用虚拟地址空间,每个进程都有一个主线程,但是可以创建其他线程。进程中的线程是并行执行的,每个线程占用系统CPU的时间除以系统。可以被视为分配CPU时间的操作系统的基本实体。系统会在线程之间不断切换,并且对线程的中断是汇编语言级别。系统为每个线程分配了一个CPU时间段,并且一个线程仅在分配的时间段内对CPU拥有控制权。进程中的所有线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源。一方面,它给编程带来了便利,但另一方面,它也容易引起冲突。尽管过程中耗时的工作不会导致系统挂起,但会导致过程挂起。所以,如果公关