|
ut:向发送缓冲区传送一字符串。
2)CommEvent属性
如果在通讯过程中发生错误或事件,就会引发OnComm事件并由CommEvent属性代码反映错误类型,可根据该属性值来执行不同的程序操作或数据处理。以下是部分属性常数值及其含义:
a. ComEvSend:其值为1,发送缓冲区的内容少于SThreshold指定的值。
b. ComEvReceive:其值为2,接收缓冲区内字符数达到RThreshold值,该事件在缓冲区中数据被移走前将持续产生。
c. ComEventRxParity:其值为1009,奇偶校验。
d. ComEvEOF:其值为7,接收数据中出现文件结束字符。
undefined
undefined
3 PC机与单片机主程序设计
3.1单片机的串口控制
单片机串口控制较为简单,此处只给出初始化程序:
MOV TL1,#0E8H
MOV TH1 , # 0E8H; 定时器时间常数
MOV TMOD, # 20H; 定时器Tl工作方式2
MOV SCON, # 50H; 串行口方式1
SETB TRl ; 定时器开始工作
MOV IE, # 90H; 允许串行口中断
MOV SBUF,A; 串行数据发送

3.2地址信息、要求单片机接收极限值设置信息的发送
Private Sub mnN1_Click()
MSComml. PortOpen=True ‘打开通讯端口
MSComml. RTSEnable=False‘置通讯端口为发送状态
MSComml. Settings="2400,m,8,1"‘奇偶校验位置1,发送地址信息
MSComml. OutBufferCount = 0‘清发送缓冲区
MSComml. output= 1 ‘发送单片机机地址信息
MSComml. Settings=2400,s,8,1 奇偶校验位置0,
发送数据信息
MSComml.Output= " "发送要求单片机接收极限值设置信息
End Sub
3.3数据信息(应答信息)的接收
Private Sub cmdrecvans_Click()‘接收应答信息,初始化MSComm
MSComm1.InBufferCount = 0‘接收缓冲区
MSComml. RThreshold= 2‘设置接收数据的长度
MSComml. RTSEnable= True‘置为接收状态
Timer. Enabled=True
End Sub
Private Sub Timer_Click()
If MSComm1. InBufferCount=0 Then
MSComm1. Input
Frmsend. frm Show ‘Frmsend为极限值设定及发送窗口
Timer. Enabled=False
Else : Call errordeal‘应答信息错误,调应答信息错误处理子程序
End If
End Sub
PC程序设计流程如图3所示。
4 结束语
本文主要对利用MSComm控件比较方便地开发串行通信程序做了阐述,实现串行通讯原理已经得到实验结果验证,考虑到将来对系统实时性的要求,采用了MSComm控件的查询处理机制,避免了中断处理机制的不稳定和不连续性,而且还可以很方便地控制多个串口,只需插入多个MSComm控件,并为每个MSComm控件编写OnComm()函数。但是,MSComm控件在VB中的使用较为复杂。
[1]王义祥.MCS-96单片机原理与应用[M].北京:兵器工业出版社,1994.
[2]刘小石.精通Visual C + +6.0[ M ].北京:清华大学出版社,2000
[3杨毓,李明.Visual Basic6.0实用开发教程[M].成都:电子科技大学出版社,2001.
[4]胡峪.VC++高级编程技巧与示例[M].西安:西安电子科技大学出版社,2001.
[5]王子恢,戴健鹏.C语言大全(第4版)[M].北京:电子工业出版社,2001.
[6]李华.单片机通用接口技术[M].北京:北京航空航天大学出版社,1999
[7]魏庆福,姚亦鸣,李枫,等.STD总线工业控制机的设计与应用[M].北京:科学出版社,1992
|