VB第五章 串口通信方法与实现2_第1页
VB第五章 串口通信方法与实现2_第2页
VB第五章 串口通信方法与实现2_第3页
VB第五章 串口通信方法与实现2_第4页
VB第五章 串口通信方法与实现2_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串口通信控件主要属性小结

◆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()

If

MSComm1.InBufferCount>0

Then

timel=Timer

While

Timer-timel<0.1DoEvents

Wend

Text2.Text=MSComm1.Input

EndIfEndSub运行程序,在发送文本框中输入字符或汉字,点击“发送”按钮,在“接收”文本框中就会自动显示接收到的数据。

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()

SelectCase

MSComm1.CommEvent

Case

comEventBreak‘十个错误

Case

comEventCDTO

Case

comEventCTSTO

Case

comEventDSRTO

Case

comEventFrame

Case

comEventOverrun

Case

comEventRxOver

Case

comEventRxParity

Case

comEventTxFull

Case

comEventDCBCasecomEvCD’七个事件件CasecomEvCTSCasecomEvDSRCasecomEvRingCasecomEvReceive‘接接收缓缓冲区区有Rthreshold属性设设置的的字符符数((2)),此此处放放接收收数据据代码码。CasecomEvSendCasecomEvEOFEndSelectEndSub(3)编编写事事件驱驱动方方式的的通信信程序序◆窗体设设计::在查询询方式式通信信窗体体中,,将定定时器器控件件及相相关的的代码码去掉掉。◆编写代代码PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEvReceiveMSComm1.RThreshold=0IfMSComm1.InBufferCount>0Thentimel=TimerWhileTimer-timel<0.1DoEventsWendText2.Text=MSComm1.InputEndIfMSComm1.RThreshold=1EndSelectEndSubPrivateSubForm_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_TureLoopMsgBox“未检检测到到载波波信号号”MSComm1.Output=_"+++,ATH0"&Chr(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论