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拥有控制权。
进程中的所有线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源。
一方面,它给编程带来了便利,但另一方面,它也容易引起冲突。
尽管过程中耗时的工作不会导致系统挂起,但会导致过程挂起。
所以,如果公关