通信程序范文(精选8篇)
通信程序 第1篇
一、申请进网质量认证程序
1.申请电信设备进网许可证必须满足以下条件:
1.1 符合国家产业政策及有关规定;
1.2 符合国家标准和行业技术标准;
1.3 具有完善的质量保证体系。
2.生产企业申请进网许可证时需向进网受理部门提供以下申请材料;
2.1 电信设备进网许可证申请表
(申请表可到小西天受理中心领取)
2.2 企业法人营业执照复印件(境外企业可提供其在中国的分支机构或代理人的有效执照);
2.3 有关允许内销的政府批文(仅对境内的中外合资或外商独资企业);
2.4 生产企业介绍(企业概况、生产条件、仪表设备配备、质量保证体系和售后服务措施);
2.5 授权代理证明(当境外生产企业委托境内代理人申请进网许可证时);
2.6 生产企业法人代表签字的保证书;
2.7 设备介绍(申请进网产品的功能、性能指标、总体设计和原理框图等)
2.8 设备外观和内部结构照片(申请进网产品的外观及内部结构)
2.9 用户操作手册;
2.10 设备在境外的检验报告和商用情况(仅对境外企业)
3.生产企业向进网受理中心提交进网申请材料。
4.进网受理中心在五日内对申请材料进行初审,对符合要求的通知抽样检验和对生产企业质量保证体系审查。
5.质量保证体系审查人员接到通知后依据相关规定对生产企业的质量保证体系进行审查,审查结果报进网受理中心;
6.检验机构接到进网受理中心下达的抽样检验通知后,依据相关标准进行抽样、检验,完成检验后并将检验报告一式两份交到进网受理中心。
7.进网受理中心将申请材料、检验报告和质量体系审查报告报信息产业部电信管理局进行全面申核,对符合条件的颁发进网许可证书。
8.生产企业到进网受理中心领取检验报告和进网许可证书以及进网标志。
二、电源产品进网检验依据的标准及主要技术指标
1.交流稳压器
邮部[1996]935号:
通信用交流稳压器进网质量认证检验实施细则
JB/T7620-1994《补偿式交流稳压器》主要技术指标;
交流输入电压允许波动范围>50kvA不小于±20%≤50kVA不小于
输出电压波形相对谐波含量:输出对输入的增量≤1%
输出电压的不对称度:输出对输入的增量≤1%。
效率:
输出容量≤50KVA≥94%
输出容量>50~100kVAk≥96%。
输出容量>100~1000KVA≥97%。
稳压精度:<±3%或<±5%
稳定时间:输入电压相对于额定
值阶跃变化10%时<1.5s。
2.交流和直流配电设备:
邮部[1996]935号:
《通信用交流配电设备进网质量认证检验实施细则》
UD/T585-92《通信用配电设备》
直流设备主要技术指标:
同一种电压同型号的直流配电屏应能并联使用
可接入二组蓄电池。蓄电池充电为带负荷充电方式,交流电恢复后控制蓄电池充电全过程。负荷分路及容量根据系统要求确定。
在低阻配电系统中,直流屏带额定负荷时,屏内放电回路电压降小于或等于500mv。应有过压,过流保护和输出端浪涌吸收装置。
可提供本地和远端监控功能的通信接口交流设备主要技术指标:
用作交流电源的转换和配电用。输入交流为单相三线220V,50HZ/三相五线380V,50HZ。对交流电源有自动转换要求的电路必须有可靠的电气联锁和机械联锁。
对有照明分路的配电屏应有保证交流照明分路和直流事故照
明自动转换装置和分路。
应有过压、过流和防雷保扩装置。
可提供本地和远端监控功能的通信接口。
3.高频开关电源设备
邮部[1996]935号
《通信用高频开关电源设备进网质量认证检验实施细则》
YD/T731-94《通信用高频开关整流器》
主要技术指标:
并机运行均分负载性能(≥15000W)≤±5%额定电流值1500W)≤±10%
额定电流值输入电压变化范围:
220V(单相)变化范围不小于187~242V
380V(三相)变化范围不小于323~418V
效率:
≥500V时(三相)≥87%;(单相≥87%
<1500W时(三相)≥87%;(单相)≥83%
功率因数:
≥1500w时(三相)≥0.92(单相)≥0.92
<1500W时(三相)≥0.92;(单相)≥0.85
电话稳重杂音电压:300-340Hz≤200mV
峰一峰值杂音电压:(0-20MHZ≤200mV
宽频杂音电压:3.4-150KHz≤50mV
0.15-30MHz≤20mV
离散杂音电压:3.4-150kHZ≤5mV
150-200kHz≤3mV
2000-50kHz≤2mV
0.5-30KHZ≤1mV
稳压精度:(48V)±0.6%(24V)±1%
负载效应恢复时间:不大于200ps,超调量不得超过直流输出电压整定值±5%。开关机过冲幅度:量大峰值不超过直流输出整定值的±10%
具有系统监控单元,能提供满足三遥要求的本地和远地用户通信接口。
具有过压、过流、欠压、欠流、防雷等保护及本地和远地告警。
4.直流一直流模块电源
邮部[1996]935号:
《通信用直流一直流模块电源进网质量认证检验实施细则》
YD/T733-94《通信用直流-直流模块电源》
YD/T732-94《通信用直流-直流变换器检验方法》
主要技术指标:
输入直流电压变化范围
输入12V允许变化范围9~15V
输入24V允许变化范围19~30V
输入48V允许变化范围38~60V
稳压精度:不超过直流输出电压
整定值的±1%
源效应(电压调整率):不超过直流输出电压整定值的±0.2%
负载效应(负载调整率):不超过直流输出电压整定值的±0.5%
瞬态特性(动态响应)、输出杂音电压技术指标
5.直流一直流变换设备
邮部[1996]935号:
《通信用直流一直流变换设备进网质量认证检验实施细则》
YD/T637-93
《通信用直流一直流变换器》
YD/T732-94
《通信用直流一直流变换器检验方法》主要技术指标:
输入直流电压变化范围:
输入60V允许变化范围56~66V
输入48V允许变化范围41~57V
输入24V允许变化范围19~29V
稳压精度:不超过直流输出电压整定值的±1%
直流输出电压调节范围:标称值的±10%
反灌杂音电流:直流电流中宽频杂音分量(方均根值)应小于直流电流的1%效率、瞬态特性(动态响应)、输出杂音电压技术指标。
6.逆变器设备
邮部[1996]935号:
《通信用逆变设备进网质量认证检验实施细则》
YD/T777-1995《通信用逆变设备》
主要技术指标:
稳压精度:不大于交流输出电压±5%
交流输出电压的相对谐波含量:不大于6%
三相输出电压的不对称度:(平衡负载下)≤5%输出频率的稳定精度:≤2%输入端反灌相对宽频杂音电流:<10%
输入端反灌相对电话衡重杂音电流:不大于输入电流的2%
额定输出效率:<1KVA≥70%;≥1KVA≥80%。
7.不间断电源(UPS)
邮部[1996]935号:
《通信用交流不间断电源(UPS)设备进网质量认证检验实施细则》
GB7260-87《不间断电源设备》
GB/T14715-93《信息技术设备不间断电源通用技术条件》主要技术指标:
电压额定值:220V/380VAC(主输入电源为三相三线,旁路输入电源为三相四线)频率额定值:50HZ
电压允许变动范围:-15%~10%
频率允许变动范围:±4%
功率因数:>0.8(在额定线性负载下)
电压谐波失直度:≤5%
功率软启动:101~5s内爬升到额定功率
通信程序 第2篇
一、实验目的
UART 串行通信接口技术应用
二、实验实现的功能
用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。
三、系统硬件设计
实验所需硬件:电脑一台;
开发板一块;
串口通信线一根; USB线一根;
四、系统软件设计
实验所需软件:编译软件:keil uvision3;
程序下载软件:STC_ISP_V480; 试验程序:
#include
L1=1;L2=1;L3=1;
H1=0;if(L1==0)
return 1;else if(L2==0)
return 2;else if(L3==0)
return 3;
H1=1;H2=0;if(L1==0)
return 4;else if(L2==0)
return 5;else if(L3==0)
return 6;H2=1;return 0;
} unsigned char keyscan(){ static unsigned int ct=0;static unsigned char lastkey=0;unsigned char key;key=getkey();
if(key==lastkey){
ct++;
if(ct==900)
{
ct=0;
lastkey=0;
return key;
VC++中串行通信程序设计 第3篇
在很多情况下,远程监控和自动化领域系统常见的通信编程多为串口通信编程。计算机串口编程在通信软件中有着十分广泛的应用。在Visual C++、Delphi、Visual Basis、TC、BC等开发工具之间,Visual C++由于功能强大和应用灵活,同时也得到Miscrosoft系统的最好支持,因此涉及硬件操作的通信编程,一般采用Visual C++。
在VC++中有两种方法可以进行串口通讯。一种是直接用VC++访问串口。另一种是利用Microsoft公司提供的ActiveX控件Microsoft Communications Control。本文将主要介绍第二种方法。
1 利用ActiveX控件 Microsoft Communications Control访问串口
ActiveX是Windows下进行应用程序开发的崭新技术,它的核心内容是组件对象模型COM(Component Object Model)。ActiveX控件包括一系列的属性、方法和事件,使用ActiveX控件的应用程序和ActiveX控件之间的工作方式是客户/服务器方式,即应用程序通过ActiveX控件提供的接口来访问ActiveX控件的功能。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询方法。
a) 事件驱动法
事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm控件的OnComm事件捕获并处理这些通信事件。而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。
b) 查询法
这种方法适合于较小的应用程序。在这种情况下,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent属性以检查执行结果或者检查某一事件是否发生。如果应用程序较小,并且是自成一体,这种方法可能是更可取的。
MSComm控件有许多重要的属性,其中首要的几个如表1所示。
2 编程实现
打开Visual C++6.0集成开发环境,创建一个基于对话框的MFC应用程序项目,命名为MyCOM,记住在设置项目选项时必须选上ActiveX Controls,其他的按照缺省设置。完成这一步后,选择菜单项Project/Add to Project/Components and Controls……,将弹出一个对话框以选择系统中已有的组件(Components)和控件(Controls)。选择Registered ActiveX Controls文件夹下的Microsoft Communications Control项并按下Insert按钮,将MSComm控件支持加入到本项目中。这时将生成一个名为CMSComm的C++类,并且在对话框编辑器里的工具栏将出现MSComm控件图标。CMSComm类是由MSComm控件导出的一系列接口函数构成的,利用它将可以访问MSComm控件的属性(Property)和方法(Method)。
我们假设先利用计算机COM1口上,那么打开资源编辑器,在程序主对话框(资源ID为IDD-MYCOM-DIALOG)上面放置一个MSComm控件,并用Class Wizard为该对话框类添加对应该控件的成员变量m-wnd COM1。我们假设外接口与计算机进行串行通信时采用7个数据位、1个停止位、偶校验方式,并且波特率为2400/4800/9600可选,这里采用9600波特率,在对话框编辑器中设置MSComm控件的属性如表2所示:
其他选项按照缺省设置或者根据具体设备的要求进行设置。如果需要通过多个串行口与多台设备通信,那么每一个串行口对应于一个单独的MSComm控件。串行口的设置参数既可以在对话框编辑器里设定,也可以在程序代码中通过调用CMSComm类的成员函数设定。例如,我们可以在MyCOMDlg类的OnInitDialog成员函数中初始化MSComm控件的参数,代码如下:
BOOL CMyCOMDlg::OnInitDialog()
{
CDialog:OnInitDialog();
//……
//TODO:Add extra initialization here
m-wndCOM1.SetCommPort(1);
m-wndCOM1.SetSettings(“9600,e,7,1”);
m-wndCOM1.SetRThreshold(1);
m-wndCOM1.SetSThreshold(0);
m-wndCOM1.SetInputLen(1);
m-wndCOM1.SetPortOpen(TRUE);//打开通信口
return TRUE;
//return TRUE unless you set the focus to a control
}
接下来为程序主对话框建立响应MSComm事件的处理函数,每当MSComm控件触发事件时该函数将被调用。在对话框编辑器中用鼠标左键双击MSComm控件图标,在弹出的对话框中输入函数名OnCommCOM1,该事件处理函数的原型定义和消息映射入口将自动被添加到CMyCOMDlg类中,我们所要做的只是在OnCommCOM1函数中给出具体的数据处理程序段,代码示例如下:
void CMyCOMDlg::OnCommCom1()
{
//TODO:Add your control notification handler code here
CString sInput;
switch(m-wndCOM1.GetCommEvent())
{
case 1: //comEvSend事件
/*如有数据要发送,可采用以下代码:
VARIANT varOut;
VariantInit(&varOut);
varOut.vt=VT-BSTR;
USES-CONVERSION;
varOut.bstrVal=SysAllocString(T2OLE)(“My data”));
if(varOut.bstrVal)
{
m-wndCOM1.SetOutput(varOut);
SysFreeString(varOut.bstrVal);
}
*/
break;
case 2://comEvReceiv事件,有数据到达
sInput=m-wndCOM1.GetInput().bstrVal;
//对接收到的数据做必要处理
break;
case 1009://comEventRxParity事件,奇偶校验错误
//错误处理代码
break;
default:
break;
}
在这里必须注意的一点是在发送字符数据时,必须向MSComm控件提供Unicode格式的字符串,在以上代码中用到了USES_CONVERSION和T2OLE宏进行ANSI字符串到Unicode字符串的转换,具体内容可参考Visual C++6.0所带的MSDN文档,在此不加赘述。
3 小结
本文对Windows下在Visual C++6.0程序中的串行通信,着重讨论了使用MSComm串行通信ActiveX控件编程的方法做了探讨,显示了ActiveX技术的强大功能、充分的灵活性和易用性,具有一定的实践意义。
参考文献
[1]李现勇.Visual C++串口通信技术与工程实践[M].北京:人民邮电出版社,2002.
[2]张曜,郭立山,吴天.C函数实用手册[M].北京:冶金工业出版社,2003.
[3](美)Kate Gregory.Visual C++5开发使用手册[M].康博创作室,译.北京:机械工业出版社,1998.
数控铣床程序的通信传输 第4篇
【关键词】数控铣床;通信传输;生产线
一、我国数控铣床程序通讯传输技术的革新
(一)数控铣床技术的发展大力促进工业生产效率提高
我国改革开放的总设计师邓小平说:“科学技术是第一生产力”,随着当今的科学技术水平发展程度越来越高,科技的革新给工业生产力的提高起到了良好的促进作用,各种先进的生产技术通过不断的调试,不断的由技术理论投入到实际工业生产活动之中,大大的提高了生产线的现代化水平,继而推动了生产力水平的提高。
(二)推动数控铣床程序通讯技术智能化发展
目前,国内的生产线技术中数控铣床技术的运用较为普遍。数控铣床是一种智能化的生产线设备,它综合了机械制造、电气原理和计算机数控等多种技术,大大的提高了生产工艺的自动化水平,在很大程度上解放了生产力,大量的生产步骤都有机器来操作,在确保刀具切割精准度的同时,又能够很好的保证生产活动的持续性。一条生产线的成本高昂,从第一个生产环节开始,需要操作员能够保证物料及时供应,为下一个生产岗位提供初加工的产品物料,在下一个生产工序中,机械设备的机械臂以每个操作动作0.06S每下的较高速度对产品进行加工,在这个时候,要求生产线的品质管理人员及时的对机械臂的操作展开监管,如果机械臂发生故障,会导致操作失误,这样,在短时间之内,就会造成大量的“废板”产生,继而很大程度上造成物料的浪费。生产线的品质管理部门一定要注意维护数控铣床程序的通信传输畅通,定期检查程序中建模语言的正确性,保证刀具的切割力度适当和机械臂的操作方法准确无误。
二、做好数控铣床程序语言的编写工作
数控铣床程序在通信传输的过程中,广泛的使用仿真Modelica语言,保证工业生产参数的正确和通信传输活动的顺利进行。Modelica语言是一种由计算机C 语言演变而来的一种高级语言。它基于计算机的基本物理仿真语言,来进行数码编程活动,根据生产性上需要加工的产品类型不同,开发出各种语言。Modelica语言包含着大量复杂的物理数据信息,工作人员在进行Modelica语言编写时,必须要进行Dymola软件的操作, 通过对Dymola软件中的支Modelica语言编写,可以实现多领域的数据建模,满足不同产生的生产要求。在CMMSG操作技术中,PTH镀层穿孔对于机械臂刀具切割的操作精准度要求最高,在机械臂进行PTH操作时,数控铣床程序的各项操作数据必须完全符合操作需要,这样才能够使得机械臂在高速运转的过程中保持打孔的精准。在生产的过程中,表面印刷技术对于数控铣床程序的各项数据精准度要求也比较高,在数控程序的传输操作电子界面中,点击11Send 按钮,可以把计算机中的写定程序准确地传输到数控铣床中,在11Send 按钮操作出现故障时,生产线工作人员还可以点击ENTER键来完成数控资料的传输。
数控铣床程序在进行通讯传输活动时,一定要保证操作程序的完整性。数控铣床的内存比较小,大约只有61, 000,并且分存在三个区里,生产线数控机床在操作过程中,只要程序的字节数超过21, 000 的程序, 数控铣床就会因为内存过小的原因而出现操作故障。所以,操作员想要保证数控机床操作的稳定性,必须要采取一边生产一边进行数据传输的操作。
三、结束语
随着我国工业生产领域不断发展,人民群众对于各种商品的市场需求越来越大,以前的社会必要劳动力低的商品,已经逐渐满足不了人民群众日益增长的物质文化需求。市场需求的扩大很大程度上刺激了工业生产技术的提高,以前单一的生产线生产方法逐渐朝着结合综合机器、电力、数控等等多种生产要素的方向发展。在数控铣床程序的运用过程中,生产线涉及到的学科技术越来越多,因此,对于机电产品的设计要求和生产效率的要求越来越高,我们在大力发展数控铣床程序通信传输技术的时候,一定要注意生产方法的革新,用最先进的生产技术来指导生产活动,保证生产效率的稳步提高,继而达到满足人民群众日益增长的消费需求。
参考文献:
[1]郑龙.基于网络的数控机床在线加工远程控制系统的研究[D].沈阳理工大学,2010
[2]崔向群,丁广文,徐新平等.数控铣床可编程的零点偏移与比例系数指令的编程技巧[J].机床与液压,2010(16)
[3]雷涛.基于嵌入式Linux的数控系统研究[D].武汉理工大学,2010
基于DSP的网络通信程序设计 第5篇
1通信协议的制定
协议是用来管理通信的法规,是网络系统功能实现的基础。由于DSP可以实现对网卡的直接操作,对应于OSI网络模型,网卡包含了物理层和数据链路层的全部内容,因此,规定了数据链路层上数据帧封装格式,就可以为基于DSP的局域网络中任意站点之间的通信提供具体规范。因为以太网是当今最受欢迎的局域网之一,在以太网中,网卡用于实现802.3规程,其典型代表是Novell公司的NE2000和3COM公司的3C503等网卡,所以研究工作中的具体试验平台是以DSP为核心构成的以太局域网,主要用于语音的实时通信,所使用的网卡为Novell公司的NE2000网卡。NE2000网卡的基本组成请见参考文献[2],其核心器件是网络接口控制器(NIC)DP8390。该器件有三部分功能:第一是IEEE802.3MAC(媒体访问控制)子层协议逻辑,实现数据帧的封装和解封,CSMA/CA(带碰撞检测功能的载波侦听多址接入)协议以及CRC校验等功能;第二是寄存器堆,用户对NE2000网卡通信过程的控制主要通过对这些寄存器堆中各种命令寄存器编程实现;第三是对网卡上缓冲RAM的读写控制逻辑。DP8390发送和接收采用标准的IEEE802.3帧格式。IEEE802.3参考了以太网的协议和技术规范,但对数据包的基本结构进行了修改,主要是类型字段变成了长度字段。所以,以DSP为核心的局域网内通信数据包基本格式如图1所示。
DSP读出数据包和打包从目的地址开始。目的地址用来指明一个数据帧在网络中被传送的目的节点地址。NE2000支持3种目的地址:单地址、组地址及广播地址。单地址表示只有1个节点可以接收该帧信息;组地址表示最多可以有64个字节接收同一帧信息;而广播地址则表示它可以被同一网络中的所有节接收。源地址是发送帧节点的物理地址,它只能是单地址。目的地址和源地址指网卡的硬件地址,又称物理地址。
TCP IP网络通信程序设计 第6篇
本文介绍了TCP/IP网络应用程序的面向对象设计方法,并给出了用Visual C++4.2
中MFC在Windows 95环境下开发的程序实例。Sockets与Winsock 95
Winsock 95是在Unix Sockets及Windows Sockets基础上发展起来的。Sockets原
是BSD为了Unix支持互联网通信而设计的4.3BSD Unix版本中的API,它采用客户-服务器
模式的通信机制,使网络客户方和服务器方通过Sockets实现网络之间的联接和数据交
换;Win dows Sockets描述定义了一个Microsoft Windows的网络编程界面,它为
Windows TCP/IP 提供了一个BSD型套接字,除与4.3BSD Unix Sockets完全兼容外,还
包括一个扩充文件,通过一组附加的API实现Windows式(即事件驱动)的编程风格;而
Winsock 95则是在Microsoft Windows 95中进行网络应用程序设计的接口。Windows 95
在Internet支配域中的TCP /IP协议定义了Winsock 95网络编程规范,溶入了许多新特点。
MFC中提供了相应的CSock et类来实现网络通信。Sockets编程原理
Sockets同时支持数据流Sockets和数据报Sockets。
下面是利用Socket进行通信连接的过程框图。其中图1是面向连接的时序图,图2是
无连接的时序图。
图1
图2
由图可以看出,客户与服务器的关系是不对称的。对于TCP C/S,服务器首先启动,然后在某一时刻启动客户与服务器建立连接。服务器与客户开始都必须调用socket()
建立一个套接字socket,然后服务器调用bind()将套接字与一个本地网络地址捆扎在一
起,再调用listen()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长
度,之后服务器就可以调用accept()来接收客户连接。客户打开套接字之后,便可通过
调用connect()和服务器建立连接。连接建立之后,客户和服务器之间就可以通过连接
发送和接收数据。最后,待数据传送结束,双方调用closesocket()关闭套接字。对于
UDP C/S,客户并不与服务器建立一个连接,而仅仅给服务器发送一张包含服务器地址的数据报。相似地,服务器也不从客户端接收一个连接,只是调用函数recvfrom,等待
从客户端来的数据。依照recvfrom返回的协议地址以及数据报,服务器就可以给客户
送一个应答。Winsock 95编程方法
用Visual C++4.2以MFC在Windows 95中实现网络编程,主要就是利用CSocket类及
其如下相关成员函数:
(1)BOOL Create(UINT nSocketPort=0,intnSocketType=SOCK_STREAM,long lEvent=FD_READ|FD_WRITE|FD_OOD|FD_ACCEPT|FD_CONNECT|FD_CLOSE|,LPCTSTR|lpszSocket Address=NULL
该函数用来建立Socket。
(2)BOOL Bind(UINT nSocketPort,LPCTSTRlpszSocketAddess=NULL)该函数的作用是将Socket端口与网络地址连接起来。
(3)BOOL Listen(intnConnectionBacklog=5)
该函数的作用是等待Socket请求。
(4)Virtual BOOL
Accept(CAsyncSocket&rConnectedSocket,Socket,SOCKADDR*
lpSockAddr=NULL,int * lpSockAddrLen=NULL)
该函数的作用是取得队列上第一个连接请求并建立一个具有与Socket相同特性的套接字。
(5)BOOL Connect(LPCTSTR lpszHostAddress,UINTnHostPort)
该函数的作用是提出请求。其中,lpszHostAddress和nHostPort为接受请求进
程的网络地址和Socket端口号。
(6)virtual void Close()该函数的作用是关闭Socket。
使用以上类及成员函数,按照以下步骤,就可以设计出合适的通信程序: Server:Construct→Creat→Bind→Listen→Accept→Send→Close;
Client:Constuct→Creat→Connect→Receive→Close。程序实例
我们用Visual C++4.2中MFC在Windows 95环境下设计了一个daytime cliont程序,清单如下:
头文件HEAD.H内容:
#define IDM_STRAT 200
#define IDM_EDIT 200
classMainwnd:publicCFrameWnd
{public:Mainwnd();
afx_msgintOnCreat(LPCREATESTRUCT);
afx_msg void OnStart(void);
DECLARE_MESSAGE_MAP();
private:CstaticCSStatic;
CEditLineEdit;
CButtenStartButton;};
classPengApp:publicCWinApp
{public:BOOLInitInstance();}
源程序Client.CPP清单:
#include
#include
#include “head.h”
constintnPort=13;
PengApptheApp;
Main Wnd:MainWnd()
{if(!Create(NULL,“CommunicationProgram”,WS_OVERLAPPEDW INDOW,rectDefaul t))AfxAbort();}
intMainwnd:OnCreate(LPCREATESTRUCT)
{Rectrect;SetRect(& rect,80,50,160,70);
Create(“Host Name:”,WS_CHILD|WS_VISIBLE|SS_LEFT,rect,thi s);
SetRect(& rect,60,80,180,100);
LineEdit.Create(WS_CHILD|WS_VISIBLE|WS_DLGFRAME|ES_LEFT, rect,this,IDM_ED IT);
SetRect(&rect,100,120,140,140);
StartButton,Create(“start”,WS_CHILD|VS_VISIBLE|BS_PUSHBU TTON,rect,this,I DM_START);
return 0;}
BEGIN_MESSAGE_MAP(Main Wnd,CFrameWnd)
ON_WM_CREATE()
ON_BN_CLICKED(IDM_START,OnStart)
END_MESSAGE_MAP()
BOOL ControlApp:InitInstance()
{m_pMainWnd=new Main Wnd();
m_pMainWnd→ShowWindow(m_nCmdShow);
m_pMainWnd→UpdateWindow();
return;}
Void Main Wnd:Onstart(void)
{CSocketTimeClient;
if(!AfxSocketInit())MessageBox(“WindowsSocket initialfailed!”,“Receive”,MB_ICONSTOP);
if(!TimeClient.Create())MessageBox(“ReceiveSocketcrea te failed”,“Receive”,MB_I(ON)STOP);
elseTimeClient.connect(strAddr,nPort);
TimeClient.ReceiveFrom(csReceiveText,csCounts,LineEdit.G etWinText,nPort)
MessageBox(TimeClient.csReceiveText);
通信程序 第7篇
摘要:介绍了分布式控制系统中上位PC机与下位单片机异步串行通信的通信协议;同时介绍了在VC++6.0环境下用PComm编写的PC机通信程序来实现上位机和下位机异步串行通信的方法,给出了PComm编程实例和下位机程序模块流程图。关键词:分布式控制系统;异步;串行通信;PComm
在由一台PC机(上位机)和多台单片机(下位机)构成的分布式控制系统中,单片机主要负责实时数据采集,并将初步处理后的数据通过串行口传送给PC机?以便由PC机串行口的命令对单片机进行控制,同时通过打印机或显示器向用户随时提供各种统计报表和整个控制过程的具体数据。在这样的分布式控制系统中,单片机与微机之间的多路通信是整个系统的关键,本文将介绍在提高通信的准确性、可靠性和效率的前提下,用PComm开发PC机与单片机的通信程序的解决方案。
1通信协议
为了保证可靠的通信,必须有一套完善的通信协议。分布式控制系统中的每台单片机均有唯一的番号。通信开始时,先由PC机呼叫被叫单片机的番号,单片机在接收到微机的呼叫后,首先判断是不是自己的番号,如果是,则发送呼叫应答信号,否则不予理睬。微机在接收到呼叫应答信号之后,将向单片机发出通信命令字符串。以下是上位PC机协议的格式:
单片机号单片机号命令码命令码停止标志
其中,单片机号代表现场第几台单片机,占用1个字节,发送两次的目的是为了防止干扰;命令码则代表上位机向下位机发布的工作命令,它也占用1个字节,发送两次的目的也是为了防止干扰。而停止标志则表明一次命令发送完毕。使用时可依据该标志判断上位机的命令是否发送完毕。
下位机协议格式如下:
数据块校验位
该格式中,数据块为下位机上传到上位PC机的数据。校验位则用于PC机对收到的数据进行奇偶校验(占1个字节)。校验正确后,可将数据写入内存,否则发出数据传输错误信息,以要求单片机重新传输数据。
另外,作为一个完整的通信协议,只有上述约定还不够,还必须在发送和接收数据的时间间隔上加以限制。否则,很可能由于某些原因而造成无限制的等待对方应答,使整个系统处于工作不正常状态,或者延误其它动作的处理。具体时间限制可根据通信内容、CPU处理速度,再加上适当的余量来确定。
2单片机通信程序设计
设计单片机通信程序时,必须充分发挥单片机的效率。由于单片机多应用于实时性较强的控制场合,因此,应将及时响应和控制对象的动作放在优先考虑的位置,以尽量减少通信等辅助性操作所占用的CPU时间。基于上述考虑,笔者在设计单片机通信程序时,将通信程序分为接收中断处理程序、发送中断处理程序和通信处理程序3部分,并将这3部分程序巧妙地进行组合,从而构成整个单片机的通信程序。
2.1接收中断处理程序
接收中断处理程序主要负责接收微机发送到单片机接收缓冲区(不对数据进行处理,以减少中断占用的时间)的数据,当接收到规定的`字符数或在一定等待时间内无后续数据之后,置接收完毕标志,以表明接收缓冲区中有待处理的数据并请求通信处理程序对其进行处理。其流程图如图1所示。
2.2发送中断处理程序
发送中断处理程序主要负责向微机发送数据,发送中断一般处于禁止状态,只有在通信处理程序将需要发送的数据写入单片机的发送缓冲区,并将发送中断置为允许方式后,发送中断才开始工作,并将缓冲区数据逐一发送给微机。当发送完指定长度的数据后(发送缓冲区为空),发送中断处理程序将发送中断置为禁止(关闭)状态,直到通信处理程序将其再一次开放。其流程如图2所示。
2.3通信处理程序
考虑到尽量减少通信中断程序所占用的CPU时间,通信处理程序被放在普通主循环中调用。只有在接收到上位机送来的一串数据,且接收完毕标志为“ON”时,才能真正进行处理,否则不进行处理。这样就可利用送信后等待微机回答的时间进行别的处理,从而消除了空等待时间,提高了CPU的利用率。通信处理程序可根据通信处理状态的不同来分别执行不同的路径。在进入相应路径后,首先对接收缓冲区的内容进行正确性检查,检查正确后再根据通信要求或协议规定对缓冲区的内容进行处理(包括内存的写入和读出),同时重新组织数据到发送缓冲区以向微机发送数据,最后退出通信处理程序以执行其它的程序。待接收中断程序重新接收到数据并将接收完标志置为“ON”后,可重新进入通信处理程序进行处理。
3PC机通信程序设计
在VC++6.0环境下,利用PC机串口进行通信的常用方法有两种?第一是调用WindowsAPI?Appli-cationProgramInterface?函数;第二是使用ActiveX的MSComm控件。第一种方法需声明及调用许多API函数,十分烦琐。而第二种方法是将API函数封装起来,这种方法虽较为简便,但不能满足复杂情况下的通信要求。本文将介绍另外一种用PComm处理PC机的串口通信方法。
PComm是一种用于处理多进程/多线程的串口通信软件开发工具,它提供了许多基于API函数的命令集来处理串口通信,可以在VisualC++、VisualBasic、Delphi5.0等多种开发工具下使用,且具有传输速度快、使用灵活方便等特点,能够满足复杂情况下的串口通信要求。
3.1Pcomm的主要命令码
PComm的主要命令码有以下几种:
●sioopen(port);
用于设置并打开串口,其中port的1、2、3、4分别代表COM1、COM2、COM3、COM4。当返回值为0时,表示串口已经打开,否则为串口打开出错。
●sioclose(port);
关闭串口,当返回值为0时,表示串口已经关闭,否则为串口关闭出错。
●sioioctl(port?baud?mode);
用于设置串口波特率、校验位、数据位、停止位等参数。
●siogetch();
从串口输入缓冲区读出一个字符,返回值为0表示已收到数据。
●sio-read(port?buf?len);
用于从串口输入缓冲区读出一串字符,buf代表字符串数组len代表数组长度,返回值为0表示未收到字符,大于0代表收到字符的个数。
●sio-SetReadTimeouts?port?TotalTimeouts(Inter-valTimeouts);
在设定的等待时间内连续读串口输入缓冲区,TotalTimeouts代表设定的等待时间,IntervalTimeouts代表每次读出的间隔时间。
●sio-flush(port?func);
用于清空缓冲区。当func为0时清空输入缓冲区,为1时清空输出缓冲区,为2时清空输入输出缓冲区。
●sio-putch(port?term);
用于向串口缓冲区发送一个字符,返回值为0时表示发送正确,否则表示发送错误。
●sio-write(port?buf?len);
用于从串口缓冲区发送一串字符,buf代表字符串数组,len代表数组长度。
3.2实现过程
在用Pcomm处理PC机的串口通信时,其实现过程如下:
(1)启动VC++6.0,新建一个基于对话框的应用程序TxRx。同时增加静态文本、编辑框和按钮控件,并为它们添加相应的变量。其属性见表1。
表1TxRx应用程序的属性
控件ID变量名类型按钮IDC_TRSMITT发送按钮EditIDC_TXDATAM_TxDataCstringEditIDC_RXDATAM_RxDataCstring
(2)将Pcomm.h和Pcomm.lib加入到工程中,并在TxRxDlg.cpp文件中加入#include“Pcomm.h”头文件,此后便可调用其提供的通信命令集。
(3)在TxRxDlg.cpp文件中添加有关程序代码,也就是在OnInitiDialog??函数中的TODO语句后加入以下代码:
//TODO?Addextrainitializationhere
intret?port=1?
ret=sioopen?port??//打开串口1
sioDTR?port?0??//置DTR为低电平
sioioctl?port?B19200?PNONE|BIT8|STOP1??//设置波特率为19200,8位数据位,
1位停止位,无校验位。
3.3数据通信
下面举例说明PC机如何通过串口向单片机发送并接收数据。
voidCTXRXDlg??SendRecv??//收发数据子函数
{
while?1?
{
intret1?
sioflush?port?2;//清空串口输入输出缓冲区
sio-write(port,1,5);
向串口缓冲区发送5个字符
sio-SetReadTimeouts(port,40,1);
//在40ms内每隔1ms读一次串口
ret1=sio-read(port,RecvBuf,1);
if(ret1>0)
{
sio-close(port);
break;
}
//若收到数据,关闭串口,跳出循环
else;
//若未收到数据,对串口再一次发数据并再次查询接收。
}
}
4结束语
本文给出了分布式控制系统中上位PC机与下位单片机之间进行异步串行通信的解决方案。此方案在实际运行过程中,运行稳定,通信性能良好,从而较好地解决了上位机与下位机之间的通信问题。
通信程序 第8篇
蓝牙 (Bluetooth) 是一种支持设备短距离通信的无线电技术, 能在包括移动电话、PDA、无线耳机、笔记本电脑以及相关外设等众多设备之间进行无线信息交换。蓝牙采用分散式网络结构以及快跳频和短包技术, 支持点对点和点对多点通信, 工作在全球通用的2.4GHz ISM (即工业、 科学、医 学 )频段, 其数据速率为1Mb/s, 采用时分双工传输方案实现全双工传输, 使用IEEE802.15协议。根据发射输出电平功率不同,蓝牙传输有3种距离等级: Class1为100m左右; Class2约为10m; Class3约为2-3m。
接下来将通过开发一个程序实例, 讨论在Windows系统下, 两台PC机通过蓝牙进行文本信息收发和文件传输的通信程序设计方法。程序 的开发运 行环境为 : VS2008、WindowXP SP3、蓝牙适配器。
2 蓝牙协议栈
协议栈是指一组协议的集合, 蓝牙协议栈是SIG (SpeciaInterest Group) 定义的一组协议的规范 , 目标是允许遵循规范的蓝牙应用能够进行相互间操作。蓝牙协议栈如图1所示。
目前在Windows平台上实现的蓝牙协议栈主要如下:
( 1) Widcomm: 第一个Windows上的协议 栈 , 由Widcomm公司开发 , 也就是现在的Broadcom。
(2) Blue Soleil: 由IVT公司开发 , 可用于桌面和嵌入式系统。
(3) Microsoft Bluetooth Stack: 由微软公司开发 , 在Windows XP SP2及以上版本中内建的协议栈。
上面这些协议栈都提供了SDK开发包, 开发者可以使用开发包提供的API开发自己的蓝牙应用。但是这些协议栈之间存在兼容性问题, 开发者必须针对具体的协议栈进行开发。由于微软的蓝牙协议栈已经内建在系统中, 所以一般选择Microsoft Bluetooth Stack来进行开发。开发者可以使用微软SDK中的Microsoft Bluetooth API, 也可以使用Win Sock, 二者都能实现蓝牙设备的查找、服务的发现、配对等。由于大部分蓝牙设备都提供虚拟串口服务, 所以可以使用系统中的虚拟串口进行数据通信, 也可以使用网络编程、服务器监听或客户端连接的方式来进行数据通信。
在VS2008中包含了 开发蓝牙 应用的SDK, 但是在VS2008以前的版本中 , 如VS2005、VC++6.0等 , 没有包含蓝牙SDK, 需要安装微软提供的Platform SDK。对于VC++6.0,最后一个 受支持的Platform SDK是2003年2月版。对 于VS2005, 可以安装Windows Server 2003 R2 Platform SDK, 其完整的文件名是5.2.3790.2075.51.Platform SDK_Svr2003R2_rtmimg, 文件大小是409MB左右 , 可以将文件名后缀img直接改成iso。
3 蓝牙通信程序设计
程序使用网络编程的方式, 采用服务器/客户端模式来进行蓝牙数据通信。客户端的执行流程是:(1) 搜索本地蓝牙设备, 即扫描本机上的蓝牙设备并显示;(2) 搜索远程蓝牙设备, 即扫描本机附近的蓝牙设备并显示;(3) 创建客户端套接字;(4) 发送连接请求, 连接选定的服务器, 即远程蓝牙设备;(5) 开始通信, 传输文件或收 发文本信 息 ;(6)断开连接, 客户端向服务器发送或收到服务器发送的断开连接请求时 , 即可实现 通信的断 开。服务 器的执行 流程是 :(1) 搜索本地蓝牙设备 , 即扫描本机上的蓝牙设备 并显示 ;(2) 创建服务器套接字 ; (3) 绑定套接字到本地蓝牙设备 ;(4) 建立连接 , 使用listen函数开始监听远程设备的连接 请求, 使用accept函数接受连接并返回一个用来与客户端通信的套接字;(5) 开始通信, 传输文件或收发文本信息; (6)断开连接, 服务器向客户端发送或收到客户端发送的断开连接请求时, 即可实现通信的断开。程序的运行界面截图如图和图3所示。
程序实现了服务器和客户端的功能, 将服务器和客户端做在同一个对话框界面上, 使用时用户可以选择服务器模式或者客户端模式, 也可以同时使用服务器模式和客户端模式。程序中除了主线程之外, 还设置了5个子线程, 分别是服务器监听线程、服务器接收数据线程、服务器发 送文件线 程、客户端接收数据线程和客户端发送文件线程。采用子线程方式, 可以很好地改善主线程的人机交互体验。
需要注意的是, 由于使用的是微软 实现的蓝 牙协议栈 ,所以蓝牙适配器的驱动应该 使用Windows系统自带 的驱动 ,不能使用第三方的蓝牙驱动。
4 关键代码实现
要使用Microsoft Bluetooth API进行蓝牙开发, 首先需要包含相关的头文件和导入库, 代码如下:
还要在程序开始时, 执行一次Win Sock库的初始化, 在程序结束时, 相应执行一次Win Sock库的清理, 代码如下:
4.1搜索本地蓝牙设备
搜索本机的蓝牙设备并显示, 代码如下:
4.2搜索远程蓝牙设备
搜索本机附近的蓝牙设备并显示, 代码如下:
4.3启动本地蓝牙设备
启动本地蓝牙设备作为服务器, 响应远程客户端的连接,代码如下:
4.4连接远程蓝牙设备
本机蓝牙设备作为客户端, 连接远程服务器设备, 代码如下:
4.5服务器发送信息
在服务器模式, 发送信息给客户端, 代码如下:
4.6客户端发送信息
在客户端模式, 发送信息给服务器, 代码如下:
4.7服务器发送文件
在服务器模式, 发送文件给客户端, 采用线程方式, 代码如下:
4.8客户端发送文件
在客户端模式, 发送文件给服务器, 采用线程方式, 代码如下:
4.9服务器监听线程
监听并接受客户端的连接请求, 代码如下:
4.10服务器接收信息线程
接收客户端发来的文本信息和文件数据, 代码如下:
4.11服务器发送文件线程
发送文件数据到客户端, 代码如下:
4.12客户端接收信息线程
接收服务器发来的文本信息和文件数据, 代码如下:
4.13客户端发送文件线程
发送文件数据到服务器, 代码如下:
5结语
讨论了在Windows系统下, 使用Microsoft Bluetooth API,实现两台PC机之间通过蓝牙进行文本信息收发和文件传输的程序设计方 法 , 并用VC++2008编写程序 实例 , 在WindowsXP SP3和Win8.1下测试通过。
摘要:探讨了在Windows系统下,使用Microsoft Bluetooth API实现两台PC机之间通过蓝牙进行文本信息收发和文件传输的程序设计方法,并用VC++2008编写程序实例,在Windows XP SP3和Win8.1下测试通过。
【通信程序】相关文章:
网络通信程序设计论文04-25
网络通信程序设计论文提纲09-27
网络通信程序设计分析论文04-17
网络通信程序设计分析论文提纲08-14
基于java编程语言的网络通信程序研究11-13
算法与程序·程序框图07-14
配网通信中无线通信论文04-23
数据通信网络通信论文04-28
手机通信是微波通信吗04-01
公司破产清算程序和程序08-13