利用VC_6_0实现温度采集模块的串行通信
基于VisualC_6_0下的一种微机与单片机的通信实现
M SComm 控件拥有功能完善的串口数据的发 送和接收功能, 它的通信功能实现实际上是调用了 A PI 函数, 而 AP I 函数是由 Com m. drv 解释 并传 给设备驱动程序执行的, 对于 Visual C+ + 程序开 发者只需知道 M SComm 控件的属 性和事件的 用 法既可以实现对串口的操作.
bSend= F ALSE; / / 可以自动发送 bReceive= F AL SE; / / 允许接收字符 m - mP ort = 1; / / 端口号置为 1 m - st rSet t ing s= - T ( 9600, n, 8, 1!) ; / / 串行 口设置 m - st rSendSt ring = - T ( !) ; / / 发送字符串空 T ime= 1000; / / 时间间隔 1 秒 m - nInputM ode= 1; / / 数据 传输方 式设置 为 二进制 m - st rR eceiv e= - T ( !) ; }
摘 要: 介绍了 计算机与单 片机在进 行串行口通 信编程中常 用的编程 方法以及程 序流程图 和部分程序 源代 码, 概述 了计算机与 外围设备 进行串行口 连接时常 用的连接方 法和原则, 并对 编程时所用 到的 M SComm 控 件所提供的两种处理通信方式做了分析. 关键词: V isual C+ + ; 串行通信; M SComm 中图分类号: T N91 文献 标识码: A 文章编号: 1671 9476( 2008) 02 0061 03
M SComm 控件有很多重要属性, 首要的几个 为: Co mmP ort 设 置 并 返 回 端 口 号; Set t ings 以字符串的形式设置并返回数据传输速 率、奇偶校验、数 据位、停止位; Port Open 设置 并返回通信端口的状态, 也可以打开和关闭端口; Input 从缓冲区接 收和删 除字符; Output 向缓冲区写一个字符串.
用VC 6.0实现串行通信的三种方法
用VC 6.0实现串行通信的三种方法2004-2-8加入来自天极论坛作者yhww1条评论点击2964次摘要:本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控。
在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。
依据不同的条件实现对串口的灵活编程控制是我们所需要的。
在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采样数据,主机向单片机发送相关的控制命令,实现串行数据接收,处理,记录,显示,实时绘制曲线。
串行通信程序开发环境为 VC++ 6.0。
Windows下串行通信与以往DOS下串行通信程序不同的是,Windows不提倡应用程序直接控制硬件,而是通过Windows操作系统提供的设备驱动程序来进行数据传递。
串行口在Win 32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。
与通信设备相关的结构有COMMCONFIG ,COMMPROP,COMMTIMEOUTS,COMSTAT,DCB,MODEMDEVCA PS,MODEMSETTINGS共7个,与通信有关的Windows API函数共有26个,详细说明可参考MSDN帮助文件。
以下将结合实例,给出实现串行通信的三种方法。
实现串行通信的三种方法方法一:使用VC++提供的串行通信控件MSComm 首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project --> Add to Project --> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。
利用VC++6.0实现温度采集模块的串行通信
利用VC++6.0实现温度采集模块的串行通信
张凯;刘伟军;岳震;王天然
【期刊名称】《机械设计与制造》
【年(卷),期】2005(000)007
【摘要】介绍了应用 VC++ 6.0 MSComm控件实现温度采集模块
RS232/RS485串行通信的系统硬件构成及上位机软件设计,并通过激光直接金属成型的工程应用证明了本系统的可靠性和稳定性.
【总页数】4页(P149-152)
【作者】张凯;刘伟军;岳震;王天然
【作者单位】中国科学院沈阳自动化研究所,沈阳,110016;中国科学院,研究生院,北京,100039;中国科学院沈阳自动化研究所,沈阳,110016;中国科学院沈阳自动化研究所,沈阳,110016;中国科学院,研究生院,北京,100039;中国科学院沈阳自动化研究所,沈阳,110016
【正文语种】中文
【中图分类】TP39
【相关文献】
1.基于VC++6.0利用WinAPI函数实现PC机与PIC单片机的串行通信 [J], 朱圣烽
2.利用VC++6.0实现上位机与PLC的串行通信 [J], 惠鸿忠
3.利用VC++6.0实现上位机与PLC的串行通信 [J], 惠鸿忠
4.利用VC++6.0实现上位机与PLC的串行通信 [J], 惠鸿忠
5.利用VC++
6.0实现PC机与PLC的串行通信 [J], 赵健英
因版权原因,仅展示原文概要,查看原文内容请购买。
基于VC_6_0的多串口通信方法_王中训
该多路串行通信系统由上位机和下位机构成 ,如图 1所 示 ,上位机为 PC机 , PC机通过多用户卡可扩展出八个串口 , 下位机为单片机 。与传统的 TTL 等数字电路的逻辑电平不 同 , RS2232标准规定信号电压在 - 15 ~ - 3 V 和 3~15 V ,传 号和空号之间至少有 6V 的电压差 ,提高了数据传输的可靠 性和抗干扰能力 。因此 ,单片机与 PC机需要用一个电平转 换板 , 用 MAX232 芯 片 实 现 TTL 电 平 和 RS232 电 平 相 互 转换 。
图 2 单线程实现多串口通信流程 3. 2 创建读写线程 ,实现串行通信
如图 3所示 ,打开并配置完串口后 ,开启两个线程 ,一个 读线程和一个写线程 ,主线程主要负责将所有串口接收到的 数据进行处理显示以及各个子线程的调度和管理 ,读线程负 责读取八个串口的数据 ,写线程负责向需要控制的串口中写 入数据 。在实际应用中向串口写入数据的操作并不频繁 ,所 以写线程在刚开始创建时即被挂起 ,当需要向串口发送数据 时才激活写线程 ;当写操作完成后 ,又被挂起 ,以减少系统开 销 ,提高程序的执行效率 [4 ] 。
由于运用标准通信函数需要对硬件电路的结构原理非常了解编程比较复杂scomm控件进行串口编程scomm控件是微软公司提供的indows环境下实现串行通信的利用它可以非常简单地实现串行通scomm控件虽然简单易用但在实际测试中也发现了其本身的一些缺点如实时性不高高速通信时准确率较差和处理速度较慢等缺点另外由于其本身存在一i函数实现串口编程利用有很强的灵活性但需要用户详细了解串口程序开发过程和一些复杂indows系统中串口和其他通信设备是作为文件处理的
第 28卷 2008年 6月
计算机应用 Computer App lications
-VC++6_0实现PC机与单片机的串行通信
您是本帖的第 55 个阅读者
标题:VC++6.0实现PC机与单片机的串行通信 平板 打印 收藏 推荐
}
endd:
;
}
//发送数据
void CSerialAPIView::OnSend()
{
char szMessage[20] = “thank you very much”;
CommTimeOuts. WriteTotalTimeoutMultiplier = 0;
CommTimeOuts. WriteTotalTimeoutConstant = 5000;
SetCommTimeouts(m_hIDComDev, &CommTimeOuts);
环境下串行通信技术就显得日益重要。
VC++6.0是微软公司于1998年推出的一种开发环境,以其强大的功能,友好的界面,32位面向对象的程序设计及Active
X的灵活性而受广大软件开发者的青睐,被广泛应用于各个领域。应用VC++开发串行通信目前通常有如下几种方法:一是利用Windows
DWORD dwBytesWritten;
for (int i=0; i<sizeof(szMessage); i++)
{
WriteFile(m_hIDComDev, (LPSTR)&szMessage[i], 1, &dwBytesWritten,
1 Windows API通信函数方法
与通信有关的Windows API函数共有26个,但主要有关的有:
基于VisualC_6_0的PC机和AT89C51的串行通讯
网络通讯与安全电脑知识与技术电脑知识与技术1引言我们开发的超声—电火花—磨削多功能符合加工机床是利用PC机、PMAC运动控制卡、电火花脉冲电源和超声波发生器组成的多CPU控制系统。
为了实现通过人机交互界面对电火花脉冲电源和超声波发生器进行参数设置,对它们的工作状态进行监视并根据它们的工作状态实现利用PMAC控制卡对运动的控制,使它们之间进行信息的交换。
考虑到串行通讯简单易行和可靠性,我们采用串行通讯进行信息的交换和控制命令的发送。
为了使它们之间的通讯相互协调,我们定义了相互间的通讯协议,包括波特率、数据位数、停止位的个数以及奇偶校验方法和数据格式等。
2相关的API串行通讯的函数和概念2.1打开关闭串口在Windows操作系统中,不允许用户直接对硬件操作,而是把串口和其他通信设备是作为文件进行处理,串口的打开、关闭、读取和写入所用的函数和操作文件的函数完全一致。
2.1.1打开串口CreateFile()函数为读访问或写访问打开串口,打开成功后返回该串口句柄,供读写串口时使用。
HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDe-siredAccess,DWORDfdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDfdwCreation,DWORDfdwAttrsAnd-Flags,HANDLEhTemplateFile);参数lpFileName是要打开文件的逻辑名,串口使用如COM1或COM2;参数dwDesiredAccess指定访问类型,串口通信是双向的,一般设置为:GENERICREAD|GENERICWRITE;参数fdwShare-Mode指定文件共享属性,设为0,不共享;参数lpSecurityAttributes引用安全性属性结构,设为缺省值NULL;参数fdwCreation指定如果CreateFile正被已有的文件调用时应采取的动作,此参数就必须被设置为OPENEXISTING;参数fdwAttrsAndFlags描述了该端口的各种属性,对串口而言设置为FILE_FLAG_OVERLAPPED,该标志表明串口采用异步通信模式,可进行重叠操作,端口I/O可以在后台进行,若值为NULL,则为同步通信方式,在同步方式下,应用程序将始终控制程序流,直到程序结束;参数hTemplateFile是指向模板文件的句柄,当打开串口时,该参数为NULL。
基于VC++ 6.0的串口通信实验报告
网络与通信实验报告题目:串口通行实验班级:0309103学号:*********姓名:***指导老师:付大丰日期:2012-10-21一、实验要求把两台计算机的串口通过串口线连在一起,通过串口实现两台计算机通讯。
可以利用高级语言、C语言编程实现,要求程序界面友好,有发送和接收功能,其接收和发送内容可在屏幕上显示。
二、实验原理串口通讯把数据的字节分解成单个的二进制比特流依次传输,其结构简单,连接线少,应用非常广泛。
实现串口通信的方法很多。
如:利用标准通信函数实现串口通信、利用API实现串口通信和利用ActiveX控件实现。
本文主要采用ActiveX控件Microsoft CommunicationsControl(MSComm)编程,Windows平台先进的ActiveX技术使得对串口编程不再需要处理烦琐的细节。
利用已有的AxtiveX控件,只需要编写少量的代码,就可以轻松高效地完成任务。
以下对ActiveX控件属性进行简单介绍,在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_comm),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,这里只介绍其中几个常用属性:CommPort:设置并回通讯端口号,缺省为COMl。
Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen:设置并返回通讯端口的状态,也可以打开和关闭端口。
Input:从接收缓冲区返回和删除字符。
Output:向发送缓冲区写一个字符串。
InputLen:设置每次Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。
InBufferCount:返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。
InputMode:定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。
RThreshold和SThreshold:表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。
VC_6_0在计算机与多单片机系统通信中的应用
收稿日期:2006206213作者简介:张春宝(1977- ),男,江苏无锡人,无锡职业技术学院教师,南京航空航天大学在读研究生。
VC ++ 6.0在计算机与多单片机系统通信中的应用张春宝,黄 堃,赵翱东(无锡职业技术学院 江苏 无锡 214121)摘要:该文通过基于RS -485总线连接的主从式网络结构,开发VC ++6.0在计算机与多A T89C51单片机之间进行通信的程序。
依靠用户自定义的串行口通信协议实现一台上位计算机对多个A T89C51单片机的指挥控制。
经实践验证,该通信具有高速、可靠的特点,达到了工业运用中的实际要求。
关键词:VC ++ 6.0;RS -485;MSComm ;SN75176;单片机中图分类号:TP391 文献标识码:A 文章编号:167127880(2006)206229203Communication of Computer with Multi -MCU B ased VC ++6.0ZHAN G Chun 2bao ,HUAN G Kun ,ZHAO Ao 2dongAbstract :In t his paper ,a met hod of serial communication based on Active X accomplishes corre 2spondence between comp uter and multi -MCU wit h Micro soft Visual C ++ 6.0based on RS -485.Depend on user -defined SPCP (Serial Port Communication Protocol ),t ransmission is reliable.This met hod has been used in p ractice ,it has t he effect on high -speed and steady -going.K ey Words :Visual C ++ 6.0;RS -485;MSComm ;SN75176;MCU 0 引言工业控制系统中,经常要组成计算机为上位机而单片机为下位机的控制网络,两者一般通过RS -232、RS -422或RS -485串行口进行通信。
基于VC_6_0的PC机和单片机的接口设计与实现
第13卷第3期 2005年6月安徽建筑工业学院学报(自然科学版)Journal of Anhui I nstitute of A rchitecture &I ndustryVol .13No .3 Jun .2005 收稿日期:2005203224作者简介:张晶晶(1974-),女,博士生,主要研究方向为遥感图像信息处理。
基于VC ++6.0的PC 机和单片机的接口设计与实现张晶晶(安徽大学电子科学与技术学院,合肥 230039)摘 要:基于32位W indows 操作系统的PC 机和单片机间的串行通信是一种常见的通信方式。
本文利用VC++6.0编写串行通信程序的函数,并实现了串行口通信。
关键词:串行通信;单片机;W indows;AP I 接口;数据采集中图分类号:TP241 文献标识码:A 文章编号:100624540(2005)032094203I m ple m en t desi gn of i n terface i n persona l com puter andsi n gle ch i p m i cyoco w ith VC ++6.0Z HANG J ing -jing(School of Electr onic Science and Technol ogy,Anhui University,Hefei,230039,China )Abstract:serial communicati on of pers onal computer and single chi p m icyoco based on operating syste m of 32bit is a kind of fa m iliar corres ponding mode .This paper writes the functi on on p r ogra m of serial communicati on with VC ++6.0,i m p le ments the functi on of serial interface .Key words:Serial communicati on;Single chi p m icyoco;W indows AP I interface;Data collecti on 数据采集在工业测试和实验室研究方面应用广泛,随着科学技术的发展,数据采集技术被普遍认为是现代科学研究和技术发展的重要方面。
VC6_0环境下GPS差分定位中串口通信的实现(1)
&In form ationcom m u nication s 信息通信12摘 要:文章从对G P S 的差分技术的概述开始,继而以加拿大Novatel 公司生产的OEM4-G2L 板卡为例,介绍了N M E A 0183协议及其中$G P G G A 定位语句的格式,然后以详细的实例说明了基于VC6.0的计算机与G P S 接收机在差分定位中的串口通信程序。
关键词:G P S ;N M E A 0183;串口通信;M S C o m m 控件中图分类号:TN967.1 文献标识码:A 文章编号:1673-1131(2007)01-0012-03余志奇 沈琦/武汉大学测绘学院(武汉 430079)The Realization of GPS Receiver’s Serial Communications in Difference Position under the Environment of VC6.0Y U Z h i Q i , S H E N Q i(School of Geodesy and Geomatics at Wuhan University, Wuhan, 430079,China)Abstract: This article from to the GPS difference technology outline start, subsequently the OEM4-G2L board which produces by Canadian Novatel Corporation is an example, introduced the NMEA0183 agreement and its $GPGGA locate statement form, then the author showed by the detailed example based on the VC6.0 computer and the GPS receiver in difference position string mouth signal procedure.Key words: GPS; NMEA0183 protocol; Serial communication; MSComm controls余志奇(1982-),男,湖北省武汉市人,武汉大学测绘学院2005级硕士研究生,主要研究方向:卫星定位导航技术及其工程应用。
基于VC++ 6.0的高速串口通信数据采集系统
基于VC++ 6.0的高速串口通信数据采集系统1 引言串行通讯是计算机与其他设备进行数据交换时经常使用的方法之一,他具有实现简单,使用灵活方便,数据传输可靠等优点,因而在工业监控、数据采集和实时监控系统中得到广泛应用.高速串口数据采集软件的设计不同于普通串口通信,其要求在接收数据采集设备发送大量数据的同时完成对已接受到数据的实时存储,如果处理不好二者之间的关系,会造成数据的缺失甚至程序的崩溃.这就要求应用程序能够同时处理两件以上不同的任务.Win32是基于线程的抢先式多任务操作系统,使得应用程序能够同时执行多个任务,即在一个进程中可以同时运行多个线程.一个线程是指程序的一条执行路径,系统不停的在多个线程之间切换.由于时间很短,看上去多个线程在同时运行.对于通讯这种需要花费大量时间来测试I/O操作,同时又要保持响应用户其它操作的应用程序来说,创建多线程是最佳选择.2 系统结构系统的组成结构如图1所示.中央控制PC机是系统的核心,要求数据采集软件具有良好的稳定性和兼容性.所以独立设计了一套基于Visual C++ 6.0的多线程通讯软件,它与前端的扫描仪串口通信是典型的主从式,在硬件上通过MOXA公司的串口卡实现500K波特的采集速率.图1 数据采集系统结构3 用MSComm控件实现高速串口数据采集的问题MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,只需要在串口通信资源的属性(Properties)一项中配置串口,串口通信的波特率、数据位数、停止位数、奇偶校验、发送缓冲区大小、接收缓冲区大小以及超时设置等均在此时进行配置.完成串口配置之后即可打开串口,进行数据读写.对于一般数据交换及串口通信来说,MSComm控件完全能够满足要求.但由于控件本身对于接收缓冲区大小设置的限定,为高速数据采集软件的设计带来了麻烦.如果接收缓冲区不能满足设计的要求,当缓冲区内数据达到消息响应值并响应存储命令时,而新采集的数据传输速度大于已接收到数据的存储速度,就会造成接收缓冲区的溢出,直接导致系统的崩溃.这一点在程序设计初期深有体会.在程序设计时也尝试当缓冲区达到阈值响应消息时,在消息响应中启动一个新的线程,先将缓冲区中接收到的数据取出到新开辟的内存单元中,再进行数据存储.程序可以运行,但出现了新的问题,即有的数据帧中的数据发生丢失.分析产生这种数据丢失的原因,还是由于控件本身对于接收缓冲区大小设置的限定.4 程序设计创新4.1多线程程序设计思想在32位Windows系统中,术语多任务是指系统可以同时运行多个进程,而每个进程也可以同时执行多个线程.进程就是应用程序的运行实例.每个进程都有自己私有的虚拟地址空间,每个进程都有一个主线程,但可以建立另外的线程.进程中的线程是并行执行的,每个线程占用CPU的时间由系统来划分.可以把线程看作是操作系统分配CPU时间的基本实体,系统不停的在各个线程之间切换,它对线程的中断是汇编语言级的.系统为每一个线程分配一个CPU时间段,某个线程只有在分配的时间段内才有对CPU的控制权.进程中所有的线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源.这一方面为编程带来了方便,但另一方面也容易造成冲突.虽然在进程中进行费时的工作不会导致系统的挂起,但会导致进程本身的挂起.所以,如果进程即要进行长期工作,又要响应用户的输入,那么它可以启动一个线程来专门负责费时的工作,而主线程仍然可以与用户进行交互.由此可见,利用Win32的重叠I/O操作和多线程特性,可以编出高效的通信程序.高速串口数据采集软件的特点是接收数据的速度要求很高,接收数据量很大,而控制扫描仪发送的命令字数据量很小.根据这些特性,可以在程序中创建一个辅助工作者线程专门来监视串行口的输入.由于写串口的数据量不大,不会太费时,所以在主线程中完成写端口的任务是可以的,不必另外创建线程.4. 2多线程程序设计①数据采集程序流程根据多线程程序的开发思想,该数据采集软件由负责人机交互的多线程和对串口进行处理的后台辅助线程组成.主线程是数据采集程序的管理者,用来初始化串口(通过调用Win32 API函数),自定义通信事件消息,创建、删除辅助线程,进行人机交互的操作及协调好各线程的运行.程序流程如图2所示.图2 数据采集程序框图②后台辅助线程分析后台辅助线程是数据采集软件的核心,包括串口监视线程,读线程。
基于VC6的分布式仿真系统多线程串行通信的实现
( t e K y S be tL b o h r a e tL u c h oy& T c nlg . Sa e u jc a fte A m m n a n h T e r t eh o y o
摘 要 在 介 绍 串行 通信 的基 本 原 理 和 方 法 的 基 础 上 , 对 某 分 布 式 仿 真 系统 高效 数 据 通 讯 的 需要 , 合 W idw 针 结 n o s环 境 下 的 多任 务 并 发 机 制 , 究 了采 用 V 6的 不 同函 数 实现 基 于 分 时 串行 实时 通 信 的 方 法 , 研 C 阐述 了 多线 程 任 务 的 实现 , 对 并 如何 在 S I 用 程 序 中 实现 基 于控 件 的 多线 程 串行 通 信 进 行 了深 入 分 析 。该 仿真 系 统 中采 用 邦 员机 作 为 上 位 机 , D M D应 A A 系列 模 块作 为 下位 机 , 通过 1对 8串 口卡 实现 上位 机 分 时控 制 A A 模 块 并 进 行 通 信 , 后 给 出 了基本 通 讯 程 序 。 D M 最 关 键 词 串行 通信 多 线程 通 信控 件 分 布 式 系 统
T e S cn rl r E gn eig U ies y X , 1 0 5 h eo d A tl y n ie r nv r t, i n 7 0 2 ) ie n i a
Ab t a t T e f n a na a d sr c : h u d me tl n meh d o e a c mmu ia in r i t d c d Ac o d n t h p a t a d ma d o to s f s r l o i n c t a e nr u e . c r i g o t e r ci l e n f o o c d t o a a c mmu iai n e f a iu l i o it b t d i l t n s se , e a e e e r h s t e meh d o i - h rn n e t f c co sy n s me d s i u e s o i r mu ai y tm t p p r r s a c e h to f t o h me s a g i sr l o e i c mmu ia i n b s d n VC . e vr n n a d to o g l s t frh o h w o a r o t a nc t a e o o 6 0 n i me t n h ru h y e s o t n o t c ry u mu i r a i g o h t e dn h p o r mmi gT e mu i r a i g s r l c mmu ia i n e h oo y b s d o o t l i S I p l ai n s a a y e e p y rga n . h h t e dn e i o h a n c t tc n lg a e n c n r n D a p i t i n l z d d e l ・ o o c o T e smu ai n y t m a o t e e a P a t e ma t r c mp t r a d AD h i lt s se o d p s f d r l C s h se o u e n AM s r l e a mo u e s lv c mp t r t a i d l s a sa e o u e . c n I
VC_6_0环境下GPS接收机串口通信的实现
文章编号:100723817(2002)0520023202中图分类号:P228.4 文献标识码:B V C++6.0环境下GPS接收机串口通信的实现李淑慧(武汉大学测绘学院,武汉市珞喻路129号,430079)摘 要 首先简单介绍了GPS接收机串口通信的基本概念,然后通过实例详细介绍了计算机与GPS接收机进行数据传输的两种方法:一种是使用W in32A P I通信函数的文件读写方式;另一种是通过V C++6.0提供的M SComm控件实现。
关键词 GPS;串口通信;W in32A P I函数;M SComm控件 开发GPS数据处理软件,首先要解决计算机和GPS接收机的串口通信。
在GPS接收机和计算机的数据传输过程中,计算机的串行端口作为CPU和串行设备间的编码转换器,提供了计算机与GPS接收机之间的数据传输通道。
作为数据终端设备,GPS接收机采用异步串行方式利用D型R S2 232C串行二进制数据交换电缆接口将采集到的数据通过串行端口传输给计算机[1]。
V isual C++封装了W indow s A P I函数,使得W indow s 应用程序的开发变得简单易学。
利用V C++6.0开发W indow s32位环境下计算机和GPS接收机的串口通信程序,可以直接利用W indow s A P I的通信函数,另外还可以利用V C提供的M SComm控件(即M icro soft Comm unicati on Contro l)。
1 W in32A P I串行通信的文件读写方式在W in32中,所有的设备都被看成是文件。
串口通信可以像访问普通文件那样通过A P I通信函数来实现,系统的虚拟驱动程序负责执行特定的工作[2]。
通过程序实例,可以具体实现GPS接收机的串口通信。
这个例子是按照事件驱动的方式进行读写的,同时利用了多线程,将串口的读写放在一个用户自定义的线程中完成。
在开始进行数据采集的时候打开这个有关串口通信的线程,然后串口的创建、设置、读写都在这个线程中进行。
基于VC++6.0串口通信开发方法
摘要]:Windows是当前应用程序开发的主流平台,VC++6.0是该平台强大的开发工具,使用windowsAPI开发串口通信的程序可使我们更加清晰的了解串口通信的机制,并且开发人员可以根据需要使用API进行灵活的程序设计,在SCADA中串行通信是必不可少的技术,所以掌握串行通信的开发方法具有现实意义。
[关键词]:世纪长秋世纪星组态软件SCADA 触摸屏人机界面1 引言在当今的工业控制领域,串口通信是计算机与其他设备进行数据通信时经常使用的方法,具有实现简单、使用灵活、数据传输可靠等几个优点,特别是在实时监控系统中得到广泛应用,在我们使用的计算机上使用的串口一般是RS232,使用RS232接口只能进行一对一的通信,然而在工业控制领域往往是一台工控机和多台智能设备进行通信,并且要求传输距离远,因为这些需求,在工控领域一般使用RS485。
在Win32下,可以使用两种编程方式实现串口通信,其一是使用MScomm控件,这种方法程序简单,但欠灵活。
其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。
使用控件的方法在本质上也是使用API进行串口通信,控件只不过是对API的一个封装处理,本文只介绍使用API进行串口通信编程的方法。
2 串口通信的一般步骤2.1 打开串口在32位Windows中,串口和其他通信设备(如磁盘等)都被作为文件进行处理,在使用前必须先将其打开,为保证串口通信数据传输的可靠性,串口一般以非共享模式打开,也就是在被串口打开后,其他程序不能在去打开此设备。
2.2 配置串口在使用串口进行数据通信前必须对其进行正确的配置,串口需要配置的主要参数有波特率、数据位、停止位、奇偶校验、收发数据缓冲区大小。
除此之外还要对串口进行超时设置,以防止在串口通信时数据传输突然中断而导致读写操作进入无限期等待的状态,设置了超时,如果在指定时间内没有完成所进行的操作,则此操作被自动放弃。
VC6.0MFC串口通信编写全过程(推荐文档)
其于MFC 的串口调试助手编辑过程一、新建打开VC6.0 文件 新建 工程 MFC AppWiard(exe)位置(选择保存工程位置) 工程名称(输入工程名XXXX )确定 选择基本对话框 下一步 下一步 下一步 选择(CXXXXDlg ) 完成 确定 在生成的基本对话框内将不需要按钮及提示框(自动生成的“确定”“取消” 及提示框)删除或修改使用,至此基本框架完成如下图:二、往生成的基本框架中添加控件1、因为控件列表框内没有串口通信用到的通信控件,所以要先添加到控件列表框内再将控件添加到基本框内使用,步骤如下:菜单栏 工程 添加到工程 Components and controls … Registered ActiveX Controls 选择“Microsoft Communications Control, version 6.0” Insert 确定 OK 关闭此子窗口完成添加操作标志如上图所示。
2、将刚才添加添加到控件列表框内的串口控件添加到基本框架内 点击控件列表框内的串口控件,此时光标变为“十”形,在基本框架内随意划取一矩形区域,即可以添加串口控件,不需要修改此控件的大小及位置,因为程编译运行后此控件是看不到的,步骤结果如下图:3、继续往基本框架内添加用于编辑发送数据的输入编辑框及输出编辑框,同理选择控件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗口及一个按纽控件如下图所示:这两个窗口需要修改大小及位置,因为程序运行后将会显示而串口通信控件则不显示,上图是运行后的效果。
4、对以上四个控件编程步骤如下:a 、右击串口通信控件 建立类向导Member variables Control IDS 中选择IDC_MSCOMM1 add variable … Member variable name 中输入控件变量名m_ctrlComm (变量名可以随意选取,但程序中应与所取变量名一致) OK 确定b、右击编辑框、属性、常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID 号为IDC_EDIT_RXDATA(可以随意选取,但程序中应与所取ID号一致),再在此窗口的样式中勾选”多行”,同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动(V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框输入ID号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,同样也选上用于垂直多行显示,发送框可以不用垂直多行显示;再为按钮控件添加ID号,为IDC_BUTTON_MANUALSEND,并将标题中的“Button1”改为“发送”,功能是按一次就把发送编辑框中的内容发送一次。
VC6.0串口编程例程
引言在PC机的主板上,有一种类型的接口可能为我们所忽视,那就是RS-232C串行接口,在微软的Windows系统中称其为COM。
我们可以通过设备管理器来查看COM的硬件参数设置,如图1。
图1 在Windows上查看PC串口设置迄今为止,几乎每一台PC都包含COM。
本质而言,COM是PC为和外界通信所提供的一种串行数据传输的接口。
作为一种物理通信的途径和设备,它和目前风靡的另一种串行接口――USB所提供的功能是一致的。
不过RS-232C显然已经开始被后起之秀USB赶超,因为USB的传输速率已经远远超过了RS-232C。
尽管如此,RS-232C仍然具有非常广泛的应用,在相对长的一段时间里,难以被USB等接口取代。
RS-232C接口(又称EIA RS-232C),1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定,全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"。
本文将对这一接口进行硬件原理的介绍,随后我们将逐章学习DOS平台的串口编程,及Windows平台下基于API、控件和第三方类的串口编程,最后本文将给出一个综合实例。
在本文的连载过程中,您可以通过如下方式联系作者(热忱欢迎读者朋友对本文的内容提出质疑或给出修改意见):作者email:21cnbao@(可以来信提问,笔者将力求予以回信解答,并摘取其中的典型问题,在本系列文章最后一次连载的《读者反馈》中予以阐述);硬件原理众所周知,CPU与存储芯片和I/O芯片的通信是并行的(并行传输的最大位数依赖于CPU的字长、数据总线的宽度),一种叫做UART(通用异步收发器,Universal Asynchronous Receiver/Transmitter)的芯片提供了并行数据传输和RS-232C串行数据传输方式的转换。
这样的设备通常有如图2所示的管脚分布,当其向外传输数据时,CPU并行的将数据写入这类芯片的寄存器,UART再将寄存器中的数据一位一位地移动并向外传输;当外界向其传输数据时,UART一位一位地接收数据,并将其移位组合为并行数据,CPU再并行地读取这些数据。
VC6.0MFC串口通信编写全过程
其于MFC 的串口调试助手编辑过程一、新建打开VC6.0 文件 新建 工程 MFC AppWiard(exe)位置(选择保存工程位置) 工程名称(输入工程名XXXX )确定 选择基本对话框 下一步 下一步 下一步 选择(CXXXXDlg ) 完成 确定 在生成的基本对话框内将不需要按钮及提示框(自动生成的“确定”“取消” 及提示框)删除或修改使用,至此基本框架完成如下图:二、往生成的基本框架中添加控件1、因为控件列表框内没有串口通信用到的通信控件,所以要先添加到控件列表框内再将控件添加到基本框内使用,步骤如下:菜单栏 工程 添加到工程 Components and controls … Registered ActiveX Controls 选择“Microsoft Communications Control, version 6.0” Insert 确定 OK 关闭此子窗口完成添加操作标志如上图所示。
2、将刚才添加添加到控件列表框内的串口控件添加到基本框架内 点击控件列表框内的串口控件,此时光标变为“十”形,在基本框架内随意划取一矩形区域,即可以添加串口控件,不需要修改此控件的大小及位置,因为程编译运行后此控件是看不到的,步骤结果如下图:3、继续往基本框架内添加用于编辑发送数据的输入编辑框及输出编辑框,同理选择控件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗口及一个按纽控件如下图所示:这两个窗口需要修改大小及位置,因为程序运行后将会显示而串口通信控件则不显示,上图是运行后的效果。
4、对以上四个控件编程步骤如下:a 、右击串口通信控件 建立类向导Member variables Control IDS 中选择IDC_MSCOMM1 add variable … Member variable name 中输入控件变量名m_ctrlComm (变量名可以随意选取,但程序中应与所取变量名一致) OK 确定b、右击编辑框、属性、常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID 号为IDC_EDIT_RXDATA(可以随意选取,但程序中应与所取ID号一致),再在此窗口的样式中勾选”多行”,同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动(V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框输入ID号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,同样也选上用于垂直多行显示,发送框可以不用垂直多行显示;再为按钮控件添加ID号,为IDC_BUTTON_MANUALSEND,并将标题中的“Button1”改为“发送”,功能是按一次就把发送编辑框中的内容发送一次。
利用VC++6.0实现上位机与PLC的串行通信(1)
利用VC++6.0实现上位机与PLC的串行通信作者:惠鸿忠, Hui Hongzhong作者单位:聊城大学刊名:微计算机信息英文刊名:CONTROL & AUTOMATION年,卷(期):2006,22(16)被引用次数:12次参考文献(4条)1.郭飒基于OPENGL的灯光控制系统的实现[期刊论文]-微计算机信息 2004(05)2.苗长新注浆泄漏监测程序的设计及其串行通信实现[期刊论文]-微计算机信息 2003(06)3.李现勇Visual C++串口通信技术与工程实践 20024.SIMATIC S7-200可变程序控制器系统手册引证文献(12条)1.吴镇平基于PLC的桥式组合大切机监控系统设计[期刊论文]-闽西职业技术学院学报 2010(1)2.徐洋.王宏华.周强.李俊星基于MSP430单片机的无刷直流电机实验测试平台设计[期刊论文]-机械制造与自动化2010(4)3.杨英琴.侯力.郑熙.王裕林.陈丹PLC控制系统在厚壁钢管超声波探伤中的应用[期刊论文]-机械设计与制造2010(12)4.吴镇平.林海涨.李捷辉利用VC++6.0实现PLC实时监控[期刊论文]-装备制造技术 2009(7)5.王少江.侯力.薄立朗.匡红PLC和变频器在超声波自动探伤系统的应用[期刊论文]-煤矿机械 2009(4)6.唐捷.蔡智圣.李争名.赵士滨基于PC机并口通信的多媒体设备控制系统的设计与实现[期刊论文]-光盘技术2009(2)7.李波.舒朝君.江彦.余磊.刘永喜.胡玉庆.皮智敏基于VC的PLC数据采集管理系统[期刊论文]-现代电子技术2009(6)8.董奎勇.钱炜.王明军.熊磊基于VC++的月球车的数据采集处理系统[期刊论文]-微计算机信息 2008(28)9.黄良希.LI Ding-zhu用于机动车路考系统的车载通讯系统研究[期刊论文]-微计算机信息 2008(23)10.汤光华.吴青自由口模式下S7200 PLC与上位机的通信[期刊论文]-微计算机信息 2008(13)11.李志伟基于AT指令的串行通信程序的设计[期刊论文]-微计算机信息 2007(9)12.安宪军.黄尔烈.贾少锐.张常全基于Delphi7.0的上位机与PLC的通信[期刊论文]-微计算机信息 2007(7)本文链接:/Periodical_wjsjxx200616021.aspx。
一种基于VC++6.0的串行通信实现方案
一种基于VC++6.0的串行通信实现方案
席晓平;郑林华;韩方景
【期刊名称】《微处理机》
【年(卷),期】2001(000)004
【摘要】介绍了在VC++6.0下应用通信控件开发串口通信程序的方法,并给出了一个实际工程中的示例程序.
【总页数】4页(P27-30)
【作者】席晓平;郑林华;韩方景
【作者单位】国防科技大学电子科学与工程学院,;国防科技大学电子科学与工程学院,;国防科技大学电子科学与工程学院,
【正文语种】中文
【中图分类】TP31
【相关文献】
1.基于VC++6.0的PC机与LPC2210串行通信实现 [J], 丁强强;鲍远慧
2.基于VC++6.0利用WinAPI函数实现PC机与PIC单片机的串行通信 [J], 朱圣烽
3.一种基于VC++6.0的CORBA定制向导的设计与实现 [J], 黄文光;杨树强
4.基于VC++6.0的串行通信设计与实现 [J], 王宏伟;吴建设
5.一种基于FPGA的高速串行通信总线的设计与实现 [J], 张鹏
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTU
中图分类号:UY98
本文所述系统 Y= 机与外围设备间选用 8 针串口的 DA 5 "9" 5 = 标准进行串口通信,因为互不使用对方的传送控制信 号,故采用三线制串口通信接线方法,即发送数据线 D[. : " 脚;、 接收数据线 U[. : 9 脚 ; 和信号地 LK. : $ 脚 ; 三脚相连, 其 (或线 ) (或线 ) 中接收数据针脚 与发送数据针脚 彼些交叉相连, 信号地对应相接。传输线采用屏蔽双绞线。这里计算机与外部 设备进行数据交换的示意图见图 6 ] " ^ 。
9) /) / 程序主控模块的实现步骤
(" ) 创建项目: 创建一个基于对话框的 +U& 应用程序项目, 命名为 &>00J@TGBK。 (/ ) 插人通信控件: 选择 RB>VNAD 菜单下 5KK W> RB>VNAD 子菜 单中的 &>0S>FNFD. GFK &>FDB>H. 选项,在弹出的对话框中双击 1NX@.DNBNK 5AD@MNO &>FDB>H. 项,则所有注册过的 5AD@MNO 控件出 现在 列 表 框 中 。 选 择 +@AB>.>CD &>00EF@AGD@>F. &>FDB>HY MNB.@>F () $ ,单击 :F.NBD 按钮即可将通信控件插人该工程。该插人动作 引起的变化一是在 &HG..%@NL 窗口中出现相应的 &+2&>00 类; 二是在对话框编辑器工具栏中出现该控件图标。 (9 ) 设置主界面, 添加控件及其控制变量: 在主对话框编辑 器窗口中添加 +2&>00 控件和其它需要的控件,为每一个控件 添加控制变量名和变量类型。设对应 +2&>00 控件的变量名为 变量类型选为 &+2&>00 类。本文所述系统采用的是 4 0Z&>0, 路热电偶采集温度,相应的 4 个接收显示温度数值的静态文本 框控件的控制变量依次设为 0Z.DB1NAN@MN$ = 0Z.DB1NAN@MN* , 变量 “自动发送 ” “开始接收 ” 主界面中 和 按钮控 类型选为 &2DB@FX 类。
!" # $ %&’ # ())*
选为 9:&00"4 类。
机械设计与制造
+ ,* , +
件的控制变量名分别为 -./01’2345 和 -./01’63/3783, 变量类型都 变量类型 数据采集量静态文本框的控制变量为 -.5"0.4&-, 选为 920174; 类, 采集数据过程中每经过一个时间间隔即增加一 个数据量。为了将采集的温度数据实时地以曲线形式直观动态 地显示出来, 在主对话框右侧添加显示温度曲线的静态文本框, 设置相应的控件 <= 和属性。程序主对话框设计见图 > 所示。
(三线制串口通信接线图 ) 图 6 计算机与外部设备数据交换示意图
"@ " DA 5 7F$ 接口特性
本文所述系统之所以要采用 J.J% 5 7$"# 转换模块进行 DA"9" 和 DA7F$ 接口标准的转换,是因为一般微机提供标准的 DA"9" 接口有很多不足之处,而 DA7F$ 这种新的接口标准有弥 补 DA"9" 不足的特性。 DA"9" 接口的最高传输速率为 "#_‘ E /,最大传输线长为 它的传输速率低、 传输距离近、 抗共模干扰能 6$C。相比较而言, 力差, 在条件较恶劣的现场控制中, 很难实现数据的正常传输和 获取,而通过接口标准转换模块所得到的 DA7F$ 接口,采用差
!""#$%&’ ()* +, - - ./ 0 12,344 53&(63# (3 6*7#%8* ()* 9*6%7# 5344:&%57(%3& 3; (*4"*67(:6* 53##*5( 43<:#*
HIJKL M&)6G " ,NOP Q+) 5 R2*6 ,SPT H(+*6G " ,QJKL U)&* 5 ,&*6 (6 =()*+/+ J’&V+C- B3 A’)+*’+/ A(+*-&*0 O*/4)424+ B3 J24BC&4)B*, A(+*-&*0 66##6?, =()*&) ("L,&V2&4+ A’(BBW B3 4(+ =()*+/+ J’&V+C- B3 A’)+*’+/G X+)R)*0 6###98, =()*&)
! "#$ !
张凯等: 利用 %& ’ ’ () $ 实现温度采集模块的串行通信
会直接执行相对应的程序代码。
第*期
分接收和平衡驱动, 抗共模干扰能力增强, 即抗噪声干扰性好, 并且提供多站能力, 同一线上允许连接多个驱动器和接收器, 最 大传输速率 "$+, - ., 最大传输距离为 "/$$0, 可以较好的实现 现 场 数 据 的 采 集 和 控 制 。 系 统 选 用 的 1234# 接 口 标 准 的 565+ ! 3$"4 温度数据采集模块有 ( 路差分输入端和 / 路单端 输入端, 使用中信号输入采用温度信号差分输入方式, 进一步增 此外, 不 加抗干扰能力 7 " 8 。 1234# 的接口信号电平比 12/9/ 低, 易损坏接口电路的芯片。
检测的状态下, 只要事先将程序代码写好, 一旦有事件发生, 就
9) / 编程实现
本文介绍利用 %& ’ ’ () $ 的 +2&>00 通信控件,开发 R& 机通过 12/9/ 标准串口实现串行通信,进行实时温度,并有详细的注释。 温度采集串口编程的基本实现流程图如图 9 所示。
9 应用 +2&>00 控件实现系统的串行通信
9) " +2&>00 控件介绍
+2&>00 ? +@AB>.>CD &>00EF@AGD@>F. &>FDB>H I 控件是 +@AB>.>CD 公司提供的简化 J@FK>L. 下串行通信编程的 5AD@MNO 控件。该 控件为应用程序提供了通过串行接口收发数据的简便方法,从 而实现串口通信功能。具体地说,它提供了两种处理通信问题 的方法: 一种方法是事件驱动法: 在这种情况下, 当串口上发生 某一事件时,使用 +2&>00 控件的 PF&>00 事件可以捕获并处 根 理这些事件。 PF&>00 事件还可以检测并处理通信错误信息, 据通信事件或错误信息的数字代码就能查明到底是哪种事件或 错误发生而触发 PF&>00 事件。另一种方法是查询法:在这种 情况下,每当应用程序执行完某一串行口操作后,将不断检查 +2&>00 控件的 &>00QMNFD 属性以检查执行结果或者检查某 一事件是否发生 7 9 8 。 本工程实例使用事件驱动法来处理通信问题,实现数据实 时采集性,即每当缓冲区有规定个数以上的新字符到达时或通 信状态发生变化时,+2&>00 控件触发该事件并获取缓冲区的 数据。这种使用事件驱动程序的好处是不需要一直让程序处于
图 9 温度采集串口编程概念设计流程图
9) /) " 串口程序主要模块
(" ) 程序主控模块: 负责实现程序逻辑与主界面, 将调用串 口参数设置模块中暴露的接口。 (/ ) 串口参数设置模块: 负责实现串口通信参数的设置与修 改。 限于篇幅,这里主要介绍程序主控模块的实现和程序主控 类的编辑, 其余部分详见程序源代码。此外, 这里中所附函数源 代码省略由 5SSJ@TGBK 自动生成的部分代码。
第!期 年 "##$ !月
文章编号: 6##6 5 988! : "##$ ; #! 5 #678 5 #9
机械设计与制造 %&’()*+,- .+/)0* 1 %&*23&’42,+
5 678 5
利用 <= > > ?@ # 实现温度采集模块的串行通信
张 凯 6G " 刘伟军 6 岳 震 6G " 王天然 6 (6 中国科学院沈阳自动化研究所,沈阳 66##6?) (" 中国科学院 研究生院,北京 6###98)
TTTTTTTTTTTTTTTTTTU TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTU TTTTTTTTTTTTTTTTTTU
【摘要】 介绍了应用 <= > > ?@ # %A=BCC 控件实现温度采集模块 DA"9" E DA7F$ 串行通信的系统硬 件构成及上位机软件设计, 并通过激光直接金属成型的工程应用证明了本系统的可靠性和稳定性。 关键词:<= > > ?@ #; 温度采集模块 %A=BCC 控件; DA"9" E DA7F$ 串行通信; 【!"#$%&’$】 !"#$ %&%’( #)*(+,-.’$ *"&* /’ "&0’ $-..’$$1-223 &%%2#’, *"’ <= > > ?@ # %A= +44 .+)*(+2 *+ (’&2#5’ *"’ "&(,/&(’ .+)$*(-.*#+) &), $+1*/&(’ ,’$#6) +1 *"’ DA"9" E DA7F$ $’(#&2 .+44-)#.&*#+) *"&* #$ -$’, *+ .+22’.* *’4%’(&*-(’ ,&*&7 !"(+-6" *"’ $%’.#1#. %(+8’.* ’9%’(#4’)* +1 ,#(’.* 2&$’( 4’*&2 1+(4#)6: #* %(+0’$ *"&* *"’ $3$*’4 #$ (’2#&;2’ &), $*&;2’7 ()* +,%-#. /0 1 1 23 4;560,77 ’,8$%,9;:6;<; = :6>?@ #)%A&9 ’,77B8A’&$A,8;C)7D)%&E $B%) ’,99)’$ 7,-B9) 文献标识码:J