会员注册 | 登录 | 微信快捷登录 支付宝快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

   首页 人人文库网 > 资源分类 > DOC文档下载

通信学论文-Windows环境下的串行数据通信程序设计.doc

  • 资源星级:
  • 资源大小:12.41KB   全文页数:9页
  • 资源格式: DOC        下载权限:注册会员/VIP会员
您还没有登陆,请先登录。登陆后即可下载此文档。
  合作网站登录: 微信快捷登录 支付宝快捷登录   QQ登录   微博登录
友情提示
2:本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3:本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

通信学论文-Windows环境下的串行数据通信程序设计.doc

通信学论文Windows环境下的串行数据通信程序设计摘要该文详细讨论了MSCOMM.VBX通信控件在Windows平台下的通信软件设计方法,借助于VisualBasic所附的通信控件能非常方便地开发出高级和专业性通信软件来满足不同业务的需要。在Windows操作系统平台上开发通信软件时,虽然Windows3.1SDK提供了完备的API应用程序接口函数和以中断方式驱动的通信设备驱动程序COMM.DRV,从而可以用C或C来完成这类应用程序的设计,但其复杂化和专业化程度仍然很高。所以,目前许多软件开发人员都在使用MicrosoftVisualBasic来开发Windows应用程序。本文将详细叙述VB环境的通信软件开发方法,通过对通信控件MSCOMM.VBX的分析,我们可以看到利用VB来开发Windows平台下的通信软件非常简单。最后结合我们工作中的一个实例来完整地描述该类软件的设计方法。一、MSCOMM.VBX的描述VB中的串行通信控件已全面提供了使用RS232来进行数据通信软件开发设计的所有细则,MicrosoftVisualBasic3.0中的MSCOMM.VBX需要安装在indowsystem\目录下是1992年CrescentsoftwareInc.公司专为Microsoft的VB平台设计的,它使用以下两种不同的方式来处理和解决各类通信软件的开发和设计问题。1事件驱动,它和我们用C/C写Windows软件时的窗口回调函数类似,是一种功能强大的处理问题的方法。在实际工作中,往往要求我们处理许多通信中的相关事件。例如当线路数据到达本端或CDCarrierDetect和RTSRequestToSend信号线状态发生变化时,这就要求我们使用相应的事件来跟踪和处理。在该控件中,是使用OnComm来实现的,它也包括检测和处理通信错误等方面的问题。以下是MSCOMM详细的错误和事件列表读者可参阅SKD或MSC/C7.0等中的Windows.h有关的通信部分常数和函数原型MSCOMM_ER_BREAKA收到一个Breaksignal.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收到一个文本文件结束字符26MSCOMM_EV_RING检测到一个振铃信号MSCOMM_EV_RECEIVE接收到设定的字符数时产生该事件MSCOMM_EV_SEND发生缓冲器中的字符数低于设定的数值时产生该事件以上常数定义在CONSTANT.TXT文件中。2查询方式,由程序设计者来负责读取CommEvent的值并处理所发生的错误或事件。通常简单的应用程序设计可采用这种方法。使用通信控件开发通信软件时,能非常简单地设计出同时访问多个通信口的程序,这就是Windows的好处。例如使用Commi.OnComm,其中1≤i≤nn当前可用的通信口,就可以设计多个通信串口处理程序。例如,一个基于电话网用来检索信息资料的小型服务器的后台软件的设计应用就是一个很好的例子。MSCOMM.VBX中提供了27个关于通信控件方面的属性,以下列出最重要的几个CommPort设置和返回通信口的数目Settings设置和返回以字符串形式给出的数据通信格式波特率,校验,数据位和停止位PortOpen设置和返回通信口的状态包括打开和关闭一个通信口Input读串行数据接收缓冲器Output发送一个串在MSCOMM.VBX中,有两个与Input和Output性质相等同的函数1输入函数,从串行通信接收缓冲器中读取字符串,句型如下ComlnputByValhWndAsInteger,lpDataAsAny,ByValcbDataAsIntegerAsIntegerT8S14200.GIF图1返回值本次读操作实际读取的字符数2输出函数,向通信口发送一个字符串,句型如下ComOutputByValhWndAsInteger,lpDataAsAny,ByValcbDataAsIntegerAsintegerT8S14201.GIF图2返回值本次写操作实际发送的字符数二、事件驱动和查询方式下的两种通信软件开发模板这两种方式分别对应我们通常使用汇编或C/C来写通信程序中的中断和查询方法。1事件驱动下例是一个使用事件驱动方式设计通信程序的模板,我们只需根据自己的实际情况来选择在下列的Case语句中插入相应的代码即可。SubComm_OnCommSelectCaseCommi.CommEventi1,2...错误部分CaseMSCOMMER_BREAK插入处理BREAK代码CaseMSCOMMER_CDTO插入处理CDRLSD超时代码CaseMSCOMMER_CTSTO插入处理CTS超时代码CaseMSCOMMER_DSRTO插入处理DSR超时代码CaseMSCOMMER_FRAME插入处理帧错误代码CaseMSCOMMER_OVERRUN插入处理数据丢失代码CaseMSCOMMER_RXOVER插入处理接收缓冲器溢出代码CaseMSCOMMER_RXPARITY插入处理校验错误代码CaseMSCOMMER_TXFULL插入处理发送缓冲器满代码事件部分CaseMSCOMMEV_CD插入处理CD信号改变代码CaseMSCOMMEV_CTS插入处理CTS信号改变代码CaseMSCOMMEV_DSR插入处理DST信号改变代码CaseMSCOMMEV_EOF插入处理收到一个文本文件结束字26代码CaseMSCOMMEV_RING插入处理检测到一个振铃信号代码CaseMSCOMMEV_RECEIVE插入接收到设定的字符数时产生该事件代码CaseMSCOMMEV_SEND插入处理发生缓冲器中的字符数低于设定的数值时产生该事件的代码EndSelectEndSub2查询方式查询方式,就是每个命令含数据块都要查询等待对它的回答。详细使用方法请见下文的实例叙述。三、一个完整例子该程序的设计背景是全军医药信息网上电话拨号用户前台软件中的自动拨号部分,为节省篇幅和说明问题,这里进行了重新编辑,但其本身是完整的。该程序帮助主人进行电话拨号以呼通被叫。调试环境LEO486/50,HiTecMODEM,院内电话脉冲拨号,使用串行口1,PWIN3.1程序Form由下列部分组成List1电话号码显示列表Label1拨号状态显示Dial,Cancel,Quit三个按钮MSCOMM.VBX通信控件。VisualBasic3.0MSCOMM.VBX程序设计使用MODEM拨号,人工通话程序名MDIALER.TXT军事医学科学院计算中心夏云,1995.2.12运行使用VBFILE中的LoadText项装入,按F5或生成.EXE文件运行OptionExplicitDimPhoneNumbers电话号码存储变量DimCancelFlagCancel按钮状态标志SubDialNumber拨号例程DimDialString,FromModem,dummy根据脉冲/双音多频拨号方式来选择DT/DP所拨号码存放在变量PhoneNumbersIndex中命令中的分号表示MODEM在拨号后重新回到命令状态每个命令由回车符Chr13结束DialStringATDTNumberChr13Commi.Settings2400,N,8,1设置帧格式OnErrorResumeNext错误恢复Commi.PortOpenTrue启动该口工作IfErrThen如果该口不可启动,则显示信息MsgBox当前串行通信端口不能工作,请选择使用另外端口。ExitSubEndifCommi.InBufferCount0清除接收缓冲器Commi.OutputDialString开始拨号Do等待MODEM返回OK回答dummyDoEvents进入等待方式,将资源提交系统管理IfCommi.InBufferCountThen若接收缓冲器中有数据存在,则读FromModemFromModemCommi.InputIfInStrFromModem,OKThen是否接收到OKBeep已经接收到OK,发蜂呜声MsgBox对方电话已经拨通,请摘话机并按回车或OK钮ExitDoEndIfEndIfIfCancelFlagThen若Cancel钮按下则处理CancelFlagFalseExitDoEndIfLoopCommi.OutputATHChr13挂断命令Commi.PortOpenFalse关闭该口EndSubSubDialButton_ClickDial按钮处理程序DimNumber,TempDialButton.EnabledFalseDial,Quit二个按钮同时无效QuitButton.EnabledFalseCancelButton.EnabledTrue开放Cancel按钮NumberPhoneNumbersList1.ListIndex获得一个电话号码TempStatus保存状态Status正在拨号码NumberDialNumber拨号例程执行DialButton.EnabledTrue拨号结束开放Dail,Quit按钮DialButton.EnabledTrueCancelButton.EnabledFalse禁止Cancel按钮StatusTemp恢复状态EndSubSubForm_LoadCommi.InputLen0设置0值读全部接收缓冲器内容MDialer.Show显示窗口List1.AddItem四环医学研究院计算中心List1.AddItem军事医学科学院情报所张华研究员ReDimPhoneNumbers0ToList1.ListCount1PhoneNumbers018233296PhoneNumber118232255List1.ListIndex0默认第一个号码EndSubSubList1DblClick列表框选择号码启动拨号DialButtonClickEndSubSubCancelButtonClickCancel按钮处理程序CancelFlagTrue标识Cancel钮已按下CancelButton.EnabledFalse取消该钮继续活动EndSubSubQuitButtonClickQuit按钮End结束EndSubMSCOMM.VBX对开发Windows平台下的通信软件的确方便容易,使用事件驱动能设计良好的后台通信程序、开发终端仿真软件和解决更复杂的实际问题。该通信控件不但包括了全部WindowsAPI中关于串行通信的16个函数所完成的功能,而且开拓了更多的使用户设计方便的对象属性来满足不同用户不同业务的需求。因此我们可以应用上文讨论的内容和方法,利用Windows环境,使用VB工具来开发设计所有串行通信的软件。另外,MSCOMM为了能在下一个高速调制解调设备标准中直接使用,它提供了14.4Kbps一档的速率接口。

注意事项

本文(通信学论文-Windows环境下的串行数据通信程序设计.doc)为本站会员(zhaozilong)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网([email protected]),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5