【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“基于VC的串口通信程序设计免费版 - 毕业设计”一文,供大家参考学习!
2010年第2期 煤矿机 电 ·57· 基于VC++6.0的串口通信程序设计 张伟,吴和金,史学栋,郭明彦 (中国矿业大学(北京)机电与信息工程学院,北京100083) 摘要: 综采工作面液压支架电液控制系统,使液压支架与采煤机、刮板输送机联动,构成高产、 高效、安全、自动化的综合机械化采煤装备。
以综采工作面控制系统为背景,介绍利用VC++6.0 编写串行通信程序,实现上位机(Pc机)和下位机(单片机)之间的通信。
关键词: 串行通信;智能接口卡USBCANII;上位机;VC++6.0软件 中图分类号:TP274+.2 文献标识码:B 文章编号:1001—0874(2010)02—0057—03 PrOgram Design of Serial Communication Based on VC++6.0 ZHANG Wei,删tte-jin,Sill Xue—dD,lg,GUO删,lg—yan (China University of Mining and Technology(Beijing campus),Beijing 100083,China)Abstract: By meaus of the electro—hydraulic control system,the shearer—loader,the hydraulic supports,and thescraper conveyor are cooperated to from a hish-production,efficient,safe,and automated comprehensivelymechanized coal mining set.Taking the control system of this coal mining set as the background,introduces thedesign of the serial communication program based on VC++6.0 between the host computer(PC)and the serviceprocessors(single-chip).Keywords:serial communication;intelligent interface card USBCAN II;host computer;VC++6.0 software 库操作等功能‘2】。
l概述 2串行函数接口程序设计 综采工作面液压支架电液控制系统硬件总体结构如图l¨J。
下位机(单片机)主要完成控制液压支 上位机与下位机进行串行通信的程序编程可用架的功能,上位机(Pc机)主要完成监测控制子控 VB、组态王、Madab、VC++等软件。
由于VB作为机的功能。
上位机和下位机直接挂接在CAN总线 面向对象的编程工具不够完全,效率比VC++低,上。
本文讨论利用VC++6.0进行软件编程,实现 组态王提供的命令语言环境较弱,通过串口设备一上位机(Pc机)和下位机(单片机)之间串行通信的 次最多只能交换16 B的数据,对较大数据量的传输接口通信设计方法,实现人机界面的动态显示、数据 存在很大的局限性,很难实现较为复杂的数据处理,于矿灯管理系统中的相应的类,是有层次化结构的 功,达到了良好的效果。
某个特定类。
参考文献: 〔1〕李建华.RS 232和调制解调高级通信编程〔M〕.北京:人民邮4结语 电出版社,2001. 〔2〕张勇.C/C++语言硬件程序设计〔M〕.西安:西安电子科技大 采用c++语言和嵌入式软件特点相结合,在综 学出版社,2003.合应用如多级抽象类定义,实体生成类,指针隐蔽等 〔3〕陈邦嫒.射频通信电路〔M〕.北京:科学出版社,2005.基于C++的程序设计基本技法的基础上,对对象进 作者简介:叶忠松(1980一),男,工程师。
2003年毕业于上海交通行抽象描述,隐藏具体的实现细节,使程序结构易于 大学,现任电光防爆科技(上海)有限公司总经理,发表文章2篇。
(收稿13期:2009—12—09;责任编辑:姚克)扩充,缩短了开发周期。
本软件在矿灯上已试用成 万 方数据 ·58· 煤矿机电 2010年第2期而Matlab的界面开发能力差,
代码运行效率低。
因 有效率高、封装性好、继承性高等优点。
此,本文采用VC++6.0作为串口编程工具。
它具 图1系统硬件结构框图 上位机和CAN总线连接的硬件部分采用广州 m_connect=0: m_callnum=0;周立功单片机发展有限公司开发的USBCAN II型智 m_devtype=VCI_USBCAN II;能接口卡。
其USB端直接连接到PC机上,CAN端 }通过自带的数据线与CAN总线连接,下位机直接挂 DWORD一.。
stdcall VCI—InitCAN(DWORD DeviceType,接在CAN总线上,从而实现上位机和下位机之间的 DWORD DeviceInd。
DWORD CANInd,PVCI—INrr—CONFIG数据通信H^】。
pL,fitConfig); (1)上位机通信软件设计 b.获取CAN状态 上位机的通信软件编程部分通过vc++6.0 typedef struct—.VCI CAN_STATUS配合USBCAN II智能接口卡的通信协议实现。
首先 {要分别对各自的串口进行初始化,确定串口的工作 UCHAR ErrIntermpt; UCHAR regMode;方式、波特率、数据格式等。
本系统中约定:波特率 UCHAR regStatus;为9 600 bit/s,数据格式为8个数据位、1个停止位、 UCHAR陀吕ALCapture;无奇偶校验位。
实现过程如下: UCHAR mgECCapture; 1)设置对话框初始化CAN参数(包括验收码、 UCHAR regEWLimit;屏蔽码、滤波方式、模式、定时器等),利用“Class- UCHAR regRECounter;Wizard”菜单项为对话框创建基于CDialog的派生类 UCHAR regTECounter;“CCansettingDlg”,并利用“ClassWizard”中的“Mem- DWORD Reserved;ber Variables”为界面中的各参数控件设置关联变 l VCI_CAN—STATUS,}PvCI_CAN—STATUS;量。
同时,还需添加按钮(包括连接、启动CAN、复 C.连接CAN void CCansettingDlg::OnButtonConnect()//为连接按钮添加位CAN等),并为各按钮添加响应函数,使得点击连 响应函数接时能将各初始化参数送入电脑,并与CAN总线连 {接;点击启动CAN按钮时能将CAN总线的信号读 if(m connect==I、入电脑。
{ 2)在VC++6.O环境下利用MFC编写程序接 re_connect=0; 口函数。
程序员通过这些函数配合通信硬件接口的 Sleep(500);相关协议,实现上位机与下位机的通信。
主要操作 GetDlghem(IDC—BUTI’ON—CONNECT)->¥etWm—步骤如下: dowText(“连接”);//获得指向IDC—BuTroN—CONNECT的 a.打开设备并初始化CAN 指针并显示连接#include“CamettingDlg.h” VCl_CloseDeviee(m_devtype,m._devind);CCansettingDlg::CCansettingDlg(CWnd‘pParent//,t=NULL return; ·/) } :CDialog(CCansettingDlg::IDD,pParent) d.启动CAN { void CCansettingDlg::OnButtonStartcan() 万 方数据2010年第2期 煤矿机电 ·59·{ 库EHcontrol if(re connect==01 CString sir; return; str.Format(~T(“insert into supportl(idl,id2)values if(VCI』aItoⅢ(m de哪,m_devind,nl_calmum)==1) (%s,%S,)”)act〔0〕,act〔1〕);//将数组act中的数据送 {……} 入表supportl中的相关字段m_DB.ExecuteSQL(str) else 综合使用上述语句,便可以将CAN总线的数据 { 读人数据库,实现串口通信。
CString sir; (2)下位机通信软件设计 sir=“启动失败”; 下位机采用MCS-51系列的8051单机。
下位 } 机的串行通信程序设计采用中断法来进行数据的收} 发。
其串行数据的发送只要简单地从累加器向串口 e.从指定的设备接收数据并放入数据库(期间需要创 缓冲寄存器传送数据即可;其串行数据的接收只要建一个线程,将在后面介绍)UINT CCansettingDlg::ReceiveThread(void+param) 从串口缓冲寄存器向累加器传送数据即可。
实际应{ 用中,单片机通信程序一般采用中断方式与PC机 CCansettingDlg木dig 2(CCansettingDlg木)param; 进行通信,PC机作为主控方。
当单片机收到Pc机 CDatabase m_DB; 发送来的地址信号时,便转入相应的中断服务子程 m_DB.OpenEx(T(“DSN=EHcontrol”)); 序,和PC机进行通信。
发送中断服务子程序同理, {for(imj=0;j<frameinfo〔i〕.DataLen;j++) 不再赘述口J。
{ tmpstr.Format(“%02x”,frameinfo〔i〕.Data〔j〕); 3结语 actE j〕=tmpstr;//将数据传入数组,以导人数据库 利用VisualC++6.0的强大功能,在Windows str+=tmpstr; } 环境下开发了上位机的串行通信软件。
该软件界面 CString s乜: 友好、操作简便,提供了面向对象的程序设计功 str.Format(T(“insert into supportl(idl,id2,支架 能:6’7|。
动作)val岫(%s,%s,%s)”),act〔O〕,act〔1〕,act〔3〕); 参考文献: 〔1〕张伟.液压支架与机采设备的约束关系及其控制模型〔J〕.中 m_DB.ExecuteSQL(str); 国矿业大学学报,2005,34(3). } 〔2〕 张伟,张平,韩玉璞.多节点互控型计算机分布式控制系统的 l屯turn O: 设计〔J〕.计算机测量与控制.2002,10(4).} 〔3〕ZHANG Wei,HAN Xiao,SUN Jing-jing.Mathematical Model of 3)创建一个线程,即为后台运行单独开辟一个 Electro—hydraulic Powered Support Control System at a Plough线程,从数据库读出数据送入主程序界面;并将从 Mining Face〔J】.JOuRNAL OF CHINA UNIVEBSITY OF MIN—CAN总线读入的数据送入数据库,以保证CAN总 ING&TECHNOLOGY.2008(3)线的数据能及时保存到数据库。
实现过程如下: 〔4〕 韩萧,许小荣,武瑞峰.刨煤机工作面液压支架电液控制系统 〔J〕.微计算机信息,2004(25). static UINT ReceiveThread(void。
param);//创建一个 〔5〕 曲贵波,乔爽.Pc机与单片机串行通信的实现方法探讨〔J〕.线程 旅Be百n1捌(ReceiveThread,this);//调用此函数可 交通科技与经济,2005(3). 〔6〕周韧研,商斌.VC++串13通信开发入门与编程实践〔M〕.北以打开线程 京:电子工业出版社。
2009. 为该线程添加响应函数,并设置相关变量,通过 〔7〕宋坤,刘锐宁,李伟明.VC++开发技术大全〔M〕.北京:人民编程,一旦CAN总线上有数据,便可触发该线程,将 邮电出版社,2007.数据送入相关变量。
将读入的数据写入数据库,方 作者简介:张伟(1956一),男,副教授。
毕业于原四川矿业学院(硕 士学位),现主要从事矿山机械、机电一体化及计算机控制技术方面便查询。
运用SQL语句可以实现,语句如下: 的设计和研究,发表
论文多篇。
CDatabaae m_DB; (收稿日期:2009—11—13;责任编辑:陶驰东) m_DB.OpenEx(J(“DSN:EHcontrol”));//打开数据 万 方数据基于VC 6.0的串口通信程序设计作者: 张伟, 吴和金, 史学栋, 郭明彦, ZHANG Wei, WU He jin, SHI Xue-dong, GUO Ming-yan作者单位: 中国矿业大学北京机电与信息工程学院北京100083刊名: 煤矿机电英文刊名: COLLIERY MECHANICAL amp ELECTRICAL TECHNOLOGY年,卷期: 20102参考文献7条1.宋坤刘锐宁李伟明 VC 开发技术大全 20072.周韧研商斌 VC 串口通信开发入门与编程实践 20093.曲贵波乔爽 PC机与单片机串行通信的.
上一篇:
基于LabVIEW的步进电机控制系统设计
下一篇:
台湾问题——一种建构主义的分析(上)