首页 VB(12)第五章 串口通信方法与实现2

VB(12)第五章 串口通信方法与实现2

举报
开通vip

VB(12)第五章 串口通信方法与实现2串口通信控件主要属性小结◆CommPort属性MSComm1.CommPort=2◆Settings属性MSComm1.Settings=“1200,e,8,1“◆PortOpen属性MSComm1.PortOpen=True◆OutPut属性MSComm1.OutPut=Text1.text◆Input属性Text1=MSComm1.Input◆InBufferCount属性◆RThreshold属性上一页下一页串口通信的基本步骤 ◆在工程中添加MSComm控件;◆设置CommPort属性选择通信串口;◆设置Se...

VB(12)第五章 串口通信方法与实现2
串口通信控件主要属性小结◆CommPort属性MSComm1.CommPort=2◆Settings属性MSComm1.Settings=“1200,e,8,1“◆PortOpen属性MSComm1.PortOpen=True◆OutPut属性MSComm1.OutPut=Text1.text◆Input属性Text1=MSComm1.Input◆InBufferCount属性◆RThreshold属性上一页下一页串口通信的基本步骤 ◆在工程中添加MSComm控件;◆设置CommPort属性选择通信串口;◆设置Settings属性选择通信参数;◆设置PortOpen=True打开通信串口;◆使用Output属性发送数据;◆使用Input属性接收数据;◆设置PortOpen属性=False关闭串口。上一页下一页1.3.2自动接收数据自动接收数据的方法通常有两种:1.查询方式MSComm1控件的InBnfferCount属性用来返回接收缓冲区中已收到但还未取走的字符个数,可以通过查询InBnfferCount属性值是否大于0来判断是否有数据接收进来。查询的方法可以借助定时器(Timer1)控件。(1)窗体设计:在简单串口通信窗体设计中,将“接收”按钮及相应的代码去掉,并在窗体中添加一个定时器控件。上一页下一页(2)属性设置:定时器控件的Enabled属性设置为Ture,Interval属性取值为100。查询方式下串口通信窗体设计上一页下一页(3)编写代码用鼠标双击定时器控件在Timer1_Timer事件中加入以下代码:PrivateSubTimer1_Timer()IfMSComm1.InBufferCount>0Thentimel=TimerWhileTimer-timel<0.1DoEventsWendText2.Text=MSComm1.InputEndIfEndSub上一页下一页运行程序,在发送文本框中输入字符或汉字,点击“发送”按钮,在“接收”文本框中就会自动显示接收到的数据。上一页下一页2.事件驱动方式事件驱动方式使用串口控件的OnComm事件。由于事件驱动方式会产生类似于硬件中断的效果,所以也称为软中断接收方式。OnComm事件 MSComm1控件只有一个OnComm事件,在这个事件中包含了十七个通信过程中的事件处理过程并用事件用属性CommEvent的十七个值来区分不同的触发事件。无论何时当CommEvent属性值变化时,就产生OnComm事件。上一页下一页(1)CommEvent属性取值及含义◆通信错误常数(共计10个)符号常数值含义comEventBreak1001接收到中断信号comEventCTSTO1002CTS超时comEventDSRTO1003DSR超时comEventFrame1004帧错误comEventOverrun1006数据丢失(端口超速)comEventCDTO1007CD超时comEventRxOver1008接收缓冲区溢出comEventRxParity1009极性错误comEventTxFull1010发送缓冲区满comEventDCB1011检索端口设备控制块(DCB)时的意外错误上一页下一页◆管脚状态及接收/发送缓冲区状态等常数(共计7个)。符号常数值含义comEvSend1发送缓冲区有Sthreshold属性设置的字符数comEvReceive2接收缓冲区有RThreshold属性设置的字符数comEvCTS3CTS线状态发生变化comEvDSR4DSR线状态发生变化comEvCD5CD线状态发生变化comEvRing6RI(振铃)线状态变化comEvEOF7输入数据流中发现文件结束标志(EOF)上一页下一页(2)OnComm事件示例框架代码PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEventBreak‘十个错误CasecomEventCDTOCasecomEventCTSTOCasecomEventDSRTOCasecomEventFrameCasecomEventOverrunCasecomEventRxOverCasecomEventRxParityCasecomEventTxFullCasecomEventDCB上一页下一页CasecomEvCD’七个事件CasecomEvCTSCasecomEvDSRCasecomEvRingCasecomEvReceive‘接收缓冲区有Rthreshold属性设置的字符数(2),此处放接收数据代码。CasecomEvSendCasecomEvEOFEndSelectEndSub上一页下一页(3)编写事件驱动方式的通信程序◆窗体设计:在查询方式通信窗体中,将定时器控件及相关的代码去掉。上一页下一页◆编写代码PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEvReceiveMSComm1.RThreshold=0IfMSComm1.InBufferCount>0Thentimel=TimerWhileTimer-timel<0.1DoEventsWendText2.Text=MSComm1.InputEndIfMSComm1.RThreshold=1EndSelectEndSub上一页下一页PrivateSubForm_Load()MSComm1.RThreshold=1MSComm1.PortOpen=TrueEndSub◆运行程序:在发送文本框中输入数据后,点击发送按钮,在接收文本框中就会自动显示接收到的数据。上一页下一页1.3.3用Modem进行远程通信1.AT指令简介PC机串口通信中,计算机一端称为数据终端设备(DTE),调制解调器一端称为数据通信设备(DCE),PC机串行通信的硬件连接方式分为零Modem连接和Modem连接。◆零Modem连接:直接用电缆将两台PC机连接起来的方式。◆Modem连接:通过Modem及电话网将两台PC机连接起来的方式。上一页下一页Modem工作有命令和在线两种状态◆命令状态是指通信线路上的两个Modem还没有建立起连接的状态。处于命令状态下的Modem会把PC机发往串口的信息当成指令来执行。因此,在命令状态下,PC机可通过串口向调制解调器发送指令对其进行初始化、设置和操作。◆在线状态是指通信线路上的两个Modem建立起连接后的状态。上一页下一页使用AT指令要遵循的规则◆每个AT指令字符串的最后必须加上回车符Chr(13),否则调制解调器将不执行传送过来的指令。◆除了“A/”和“+++”两个指令外,其他的指令都必须加上“AT”前导符。◆AT指令可以一个一个地发送,也可以合成一个字符串后再发送。用字符串发送时,总长度不能超过40个字符。◆所有的AT指令字符必须一律是大写或小写。上一页下一页AT指令应用举例◆对Modem初始化:MSComm1.Output=“ATE0Q1M0S0=5”&Chr(13),表示不回应指令、不返回结果码、关闭扬声器、振铃响5次后摘机。◆拨号:MSComm1.Output="ATDT"&Text1.Text&Chr(13)◆摘机:MSComm1.Output="ATH1"&Chr(13)◆挂机:MSComm1.Output="+++,ATH0"&Chr(13)上一页下一页2.远程通信编程举例(1)硬件连接:用Modem进行两台计算机间的远程通信,需要两个Modem和两条不同号码的电话线。可以使用一台计算机模拟远程通信,方法是将接有电话线的两个Modem分别接在计算机的两个串口上,通信时只要对两个串口进行读写操作即可。如果Modem具有专线功能可以用一条两端带有RJ-11插头的两芯电话线将两个调制解调器直接连接起来进行通信。上一页下一页(2)设计窗体:在事件驱动方式串口通信窗体上添加一个标签(Label3)和文本框(Text3)。标签的Caption属性设置为“电话号码”,文本框用来输入电话号码。上一页下一页(3)编写代码用Modem实现远程通信完整代码如下:DimtimelPrivateSubCommand1_Click()MSComm1.Output=_"ATDT"&Text3.Text&Chr(13)timel=TimerDoWhileTimer-timel<30DoEventsIfMSComm1.CDHoldingThen_GoToCD_TureLoop上一页下一页MsgBox“未检测到载波信号”MSComm1.Output=_"+++,ATH0"&Chr(13)ExitSubCD_Ture:MSComm1.Output=Text1.TextEndSubPrivateSubForm_Load()MSComm1.RThreshold=1MSComm1.PortOpen=TrueMSComm1.DTREnable=TrueMSComm1.Output=_"ATE0Q1M2S0=1"&Chr(13)EndSub上一页下一页PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEvReceiveMSComm1.RThreshold=0IfMSComm1.InBufferCount>0Then‘此处加延时0.1秒程序代码Text2.Text=MSComm1.InputMSComm1.Output=_"+++,ATH0"&Chr(13)EndIfMSComm1.RThreshold=1EndSelectEndSub上一页下一页(4)运行程序上一页下一页
本文档为【VB(12)第五章 串口通信方法与实现2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xiaowu0912
多年轨道交通运输经验
格式:ppt
大小:132KB
软件:PowerPoint
页数:24
分类:教育学
上传时间:2021-12-02
浏览量:0