轮循法-C++MSComm控件的定时接收数据怎么实现

问题描述

C++MSComm控件的定时接收数据怎么实现
查了好多资料都是VB的,我想定时的从输入缓冲区中读数,C++如何实现啊,新手求教!

解决方案

我用settimer这个来实现定时,可能是由于ONCOMM事件在缓冲区有数时候就会触发,两者发生冲突阻塞了,有人说还可以多线程实现定时,但是我是新手,有没有哪位前辈遇到这种问题,传授一二?

时间: 2024-10-06 05:03:41

轮循法-C++MSComm控件的定时接收数据怎么实现的相关文章

Delphi中利用MSCOMM控件进行GPS数据采集

1.准备 GPS(Global Positioning System),即全球定位系统,利用24颗GPS卫星的测距和测时功能进行全球定位,在许多系统中,如机场导航系统,出租车辆管理和调度系统.江河流域的灾害信息管理和预测系统中,GPS得到了广泛的应用.本文利用MSCOMM控件实现了GPS数据的采集,可为信息管理和指挥调度等提供定位数据. 本文采用GPS的异步串行传送方式,将GARMIN 12C按NMEA-0183协议输出的数据采集到了微机,并将接收到的地理坐标转换成为直角坐标. 在DELPHI

MSComm控件使用详解

摘要:本文详细介绍了MSComm控件在串口编程中使用. 目次 MSComm控件两种处理通讯的方式 CommPort属性 RThreshold 属性 CTSHolding属性 SThreshold 属性 CDHolding属性 DSRHolding属性 Settings 属性 InputLen 属性 EOFEnable 属性 Handshake 常数 OnComm 常数 InputMode 常数 错误消息 MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能.MSComm控件在串

MSComm控件的Modem通讯

MSComm 控件通过串行端口(serial port)传送和接收数据,为应用程序提供了串行通讯功能.而且在可视化编程盛行的今天,可以很方便的在Visual Basic(VB).Visual C++(VC).Delphi等语言及开发平台中应用. MSComm 是 Microsoft 公司为简化Windows下串行端口编程而提供的ActiveX控件,它提供了一系列标准通讯命令的使用接口,为应用程序提供了通过串行口收发数据的简洁方法.处理数据的方式有事件驱动(Event-driver).查询法(In

pb 串行通讯-急求,大家好,我是PB软件的新手,在使用MSCOMM控件编写的时候遇到问题

问题描述 急求,大家好,我是PB软件的新手,在使用MSCOMM控件编写的时候遇到问题 在使用MSCOMM控件编写oncomm程序的时候,显示错误:coo31:syntax error string Is_input,Out_input choose case Ole_MSC.object.commevent case 2 //CommEvent属性为CommEvReceive Ole_MSC.object.InputLen=10000 //读入缓冲区中的数据长度 Is_input=Ole_MSC

金手指Delphi中MsComm控件的安装使用

Delphi 具有功能强大.简便易用和代码执行速度快等特点,是全球公认的快速应用开发工具技术的先驱者.但是在对串口通信的控制上Delphi的帮助文档和其他书籍中很少提及,这恰恰又是在开发应用系统时会经常遇到的问题.用过VB的程序员都知道 VB的MSComm通信控件具有丰富的与串口通信密切相关的属性及事件,提供了一系列标准通信命令的接口,可以用它创建全双工的.事件驱动的.高效实用的通信程序.在这里就介绍一下如何把MSComm这个ActiveX控件加入到Delphi中,充分发挥出二者的优越性. 首先

MSComm控件在基于单文档中的应用

本文配套源码下载 MSComm 作为一个串行通讯控件为程序员串口通讯编程节省了很多时间.在基于对话框的应用中加入一个MSComm控件非常简单.只需进行以下操作即可: 打开"Project->Add To Project->Components and Controls->Registered Activex Controls",然后选择控件:Microsoft Communication Control,version 6.0插入到当前的工程中.这样就将类 CMSCo

线程与mscomm控件问题

问题描述 线程与mscomm控件问题 我是在做下位机向上位机传递数据,使用的mfc基于对话框的mscomm控件.需要动态实时显示曲线.我采用teechart控件来画曲线.mscomm控件有个Onmscomm()函数用来接收串口通信数据并存储起来.现在开辟了一个线程,在线程函数里实现对Onmscomm()接收到的数据的处理(此处为while(true)循环),再将处理的数据用来画图.但是现在调试时程序进入开辟的线程函数里,始终跳不出,无法进入Onmscomm()函数里(下位机有传数据),运行时会显

按钮-使用mscomm控件发送十六进制数据的写法

问题描述 使用mscomm控件发送十六进制数据的写法 我需要单击一个按钮时发送一个十六进制字符串例如"01 03 00" 解决方案 先将16进制转换成byte[]不知道什么语言,如果是C#可以写string[] hexstr = s.Split(' ');byte[] data = new byte[hexstr.Count()];for (int i = 0; i < hexstr.Count(); i++){ data[i] = Convert.ToByte(hexstr[i

c#-C#中的serialport.Write与MSCOMM控件的put_output有什么区别?

问题描述 C#中的serialport.Write与MSCOMM控件的put_output有什么区别? 我使用C#上位机中的serialport.write发送数据 下位机收到的与上位机发送的数据不一样, 使用MSCOMM控件发送则没有问题, 求问有什么区别 (T^T) 解决方案 用串口调试助手调试下, 注意Write输出的字节编码,是否有多余的换行符,停止位.校验位.波特率.校验方式. 解决方案二: 可能发送的数据量有点大,read没读完,write和read的长度不一致吧.调试一下看看.如果