利用MSComm控件实现与GPS接收器的串口通讯
利用mscomm控件实现串口通讯

利用mscomm控件实现串口通讯陈少利【期刊名称】《电脑技术信息》【年(卷),期】2000(000)011【摘要】@@一、引言rn 实时交易联网往往采用socket编程方式,介绍这方面的文章也很多。
而在实际编程工作中,利用前置机的串口完成通讯工作仍是我们一个不错的选择。
微软提供的mscomm控件可以很好的完成这一工作,我们只需熟悉它的几个重要属性,在自已的程序里加以运用,便可以可靠的实现串口通讯。
以下谈一谈笔者在visual foxpro6.0对其的使用情况,仅供大家参考。
rn 二、Mscomm控件的几个重要属性及控件rn 1.Commport属性:1-n,串口号rn 2.Settings属性:"BBBB,P,D,S"格式的串口设置选项,即波特率,奇偶性,数据位,停止位,如"9600,n,8,1"。
rn 3.Portopen属性:改属性的值为.T.或.F.,当置为"真"时打开串口,反之关闭串口。
【总页数】2页(P50-51)【作者】陈少利【作者单位】中国建设银行山东省烟台市分行科技部山东烟台 264000【正文语种】中文【中图分类】TP311.1【相关文献】1.利用MSComm控件实现PC机与单片机串口通讯的研究 [J], 闫通海;周到2.利用控件MSComm实现计算机的串口通信 [J], 田添3.利用MSComm控件实现串口通讯的方法 [J], 王永4.利用MSComm控件实现与GPS接收器的串口通讯 [J], 王建川;马立元;马剑5.Delphi下用MSComm控件实现的PC与多单片机的串口通讯 [J], 张亚伟因版权原因,仅展示原文概要,查看原文内容请购买。
基于串口通信的GPS数据提取与应用

基于串口通信的GPS数据提取与应用作者:刘思思王路情来源:《电脑知识与技术》2013年第33期摘要:该文首先介绍了常用的GPS数据格式,利用了VC++6.0的MSComm控件实现串口通信方式下的GPS数据中重要信息的提取。
最后,探讨了GPS数据重要信息的具体应用。
关键词:GPS数据;串口通信;VC++ 6.0;MSComm控件中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)33-7416-02GPS(Global Positioning System)全球定位系统,它是在地球上空布置了24颗专用GPS 卫星,卫星轨道每时每刻的精确位置通过无线电波发送到地面上,地面上的GPS信号接收机可以接收到至少4颗以上的卫星信号,依据卫星的位置计算出地面的位置。
它能够为用户提供全球性的、全天候的、高精度的、连续实时的三维坐标、三向速度等信息。
这些信息包含在GPS数据格式里,可以通过遵循NMEA0183协议的GPS接口供给外部设备提取与应用。
1 GPS常用数据格式GPS常用数据格式包括"$GPGGA"、"$GPGLL"、"$GPGSA"、"$GPGSV"、"$GPRMC"和"$GPVTG"。
它们主要由帧头、帧尾和帧内数据组成,数据帧结构不同,帧头也不相同,各帧均以回车符和换行符作为帧尾标识。
通常情况,我们所关心的定位数据如经纬度、速度、时间等均可以从"$GPRMC"帧中获取得到。
如果和卫星通信正常,可以接收到的数据格式"$GPRMC"帧结构如下:$GPRMC,,,,,,,,,,,,*hh,其具体信息如表1所示。
2 GPS数据提取方法GPS数据提取方法分为两个步骤:第一步,GPS数据的捕获;第二步,GPS数据的解析。
前者采用串口通信的方式把GPS接口与主机相连接,利用VC++的MSComm控件实现对串口编程,捕获GPS接收机所发送的数据;后者根据捕获的GPS数据帧格式中的帧头确定要给哪个数据帧进行数据的解析,然后根据数据帧结构中的内容提取所需要的信息。
使用VB中的MSComm控件实现串口通信

使用VB中的MSm控件实现RS-232串口通信实验准备:需要准备一些与串口通信有关的设备,如〔外置式〕调制解调器、计算机串口与调制解调器的连接线、一根DTE到DTE的无调制解调器连接线〔接法见本章有关习题的参考答案〕,在实验前检查计算机的两个串口是否能够正常工作。
实验环境:Windows 95/98操作系统,Microsoft VB 5.0以上程序设计环境。
对例题中涉及调制解调器的容,采用计算机与调制解调器连接的方式;对在例题中设计数据传输的容,须事先将DTE到DTE 的无调制解调器连接线的两端,分别插入1和2串口。
实验说明:VB中的MSm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSm控件提供以下两种处理通讯的方式:〔1〕事件驱动(实时)方式,这是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在Carrier Detect〔CD〕或RequestToSend〔RTS〕线上一个字符到达或一个变化发生时。
在这些清况下,可以利用MSm 控件的Onm事件捕获并处理这些通讯事件。
Onm事件还可以检查和处理通讯错误。
〔2〕轮询方式,在程序的每个关键功能之后,可以通过检查mEvent 属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的"OK〞响应。
每个使用的MSm控件都对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSm控件。
可以在Windows"控制面板〞中改变端口地址和中断地址。
下面这个简单的例子采用了轮询方法演示了用调制解调器进展根本的串行通讯:Private Sub Form_Load〔〕Dim Instring As String '保存输入子串的缓冲区MSm1.mPort=3 '使用3。
VB6.0环境下利用Mscomm控件实现串行通信

VB6.0环境下利用Mscomm控件实现串行通信Use Mscomm Control Component to Implement Serial Communication under Visual Basic摘要: 本文简要介绍了VB6.0中Mscomm通信控件的属性和使用方法,并结合具体实例给出了基本的通信程序。
主题词:串行通信Visual Basic Mscomm .vbx控件Abstract: This paper briefly introduces the principle and method of Mscomm object of Visual basic 6.0, and with a real example basic program codes are given.Key Words:Serial Communication; Visual Basic; Mscomm .vbx control component随着计算机技术的飞速发展及其广泛应用,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。
微机的分析处理能力较强,有很好的人机界面和大容量的多种存储方式,所以上位机一般采用微机。
而单片机具有价格低,功能强,抗干扰能力好,温限宽和面向控制等特点,所以下位机采用单片机来构成主从式多机工作模式。
在需要对采集的数据进行分析处理或在远程需要对控制对象的控制过程进行统计或有条件控制时,采用数据库访问技术能有效地解决这类问题。
Visual Basic 6.0以其强大的功能、使用简单、能在短时间内开发出高效的通信程序而成为Windows系统开发的主要编程语言。
首先表现在VB可直接使用户自定义控件VBX或OCX文件;其次表现在VB可通过调用动态链接库(DLL,dynamic link library)来加快应用程序关键部分的执行速度。
MFC下的MSCOMM控件用于串口通信的几个例子

MFC下的MSCOMM控件用于串口通信的几个例子MFC下的MSCOMM控件用于串口通信的几个例子VC基于MSCOMM控件串口通讯(转)/hanhaitianyu/blog/item/0c4cc0ef5d344 ef7b3fb9526.html在mfc中进行串口通讯最简单的方法莫过于在对话框中使用MSCOMM控件了,MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序。
一、用MSComm控件通信1.串口通信基础知识一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与pC进行数据传输和通信的通道。
这些串口在CPU和外设之间充当解释器的角色。
当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。
2.使用Mscomm控件在开始使用MSComm控件之前。
需要先了解其属性、事件或错误属性描述CommPort 设置或返回通信端口号Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位PortOpen 设置或返回通信端口的状态。
也可以打开和关闭端口Input 返回和删除接收缓冲区中的字符Output 将字符串写入发送缓冲区CommEvent属性为通信事件或错误返回下列值之一。
用C#使用MSComm控件进行串口编程

用C#使用MSComm控件进行串口编程对于从事工控和单片机工作的人来说串口编程是很常用的和很重要的。
事实上在和C#中对串口的操作和VS6里没有大的区别。
你仍然可以直接调用API或者使用MSComm或其他第三方控件。
这里只介绍大家常用的MSComm。
例子使用2、3脚跳过线的串口将COM1和COM2连接。
首先,你必须有MSComm.ocx文件在你的Windows的System32目录下,而且它必须正确的注册。
你可以装VS6来获得,微软也指出这样不会有冲突。
当然我们可以自己注册而不用装庞大的VS6。
先将MSComm.ocx复制到System32目录下,然后使用edit 工具编辑一个以.reg扩展名的文件,在文件里输入以下的文字REGEDITHKEY_CLASSES_ROOTLicenses = Licensing: Copying the keys may be a violation of established copyrights.// The MsComm32 Control License follows:HKEY_CLASSES_ROOTLicenses4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun 然后,存盘。
双击文件就完成了注册。
现在,我们介绍一下MSComm在和C#中和VS6里的不同和实际的应用。
在或C#中建立一个窗口Form1。
加入两个MSComm控件,你会发现这里MSComm的默认名字是axMSComm,有点奇怪吧。
同时因为命名空间的问题你不能给axMSComm1.InputMode赋0或1这样的值。
你只能这样来做如axMSComm1.InputMode=MSCommLib.InputModeConstants.co mInputModeBinary或者axMSComm1.InputMode=MSCommLib.InputModeConstants.co mInputModeText。
VC++下用MSComm控件实现串口通讯
// 接受数据
for(k=0; k<len; k++)
{
safearray_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
recd+=strtemp;
}
// UpdateData(TRUE);
break;
default: // 传输事件出错
m_MSComm.SetOutBufferCount(0);
break;
}
UpdateData(FALSE); //更新图象内容
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
////////////////////////////////////////////////
return TRUE;
MSComm控件进行串口编程的基本步骤
MSComm控件进⾏串⼝编程的基本步骤Visual C++为我们提供了⼀种好⽤的ActiveX控件Microsoft Communications Control(即MSComm)来⽀持应⽤程序对串⼝的访问,在应⽤程序中插⼊MSComm控件后就可以较为⽅便地实现对通过计算机串⼝收发数据。
要使⽤ActiveX控件MSComm,程序员必须将其添加⼊⼯程,其⽅法是: (1)单击主菜单project的⼦菜单Add To project的Components and Controls选项; (2)在弹出的"Components and Controls Gallery"对话框中选择Registered ActiveX Controls⽂件夹中的"Microsoft Communications Control,version 6.0"选项 单击其中的"Insert"按钮,MSComm控件就被增加到⼯程中了。
与此同时,类CMSComm的相关⽂件mscomm.h和mscomm.cpp也⼀并被加⼊Project的Header Files和Source Files中。
当然,程序员可以⾃⼰修改⽂件名1在建⽴的⼯程中插⼊MSComm控件2添加MSComm控件ID的控制变量或对象3对串⼝进⾏初始化,设置MSComm控件的属性4添加串⼝事件的消息处理函数OnComm()函数,在函数中根据应⽤需要,编写数据处理代码5编写串⼝发送等其他代码6关闭串⼝⼀个MSComm控件只能对应⼀个串⼝,如果应⽤程序需要访问多个串⼝,必须使⽤多个MSComm控件。
处理通信问题的⽅式:事件驱动⽅式(与中断原理类似,触发⼀个事件处理函数),查询⽅式。
MSComm控件的重要属性中的⼀部分CommPort设置并返回通信端⼝号Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停⽌位。
在VS(VC)2010中使用MSComm控件实现串口通信的详细步骤
// TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码? }
void CCommTestDlg::OnBnClickedButtonOpen() { // TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码? }
10. 添加关闭串口按钮的消息响应函数 void CCommTestDlg::OnBnClickedButtonClose() { // TODO: 在此添加控件通知处理程序代码 m_mscomm.put_PortOpen(FALSE);//关闭串口 AfxMessageBox(_T("串口 1 已关闭")); } 11. 添加发送按钮消息响应函数 void CCommTestDlg::OnBnClickedButtonSend() { // TODO: 在此添加控件通知处理程序代码 UpdateData(true); //读取编辑框内容 m_mscomm.put_Output(COleVariant(m_EditSend));//发送数据 m_EditSend.Empty(); //发送后清空输入框 UpdateData(false); //更新编辑框内容 } 12. 接收数据 void CCommTestDlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 static unsigned int cnt=0; VARIANT variant_inp; COleSafeArray safearray_inp; long len,k; unsigned int data[1024]={0}; byte rxdata[1024]; //设置 BYTE 数组 CString strtemp; if(m_mscomm.get_CommEvent()==2) //值为 2 表示接收缓冲区内有字符 {
串口通信-MSComm控件使用详解
串口通信-MSComm控件使用详解2012-11-13 09:35 6988人阅读评论(0) 收藏举报控件编程 Delphi编程(13)MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。
在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。
OnComm 事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm 控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。
1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用 Mi oo o u i t n ot l c sfC mm n ai sC nr 控件编写 串行通信程序的 方法, r t c o o 并结合开 发实践 , 阐述 了用 V +语言 实现 了基于 A — C+ c
te 技 术 的 串行 通 信 编 程 的 一般 步骤 。 iX v
关键词
交换 J 。串行通信将数据在一根数据信号线上逐位 地进行传输, 每位数据都 占据一个 固定的时问长度。 由于通信是在一根传输线上逐位传输, 所用的传输线
少, 所有人 机交互设备 和串行存储设备 普遍 采用 串行 通信方式 。串行通 信具有 连 接 简单 、 用灵 活方 便 、 使 数据 传递 可靠 等优 点 , 外设 与接 口电路 信 息交 换 、 在 实时监 控和远距离 传输 领域得 到了广泛应用 。
本文 以 Wid w P平 台 下用 V + . n o sX C +6 0开 发
C m o 设置/ o mP r t 获取控 件对应的串行 口
Stns et g i Ip t nu O tu upt 设置/ 获取波 特率 、 校验方式 、 数据位 、 停止位 读取数据 发送数据 P r pn 打 开/ 闭通 信 口 o O e t 关
数据
30 25
ct n o t l 件 , 控 件 就 会 加 入 到对 话 框 中 , ai sC nr 控 o o 该
并 出现一 个 MS o m控 件 图标 , I Cm 其 D号取 缺 省值 。
() 3 右键 单 击 MS o C mm控 件 , 用 Cas zr 利 ls ad Wi
一
行通 信程 序 的方法 。
个字符 到达或一 个变化 发生 时需, 以利用 MS o m 控件 的 O C m 可 Cm no m 事件 , 获并处 理这 些通 讯事 件 。 捕
1 MS o C mm 控件介绍
MS o m 控件 包 装 在文 件 MS o 3. C 中 , Cm Cmm 2 O X
20 Si eh E gg 0 6 c.T c . nn .
利 用 MS o C mm 控件实现与 GP S接收 器 的串 口通讯
王建川 马立 元 马 剑
( 械工程学院导弹工程 系, 家庄 000 ) 军 石 50 3
摘
要 串行接 口由于其具 有连接 简单 、 使用方便 、 数据传递 可 靠等优 点 , 在工 业实时控制 系统 中得到 了广泛 应用。探讨 了
第 一作者 简介:F建川 : , 18 一 ) 汉族 , _ 男 (91 , 硕士生 , 究方 向 研
计算 机仿 真 。E m i: nefag t cI。 - alj cow n @ o oI e m. l
维普资讯
l 9期
王建川 , : 等 利用 MS o m控件 实现 与 G S接 收器的串 口通讯 Cm P
te i X控 件 , v 其他取 缺 省设 置 。 () 2 在对 话 框 中按 鼠标 右 键 , 弹 出的 菜 单 中 从 选 取 Isr A t e o t l在 列 出的 本 机 已 注册 的 net cv X C nr , i o 所 有 A te ci X名 称 中选择 需要 的 Mi oo o m n— v c sf C m u i r t
功能 。每个被使用 的 MS o m 控 件对 应着 一个 串行 Cm 端 口。M C m S o m控件 提供 了很 多重要 的属性 ( 表 1 如
20 0 6年 5月 2 日收 到 3
时 确保 选 中 A te otl, 应 用 程 序 支 持 A — cvX C n o 使 i rs c
串行通信
MS o C mm控件 文献标 识码
GS P B
中图法分类号
T 3 1 P 1;
随着计算机 系统应用 与网络 的发展 , 算机需 要 计 与其他计 算机 、 感器 、 传 控制 器 及外 部 设备 进行 信 息
所 示 ) 这些屙 陛可以有效地控 制串 口通信 。 ,
表 1 MS o C mm 控 件 的 主 要 属 性 属 性 说 明
添加 成员 变量 , 取名 为 I m cm。 n so —
s ee er y=v eev;/ R ci ar v a R cie/ 将数据由 V RIN A A T型转换
为 Sf ry型 ae a Ar
f ( =0 i ; + o i ; <1 i +) r
维普资讯
第 6卷
第 1 9期
20 06年 1 0月
科
学
技
术
与
工
程
@
Vo . No 9 16 .1
Oc .2 6 t 00
17 —8 5 20 l —24 0 6 1 1 1 ( 0 6) 9 3 0 — 3
S inc c oog n g n ei c e eTe hn l y a d En i e rng
MS o C mm控件 提供 了事 件驱 动通 讯方 式 。事件
G S串行通 信程 序为 例 , 讨利 用 Mcoo o u P 探 ir fCmm — st
nct n o t l 件 ( i i sC nr 控 ao o 简称 M C mm控 件 ) 开发 串 So ,
驱动 通讯 是 处 理 串行 端 口交 互 作 用 的 一 种 非 常 有 效 的方法 。在许 多情 况 下 , 如 在 C 例 D或 R S线 上 T
是 Wi o s P提供 的常用控 件之一 。其 功能是通过 n w d X
2 操作 步骤
( ) V +60环 境下 , 1在 C+ . 创建 一 个基 于单 文 档
的 MF C应 用程 序 J取 名 为 G S a 。在 创建 过 程 , PDt a
串行端 口传输和接 收数据 , 为应用 程序提 供 串行通讯