VB串口的一个重要关口呀~请各位高手帮忙看一眼,谢谢

waxsnybb 2012-03-03 08:13:50
我要制作一个针对某一协议的串口,协议中,如果发送包是ef01ffffffff010003010005,则应答包为ef01ffffffff070003020c
下面是我的相关代码


Private Sub Form_Load()
MSComm1.Settings = "57600,n,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.InBufferSize = 40
MSComm1.OutBufferSize = 2
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
End Sub

Private Sub Command1_Click()
Dim lr(11) As Byte
lr(0) = &HEF: lr(1) = &H1: lr(2) = &HFF: lr(3) = &HFF: lr(4) = &HFF: lr(5) = &HFF: lr(6) = &H1: lr(7) = &H0
lr(8) = &H3: lr(9) = &H1: lr(10) = &H0: lr(11) = &H5 '我知道这样很笨,但不知道好办法,请指教
MSComm1.Output = lr
End Sub

Private Sub MSComm1_OnComm()
Dim re As String
Select Case MSComm1.CommEvent
Case comEvReceive
MsgBox "aaa" '这句是我用来测试的,点击command1后能出现box,到这是行得通的
re = re & MSComm1.Input '这句出现错误8020,读取comm设备错误
Text1.Text = re '我想将结果显示到text上,看看正确否
End If
End Select
End Sub


我手里有好几个串口助手,有的发送指令包时能收到正确的应答包,有的则不能
但是能好使的串口助手都不是用vb编的,所以没法看代码,vb编的都不好使...
现在很愁啊,这步是一个关卡,如果通了,下边自然也就迎刃而解了
请高手们不吝赐教,在下感激不尽
...全文
170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2012-03-03
  • 打赏
  • 举报
回复
端口没打开
MSComm1.OutBufferSize = 2设置太小,可以设置为1024
Private Sub Command1_Click()
Dim lr(11) As Byte
lr(0) = &HEF: lr(1) = &H1: lr(2) = &HFF: lr(3) = &HFF: lr(4) = &HFF: lr(5) = &HFF: lr(6) = &H1: lr(7) = &H0
lr(8) = &H3: lr(9) = &H1: lr(10) = &H0: lr(11) = &H5 '我知道这样很笨,但不知道好办法,请指教
MSComm1.Output = lr
End Sub


Private Sub Command1_Click()
Dim lr() As Byte
const sData as string="ef01ffffffff010003010005"
dim L as long
l=len(sdata)\2-1
redim lr(l)
dim j as long,i as long

for i=1 to L step 2
lr(j)=mid(sdata,i,2)
j=j+1
next

MSComm1.Output = lr
sleep(300)
dim sInput(100) as byte
sinput=mscomm1.input

End Sub

waxsnybb 2012-03-03
  • 打赏
  • 举报
回复
对了,我的是win7 32位系统
waxsnybb 2012-03-03
  • 打赏
  • 举报
回复
高手们呢,周六都休息了呀~

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧