在PC机中,用VB编了以下程序 MSComm1.OutBufferCount = 0
Dim buffer As Variant
buffer = "F" '46
MSComm1.Output = buffer
Dim cc(0) As Byte
cc(0) = Val(txtSpeedInt.Text) 'txtSpeedInt.Text="130"
MSComm1.Output = cc
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
If MSComm1.OutBufferCount = 0 Then
MsgBox "数据已经发送出去"
Else
MsgBox "线路不通"
End If我的PC还没有跟单片机相连,但运行了上面的程序后,为什么得到的对话框
内容是"数据已经发送出去",而不是"线路不通".OutBufferCount不是返回发送缓冲区等待发送的字符数吗?我的PC机没有跟单片机相连,OutBufferCount应该不等于0啊。(Do...loop until语句有跟没有结果都一样)
Dim buffer As Variant
buffer = "F" '46
MSComm1.Output = buffer
Dim cc(0) As Byte
cc(0) = Val(txtSpeedInt.Text) 'txtSpeedInt.Text="130"
MSComm1.Output = cc
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
If MSComm1.OutBufferCount = 0 Then
MsgBox "数据已经发送出去"
Else
MsgBox "线路不通"
End If我的PC还没有跟单片机相连,但运行了上面的程序后,为什么得到的对话框
内容是"数据已经发送出去",而不是"线路不通".OutBufferCount不是返回发送缓冲区等待发送的字符数吗?我的PC机没有跟单片机相连,OutBufferCount应该不等于0啊。(Do...loop until语句有跟没有结果都一样)
Dim Arr() as Byte' 设定并开启连接埠
MSComm1.CommPort = 1
' 连线速度 9600 baud、无同位检查、资料位元 8、停止位元 1
MSComm1.Settings = "9600,N,8,1"
告诉控制项当使用 Input 时,读取整个暂存区
MSComm1.InputLen = 0
MSComm1.PortOpen = True
' 设定 InputMode 以读取二进位资料
MSComm1.InputMode = comInputModeBinary
' 等待直到输入暂存区有 10 个位元组
Do Until MSComm1.InBufferCount < 10
DoEvents
Loop
' 往暂存区存二进位资料
Buffer = MSComm1.Input
' 指定给位元组阵列以便处理
Arr = Buffer
MSComm1.PortOpen = False
而送出Binary的资料则没有像InputMode的属性,在VB5.0中
Output属性是接Varant所以直接将ByteArray传送出去就好了,
所以重点变成如何将想传的资料放入ByteArrayDim Buffer(5)Buffer(0) = 210
Buffer(1) = 150
Buffer(2) = 68
Buffer(3) = 56MSComm1.Output = Buffer