




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-本文为网络收集精选范文、公文、论文、和其他应用文档,如需本文,请下载-Windows环境下的串行数据通信程序设计的论文本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意!摘 要 该文详细讨论了通信控件在windows平台下的通信软件设计方法,借助于visual basic所附的通信控件能非常方便地开发出高级和专业性通信软件来满足不同业务的需要。在windows操作系统平台上开发通信软件时,虽然windows sdk提供了完备的api应用程序接口函数和以中断方式驱动的通信设备驱动程序,从而可以用c或c+来完成这类应用程序的设计,但其复杂化和专业化程度仍然很高。所以,目前许多软件开发人员都在使用microsoft visual basic来开发windows应用程序。本文将详细叙述vb环境的通信软件开发方法,通过对通信控件的分析,我们可以看到利用vb来开发windows平台下的通信软件非常简单。最后结合我们工作中的一个实例来完整地描述该类软件的设计方法。一、的描述vb中的串行通信控件已全面提供了使用rs-232来进行数据通信软件开发设计的所有细则,microsoft visual basic 中的(需要安装在indowsystem目录下)是1992年crescent software inc. 公司专为microsoft的vb平台设计的,它使用以下两种不同的方式来处理和解决各类通信软件的开发和设计问题。(1) 事件驱动,它和我们用c/c+写windows软件时的窗口回调函数类似,是一种功能强大的处理问题的方法。在实际工作中,往往要求我们处理许多通信中的相关事件。例如:当线路数据到达本端或cd(carrier detect)和rts(request to send)信号线状态发生变化时,这就要求我们使用相应的事件来跟踪和处理。在该控件中,是使用oncomm来实现的,它也包括检测和处理通信错误等方面的问题。以下是mscomm详细的错误和事件列表(读者可参阅skd或msc/c+ 等中的有关的通信部分常数和函数原型):mscomm_er_breaka收到一个break signal.mscomm_er_cdtocd信号超时mscomm_er_ctstocts信号超时mscomm_er_dsrtodsr信号超时mscomm_er_frame帧错误发生mscomm_er_overrun接收数据丢失mscomm_er_rxover接收缓冲器溢出mscomm_er_rxparity纠验错mscomm_er_txfull发送缓冲器满mscomm_ev_cdcd信号改变mscomm_ev_ctscts信号改变mscomm_ev_dsrdsr信号改变mscomm_ev_eof收到一个文本文件结束字符(26)mscomm_ev_ring检测到一个振铃信号mscomm_ev_receive接收到设定的字符数时产生该事件mscomm_ev_send发生缓冲器中的字符数低于设定的数值时产生该事件以上常数定义在文件中。(2) 查询方式,由程序设计者来负责读取commevent的值并处理所发生的错误或事件。通常简单的应用程序设计可采用这种方法。使用通信控件开发通信软件时,能非常简单地设计出同时访问多个通信口的程序,这就是windows的好处。例如使用,其中1in(n:当前可用的通信口),就可以设计多个通信串口处理程序。例如,一个基于电话网用来检索信息资料的小型服务器的后台软件的设计应用就是一个很好的例子。中提供了27个关于通信控件方面的属性,以下列出最重要的几个:commport设置和返回通信口的数目settings设置和返回以字符串形式给出的数据通信格式:波特率,校验,数据位和停止位portopen设置和返回通信口的状态(包括打开和关闭一个通信口)input读串行数据接收缓冲器output发送一个串在中,有两个与input和output性质相等同的函数;(1) 输入函数,从串行通信接收缓冲器中读取字符串,句型如下:comlnput(by val hwnd as integer, lpdata as any,by val cbdata as integer) as integer;图1返回值:本次读操作实际读取的字符数(2) 输出函数,向通信口发送一个字符串,句型如下:comoutput(by val hwnd as integer, lpdata as any,by val cbdata as integer) as integer;图2返回值:本次写操作实际发送的字符数二、事件驱动和查询方式下的两种通信软件开发模板这两种方式分别对应我们通常使用汇编或c/c+来写通信程序中的中断和查询方法。(1) 事件驱动下例是一个使用事件驱动方式设计通信程序的模板,我们只需根据自己的实际情况来选择在下列的case语句中插入相应的代码即可。sub comm_oncomm()select case i=1,2. 错误部分case mscomm-er_break插入处理break代码case mscomm-er_cdto插入处理cd(rlsd)超时代码case mscomm-er_ctsto插入处理cts超时代码case mscomm-er_dsrto插入处理dsr超时代码case mscomm-er_frame插入处理帧错误代码case mscomm-er_overrun插入处理数据丢失代码case mscomm-er_rxover插入处理接收缓冲器溢出代码case mscomm-er_rxparity插入处理校验错误代码case mscomm-er_txfull插入处理发送缓冲器满代码事件部分case mscomm-ev_cd插入处理cd信号改变代码case mscomm-ev_cts插入处理cts信号改变代码case mscomm-ev_dsr插入处理dst信号改变代码case mscomm-ev_eof插入处理收到一个文本文件结束字(26)代码case mscomm-ev_ring插入处理检测到一个振铃信号代码case mscomm-ev_receive插入接收到设定的字符数时产生该事件代码case mscomm-ev_send插入处理发生缓冲器中的字符数低于设定的数值时产生该事件的代码end selectend sub(2) 查询方式查询方式,就是每个命令(含数据块)都要查询等待对它的回答。详细使用方法请见下文的实例叙述。三、一个完整例子该程序的设计背景是全军医药信息网上电话拨号用户前台软件中的自动拨号部分,为节省篇幅和说明问题,这里进行了重新编辑,但其本身是完整的。该程序帮助主人进行电话拨号以呼通被叫。调试环境:leo 486/50,hitec modem,院内电话脉冲拨号,使用串行口1,pwin 程序form由下列部分组成:list1电话号码显示列表;label1拨号状态显示;dial,cancel,quit三个按钮;通信控件。 - visual basic 程序设计:使用modem拨号,人工通话 程序名: 军事医学科学院计算中心 夏云, 运行:使用vb file中的load text项装入,按f5或生成.exe文件运行 -option explicitdim phonenumbers$()电话号码存储变量dim cancelflagcancel按钮状态标志sub dial(number$)拨号例程dim dialstring$,frommodem$,dummy根据脉冲/双音多频拨号方式来选择dt/dp;所拨号码存放在变量phonenumbers$(index)中;命令中的分号表示modem在拨号后重新回到命令状态;每个命令由回车符chr$(13)结束;dialstring$=“atdt”+number$+”;”+chr$(13)=“2400,n,8,1”设置帧格式on error resume next错误恢复=true启动该口工作if err then如果该口不可启动,则显示信息msgbox”当前串行通信端口不能工作,请选择使用另外端口。”exit subend if=0清除接收缓冲器=dialstring$开始拨号do等待modem返回“ok”回答dummy=doevents()进入等待方式,将资源提交系统管理if then若接收缓冲器中有数据存在,则读frommodem$=frommodem$+if instr(frommodem$,”ok”)then 是否接收到“ok”beep已经接收到“ok”,发蜂呜声msgbox”对方电话已经拨通,请摘话机并按回车或ok钮”exit doend ifend ifif cancelflag then若cancel钮按下则处理cancelflag=falseexit doend ifloop=“ath”+chr$(13)挂断命令=false关闭该口end subsub dialbutton_click()dial按钮处理程序dim number$,temp$=falsedial,quit二个按钮同时无效=false=true开放cancel按钮number$=phonenumbers$()获得一个电话号码temp$=status保存状态status$=“正在拨号码:”+number$dial number$拨号例程执行=true拨号结束开放dail,quit按钮=true=false禁止cancel按钮status=temp$恢复状态end subsub form_load()=0设置0值:读全部接收缓冲器内容显示窗口“四环医学研究院计算中心”“军事医学科学院情报所张华研究员”redim phonenumbers$(0 to )phonenumbers$(0)=“1-8233296”phonenumber$(1)=“1-8232255”=0默认第一个号码end subsub list1-dblclick()列表框选择号码启动拨号dialbutton-clickend subsub cancelbutton-click()cancel按钮处理程序cancelflag=true标识cancel钮已按下=false取消该钮继续活动end subsub quitbutton-click()quit按钮end结束end sub对开发windows平台下的通信软件的确方便容易,使用事件驱动能设计良好的后台通信程序、开发终端仿真软件和解决更复杂的实际问题。该通信控件不但包括了全部windows api中关于串行通信的16个函数所完成的功能,而且开拓了更
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CACEM 41-2024公路工程用高性能混凝土技术规程
- 2025年蚌埠市晨光小学编外临聘教师招聘1人备考考试题库附答案解析
- 2025浙江宁波贵驷街道招聘编外工作人员5人备考考试题库附答案解析
- 2025智新科技股份有限公司招聘考试参考试题及答案解析
- 2025北京华文学院招聘4人笔试备考题库及答案解析
- 2025广东阳江市江城区招聘城镇公益性岗位和乡村公益性岗位备考考试题库附答案解析
- 2025福建莆田市秀屿区上塘珠宝城实业有限公司招聘编外工作人员3人备考练习试题及答案解析
- 2026建信基金管理有限责任公司校园招聘9人备考考试题库附答案解析
- 2025浙江丽水经济技术开发区实业发展集团有限公司下属三级公司招聘2人备考练习题库及答案解析
- 2025中国煤炭开发有限责任公司招聘4人备考考试题库附答案解析
- 2025下半年四川内江市隆昌诚信农业产业化融资担保有限责任公司招聘4人考试参考题库及答案解析
- 疼痛介入治疗的护理
- DB44-T 2542-2024 自然教育基地建设规范
- 《拒绝努力羞耻症》学习动力主题班会课件
- 2025AICon全球人工智能开发与应用大会-上海站:昇腾推理技术的优化实践
- 广州中侨置业投资控股集团有限公司债权资产评估报告
- 第2课 信息技术伴成长教学设计-2025-2026学年小学信息技术(信息科技)第八册(2019)电子工业版(安徽)
- 2025年中国酒店行业白皮书-
- 脑梗的课件和提纲
- 监控工程试运行方案(3篇)
- 煤矿井下爆破培训课件
评论
0/150
提交评论