ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:19.88KB ,
资源ID:8016252      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8016252.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Visual Basic 串口通讯编程.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Visual Basic 串口通讯编程.docx

1、Visual Basic 串口通讯编程Visual Basic 串口通讯编程2006-07-19 07:34 对于串行口的应用,相信大家多少知道一些,例如,它可以连接鼠标、MODEM、数码相机、打印机,等等,可以做很多很多的事情。但是,对于串行口的理论,可能了解一二有所剩无几了。什么是串行口?它是如何工作的?为什么用串行口?您知道吗? 一、关于串行口 发明计算机的人,肯定注意到了一点,那就是计算机必须与外界进行信息的交换,所以他们为计算机设计了外设口。要与显示器相连,于是设计了显示口;要与硬盘相连,于是设计了IDE口;要与打印机相连,于是设计了打印口。那么,有没有用最少数量的线(线多了麻烦多)

2、,就能与外界发生联系,并且能够成为通用的接口呢?当然,这就是诞生于设计大师们手中的串. 对于串行口的应用,相信大家多少知道一些,例如,它可以连接鼠标、MODEM、数码相机、打印机,等等,可以做很多很多的事情。但是,对于串行口的理论,可能了解一二有所剩无几了。什么是串行口?它是如何工作的?为什么用串行口?您知道吗?一、关于串行口 发明计算机的人,肯定注意到了一点,那就是计算机必须与外界进行信息的交换,所以他们为计算机设计了外设口。要与显示器相连,于是设计了显示口;要与硬盘相连,于是设计了IDE口;要与打印机相连,于是设计了打印口。那么,有没有用最少数量的线(线多了麻烦多),就能与外界发生联系,并

3、且能够成为通用的接口呢?当然,这就是诞生于设计大师们手中的串行口。串行口所需要的线的确很少,一根公共地线无论如何也得要,然后,一根发送数据的线和一根接收数据的线,共三根线就行了。也许您还会问,“能不能再少些呢?两根,一根,干脆一根都不要,成吗?”当然行,红外接口不就是一根线都没有吗?也许当时搞无线通讯的天才就是像您这么想的,不过这已经超出了今天我们讨论的范围。 既然是通讯,那么就必须有两台设备才行。常用的串行线是怎样制作的呢?在计算机后边,您最少会看到一个串行口(笔记本电脑通常为一个,台式计算机通常为二个),采用的是梯型DB-9或DB-25插座,即采用9根线或25根线的插座,这是因为有的外设需

4、要像数据准备、载波检测、请求发送等联络信号(对这些信号线感兴趣的先生/女士,可以查阅有关串行口的资料)。作为VB爱好者,您只要了解其中的三根线就可以了。这三根线分别是发送数据TXD、接收数据RXD和信号地SG,对于DB-9既九芯串行口插口来说,它们对应于3、2、5;对于25芯串行口插口,则对应于2、3、7。千万别搞错呀!因为串行口通讯,往往是一个发送,一个接收,所以在制作联接线时,一头的发送必须与另一头的接收相连,地线与地线相连。对于硬件知识较少的朋友,可以直接到电脑配套市场采购,不方便的话也可以请有一定电子电路基础的亲朋好友帮忙。 我们经常听到有关波特率的词,以“猫”为例,有14400bps

5、、28800bps、36600bps、56000bps,等等。波特率代表了串行口的数据传输速度。例如:9600代表每秒传输约9600个数据位,它代表约1000个(1k)英文字符(每个字符占8位,1个开始位,1个停止位)。要传输100k的文件,就需要100秒。二、编程要求相信许多网友都在网上聊过天,当您在一个输入框中键入一些话时,这些话会传到聊天室的每一个人,同样,其他人的话您也会看到。我们试着编制一段程序,实现这种功能。为适应不同速率设备之间的连接,应当可以设定其连接速度;为避免设备冲突,应当允许进行通讯端口的选择。另外,为拓宽用途,该程序对于接收的数据,最好还能提供ASCII码显示。这样,当

6、有两台用串口相连的设备相连接时,您若想知道它们在发送或接收写什么的话,只要将拥有该程序的计算机串口的接收数据线与通讯者的线相连,就可以监看其过程。例如,您可以使用该程序监测计算机与调制解调器之间的通讯。 在我们调试程序时,很难做到一个人同时占用两台计算机。为此,我们可以使用在计算机中随处可见的跳线,直接短接串口的2、3两个脚,即将串行口的2、3脚连接在一起,从而使发送的数据直接被本机接收。这样,就我们就可以在一台计算机上调试程序了。在该种状态下,本程序还有另外一个用途,即您可以将之用于查找任何字符的ASCII码。其实很多情况都是如此,软件或硬件本身提供的功能或许有限,关键的问题是如何开动脑筋、

7、灵活运用。三、预备知识和技巧1、串行通讯控件Mscomm 调入Mscomm控件:在“项目”菜单中打开“部件”子菜单,在部件选择对话框中选择 “MicrosoftcommControl5.0”,Mscomm控件即加入到您的控件箱中.常用属性:Commport-通讯端口号,如串口1、串口2。Setting-返回或设置串口参数。InputLen-从接收缓冲区读出的字符数。InBufferSize、OutBufferSize-输入、输出缓冲区尺寸。InBufferCount-输入缓冲区内的字符数。常用方法:Output、Input-将发送数据发送出去和将接收数据读出。常用事件:OnComm-无论串行口

8、发生什么事,都会触发该事件。2、字符处理函数Left:取字符串的左边n个字符。例如:s=Left(s,2)即为取s的左边两个字符再放回s。Right:与Left类似,取字符右边n个字符。Mid:从第m个数开始,取n个数。例如:s=Mid(s,2,3)即为从s的第二个数开始,取三个数放回s。Asc:返回第一个字符(包括汉字)的Ascii码。Str:将一个数字变为字符形式Hex:返回Ascii码的16进制数3、错误处理的应用我们在程序中加入这样一条语句:OnErrorResumeNext。当程序运行出现错误,比如当打开串行口1时,该串口已被其它程序占用,程序就会出现错误,如果开始时执行过上述语句,

9、程序将跳过错误语句,接着往下执行。同时,VB置Err标志有效。利用Err的值,我们可以判断一些与硬件相关的操作是否正确和有效,以改变程序的进程。四、界面画出界面,控件上的字符是它们的名称。需要提请大家注意的是,串口控件(即那个电话控件)在VB默认的控件栏中不存在,需要以下述方式添加,在工程菜单-部件-控件选项卡中选中MicrosoftCommControl5.0复选框,其它备用控件的添加也采用相同的方式,希望大家记住,以后将不再重复。当不再需要该控件而欲从控件栏中将其删除时,只需依上述步骤进入到控件选项卡,然后取消对该控件的选中即可。除Text1在设计时将多行显示使能属性Multiline设为

10、True,以使Text1能显示多行文字外,其它各控件属性将在窗口调入时进行设置。五、程序源代码PrivateSubForm_Load()Me.Show初始化,为各控件的相关属性赋值Label1.Caption=串口接收Label2.Caption=串口发送Label3.Caption=串口设置波特率,奇偶校验,数据位,停止位Text3.Text=9600,n,8,1Text1.Text=Text2.Text=Text2.SetFocusFrame1.Caption=串口选择Option1.Caption=COM1Option2.Caption=COM2Frame2.Caption=显示方式Op

11、tion3.Caption=文本Option3.value=TrueOption4.Caption=ASCiiCommand1.Caption=清除接收Command2.Caption=退出OldSet=Text3.Text打开串口MSComm1.CommPort=1将通讯口设为COM1OnErrorResumeNext错误监视MSComm1.PortOpen=True打开串口如果没有错误,串口1将被确认打开,否则打开串口2IfNotErrThenMsgBoxCOM1口工作Option1.value=TrueElseErr=0MSComm1.CommPort=2MSComm1.PortOpen

12、=True打开串口2,如果仍然有错误,则两个口都不能打开,这时应退出程序。IfErrThenMsgBoxCOM1、COM2都不能打开,程序终止:EndMsgBoxCOM2口工作Option2.value=TrueEndIf接收数据Dimaaa,i%,s$,s1$,s2$aaa=False下面的循环是死循环,程序不断的检测输入缓冲区内是否有接收到的字符,如果有,即进行处理。DoWhileaaa=FalseDoEvents该语句使程序可以在此处响应其它事件。如果没有该语句,程序就真成了死循环,一个运行的程序无法让其停止,是很可怕的。这是所有程序编制人员时刻注意的问题,也可以算编程的规律之一。IfM

13、SComm1.InBufferCount0ThenTimer1.Enabled=False关闭定时器s=MSComm1.Input取串行口数据s1=:s2=IfOption3Then如果显示方式为文本,则将接收到的字符串累加到JSStr变量中JSStr=JSStr+sElse如果显示方式为ASCii,则对每个字符进行转换Fori=1ToLen(s)s2=Right(0000+Hex(Asc(Mid(s,i,1),4)取出第i个字符,转换成ASCii码,再转换成16进制,并整理成四位字符。例如数字1的ASCii码为31,则转换成0031,汉字“科”的转换结果为“BFC6”IfLeft(s2,2)

14、=00Thens2=Right(s2,2)Elses2=Left(s2,2)+Space(1)+Right(s2,2)EndIf字符取两位字符,汉字取两个两位字符s1=s1+s2+Space(1)NextiJSStr=JSStr+s1EndIfEndIfTimer1.Enabled=True定时器开始工作LoopEndSub发送数据:当在发送文本框进行回车操作时,将文本内容送出。PrivateSubText2_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then13为回车符KeyAscii=0清按键,使本次按键失效MSComm1.Output=Text2.T

15、ext发送数据Text2=EndIfEndSub修改参数,通过修改Text3的内容,可以修改波特率等参数PrivateSubText3_KeyPress(KeyAsciiAsInteger)IfKeyAscii13ThenExitSubKeyAscii=0Err=0OnErrorResumeNextMSComm1.PortOpen=FalseMSComm1.Settings=Text3.TextMSComm1.PortOpen=TrueIfErrThenErr=0MSComm1.PortOpen=FalseMSComm1.Settings=OldSetMSComm1.PortOpen=True

16、Text3=OldSetEndIfOldSet=Text3.TextOnErrorGoTo0EndSub滚动显示PrivateSubTimer1_Timer()Staticjs%Dimi%,s$IfJSStrThenjs=js+1Fori=0To8ss(i)=ss(i+1)Nextiss(9)=Chr(13)+Chr(10)+Trim(Str(js)+:+JSStrFori=1To9s=s+ss(i)NextiText1.Text=Right(s,Len(s)-2)JSStr=EndIfEndSub六、执行程序两个计算机连接完毕(或短接2、3脚),均执行该程序,显示初始界面,提示目前默认工作的端口号。单击确定按钮,然后对波特率、奇偶校验、数据位、停止位进行必要的设置,如果您使用过Modem,这当然是小菜一碟,如果您不太熟悉也没有关系,只需简单地将波特率修改一下即可。然后选择欲使用的端口,默认值为COM1,如果不巧该端口正在被其它设备所占用,可选择COM2进行通讯。如果欲在接收方显示您键入的字符,则选中“文本”选项按钮,若欲显示其ASCII码,则必须选中“ASCII”选项按钮。然后,在“串口发送”文本框中键入字符,即可分段显示在“串口接收”栏中,并进行计数。每次回车均另起一段、计数一次,并将其段落号加在每一段的开头。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1