一个多串口多线程数据采集系统软件的设计与实现

一个多串口多线程数据采集系统软件的设计与实现DesignandImplementationofaMultithreadingDataCollectionSoftwarebasedonMulti-serialport(襄樊学院电气信息工程系李勇Li,Yong摘要:本文着重探讨用多线程并行的方式通过多个串口进行并行通信。使用多线程进行串行通信的文献已有一些,但都没涉及到多个串口并行的情况。本文介绍的多串口多线程通信方法,使多个串口并行通信,从而实现大规模的数据采集与高速数据传输操作。关键词:多线程;串行通信;同步:TP311文献标识码:AAbstract:Themethodofmultiserialportparallelcommunicationusingmultithreadingisintroducedinthispaper.Someliteratureshaveshowsthemethodofserialcommunicationwithmulti-threadtechnology,butmultiserialportparallelcommunicationislittlereferredto.Withthemethodintroducedinthispaper,parallelcommunicationwithinmultiserialportcanbeimplemented.Keywords:Multithreading;SerialCommunication;Synchronization1引言在一些典型的实时系统和规模较大的数据采集系统中多任务的要求比较普遍。这时系统中需要有线程专门负责数据采集,以实现实时多任务并行的需要。线程是Windows9X/2000的基本执行单位,是Window为程序分配CPU时间的基本实体。每个进程由一个或多个线程组成,同一进程中的多个线程,可以共享地址空间和所有的处理器资源,避免了用多进程实现并行性的缺陷。在已有的文献中介绍多线程和串口操作的很多,但针对多串口操作的很少。本文针对一个采用多串口的大型自动抄表系统,讨论如何在VC++6.0开发环境下,用多个线程并行地通过多个串口进行高速数据抄录和测控的方法。2系统总体结构系统由上位机(即中心计算机和下位机构成,如图1所示。上位机为PC机,内部加一个MOXA的多串口卡,可扩展出32个串口。下位机为单片机构成的监测和数据采集系统。二者通过调制解调器和电话网进行通信连接。下位机的主要功能是定时采集传感器上的信息并临时保存,以及根据上位机发出的控制命令执行控制操作和上报数据。一个下位机可以对多个数据点进行监测和控制。上位机的主要功能包括(1利用多串口多线程的通信软件,收集各个下位机的数据。(2根据收集到的数据和工作人员的判断,通过通信软件向下位机发出各种控制命令。(3根据系统的不同要求,通过通信软件调整下位机的各种参数。上位机和下位机这样配合,一起构成一个能实现遥控、遥测、遥调功能的远程控制测量系统。该系统硬件连接简单,稳定可靠。通信软件采用VC++实现,将收集到的各种数据信息保存到数据库中,为后续的数据处理提供了极大的方便。数据库系统采用MSSQLServer,VC++通过ODBC接口对其进行访问。3通信程序设计WIN32应用程序中的线程有两种类型。一种是工作线程,它不处理窗口消息,常用于后台执行任务。另一种是用户接口线程,主要用来处理用户输入和响应由用户产生的消息与事件。本系统编写的工作线程用于后台的数据采集和通信。微软基本类库(MicrosoftFoundationClass-MFC为多线程提供了三个全局函数AfxBeginThread(,AfxEndThread(和AfxGetThread(对线程进行操作,分别用来创建工作线程,结束工作线程,获得当前线程的指针。3.1上位机通信软件的实现上位机的串口通信过程采用PJNaughter提供的串口通信类实现,并在其基础上针对modem通信扩展了拨号、挂断等功能。通信协议参照标准远动规约,报文内容以字节为单位,结构如图2所示。其中报文类型用来说明报文的类型和功能,数据长度用来说明数据区的字节数,8位校验码为累加和校验。图1系统总体结构图(1用户界面对话框与命令响应:进行通信和数据抄录的用户界面如图3所示。界面左边显示的是下位机的树状列表。右边的列表框显示的是所以可用的串口,在通信过程中,该列表框用来显“”示当前的通信状态。点击界面中的开始读取按钮后,首先处理界面上用户选择的需要通信和控制的下位机,并用如下指令启动通信主线程:AfxBeginThread(ThreadMainCommunication,GetSafeHwnd(;(2通信主线程(ThreadMainCommunication:通信主线程的主要功能是对各个通信子线程进行调度和管理。在通信主线程中首先根据可用的串口数定义一个信号量变量。如下所示,其中变...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?