呵呵.这个我知道.正好最近在写这个东东. 给你一段我写的CODE吧.首先定义COM口的连接, ------------------------ 先说下控件属性 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。 ------------------------ COM口连接和打开. Private Sub Form_Load() With MSComm1 .CommPort = 3 '定义COM口 .Settings = "9600,n,8,1" '"BBBB,P,D,S"BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数 .InBufferCount = 0 '清除输入缓存 .OutBufferCount = 0 '清除输入缓存 .InputMode = comInputModeText '数据接收方式 .InputLen=1 '定义在接收多少个字节后触发OnComm事件,这个很重要.如果这个数值过大.接收的数据不够的话.是不会触发OnComm事件的.而数据只会存到下面的数据缓存中 .InBufferSize = 20 '数据缓存大小 If .PortOpen = False Then '判断COM口是否打开.如果未打开就打开它.如果出错就弹出错误代码 .PortOpen = True If Err.Number Then MsgBox "Cann't connect to COM3,The Error No. is" & Err.Number Exit Sub End If End If End With End Sub ------------------------------- 发送数据 Private Sub Command1_Click() '定义一个按钮 If MSComm1.PortOpen = False Then '判断COM口是否打开 MsgBox "串口未打开!" Exit Sub End If MSComm1.Output = "要发送的数据" & vbCr '发送数据.记得要用&VBCR结束.(也就是回车) END SUB -------------------------------- 接收数据 Private Sub mscomm1_OnComm() 'OnComm事件.当接收到的数据到InputLen的大小后就会触发这个事件 Dim code1 As String '定义一个数组.接收缓存中的数据 With MSComm1 Select Case .CommEvent '事件状态. Case comEvReceive '当MSCOMM1.COMMEVENT的值为COMEVRECEIVE时(也就是为接收状态时,我不知道是不是可以这样理解).就把缓存中的数据存到CODE1里, code1 = .Input Text1.Text = Text1.Text & vbCrLf & code1 '打印数据 End Select End With End Sub -------------------------------- 完了... 这是我前两天写的一个小程序测试用的. 如果你觉得这些写得不够清楚的话.顺便给点参考资料: http://dev.yesky.com/347/2636847.shtml 我就是看这写的.顺便说一句.我是新手... -------------------------------- 第一次回别人的技术贴.给点分吧啊...
给你一段我写的CODE吧.首先定义COM口的连接,
------------------------
先说下控件属性
CommPort 设置并返回通讯端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
------------------------
COM口连接和打开.
Private Sub Form_Load()
With MSComm1
.CommPort = 3 '定义COM口
.Settings = "9600,n,8,1" '"BBBB,P,D,S"BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数
.InBufferCount = 0 '清除输入缓存
.OutBufferCount = 0 '清除输入缓存
.InputMode = comInputModeText '数据接收方式
.InputLen=1 '定义在接收多少个字节后触发OnComm事件,这个很重要.如果这个数值过大.接收的数据不够的话.是不会触发OnComm事件的.而数据只会存到下面的数据缓存中
.InBufferSize = 20 '数据缓存大小
If .PortOpen = False Then '判断COM口是否打开.如果未打开就打开它.如果出错就弹出错误代码
.PortOpen = True
If Err.Number Then
MsgBox "Cann't connect to COM3,The Error No. is" & Err.Number
Exit Sub
End If
End If
End With
End Sub
-------------------------------
发送数据
Private Sub Command1_Click() '定义一个按钮
If MSComm1.PortOpen = False Then '判断COM口是否打开
MsgBox "串口未打开!"
Exit Sub
End If
MSComm1.Output = "要发送的数据" & vbCr '发送数据.记得要用&VBCR结束.(也就是回车)
END SUB
--------------------------------
接收数据
Private Sub mscomm1_OnComm() 'OnComm事件.当接收到的数据到InputLen的大小后就会触发这个事件
Dim code1 As String '定义一个数组.接收缓存中的数据
With MSComm1
Select Case .CommEvent '事件状态.
Case comEvReceive '当MSCOMM1.COMMEVENT的值为COMEVRECEIVE时(也就是为接收状态时,我不知道是不是可以这样理解).就把缓存中的数据存到CODE1里,
code1 = .Input
Text1.Text = Text1.Text & vbCrLf & code1 '打印数据
End Select
End With
End Sub
--------------------------------
完了...
这是我前两天写的一个小程序测试用的.
如果你觉得这些写得不够清楚的话.顺便给点参考资料:
http://dev.yesky.com/347/2636847.shtml
我就是看这写的.顺便说一句.我是新手...
--------------------------------
第一次回别人的技术贴.给点分吧啊...
好象写错了点.INPUTLEN不是触发OnComm的条件.而是.Rthreshold.在这里面没有设置.参见
http://dev.yesky.com/347/2636847.shtml
目前正在做围棋人工智能9段,解决世界巅峰难题想进入高手,高高手行列的加我QQ:184324486
Mobile:13693481232
目前正在做围棋人工智能10段,解决世界巅峰难题想进入更高手,更高高手行列的加我QQ:37918751
Mobile:13582426162