VB串行通信中MSComm1.Output 发送的问题
我的代码如下:PrivateSubMSComm1_OnComm()Dima(4)AsBytea(0)=&HAa(1)=&H5Ea(2)=&HAa(3)=&H5Ea(4)=...
我的代码如下:
Private Sub MSComm1_OnComm()
Dim a(4) As Byte
a(0) = &HA
a(1) = &H5E
a(2) = &HA
a(3) = &H5E
a(4) = &H11
MSComm1.Output = a
End Sub
为什么每次发送,收到的都是两个重复的数据,比如上面收到的就是“0A 5E 0A 5E 11 0A 5E 0A 5E 11 ”。
理论上来说,每次发送,收到的应该是“0A 5E 0A 5E 11 ”才对。望高手解答。
我的没有写接收程序,只是定义了MSComm1.RThreshold = 2。初始化子程序如下:
Private Sub Form_Load()
With MSComm1
.CommPort = 2
.Settings = "115200,e,8,1"
.InputMode = 1
.SThreshold = 0
.RThreshold = 2
.InputLen = 0
.OutBufferCount = 0
.InBufferCount = 0
End With
MSComm1.PortOpen = True
End Sub
利用串口调试工具发送“<a”,却收到两次共10个字节数据,但是如果只发送字符一个字符“a”,就能正常收到5个字节数据。尝试过修改.RThreshold的值。仍然无法解决。 展开
Private Sub MSComm1_OnComm()
Dim a(4) As Byte
a(0) = &HA
a(1) = &H5E
a(2) = &HA
a(3) = &H5E
a(4) = &H11
MSComm1.Output = a
End Sub
为什么每次发送,收到的都是两个重复的数据,比如上面收到的就是“0A 5E 0A 5E 11 0A 5E 0A 5E 11 ”。
理论上来说,每次发送,收到的应该是“0A 5E 0A 5E 11 ”才对。望高手解答。
我的没有写接收程序,只是定义了MSComm1.RThreshold = 2。初始化子程序如下:
Private Sub Form_Load()
With MSComm1
.CommPort = 2
.Settings = "115200,e,8,1"
.InputMode = 1
.SThreshold = 0
.RThreshold = 2
.InputLen = 0
.OutBufferCount = 0
.InBufferCount = 0
End With
MSComm1.PortOpen = True
End Sub
利用串口调试工具发送“<a”,却收到两次共10个字节数据,但是如果只发送字符一个字符“a”,就能正常收到5个字节数据。尝试过修改.RThreshold的值。仍然无法解决。 展开
4个回答
展开全部
我认为是:你在MSCOMM1控件的ONCOMM事件中再次进行发送,于是有以上效果。
追问
非常感谢。我的没有写接收程序,只是定义了MSComm1.RThreshold = 2。初始化子程序如下:
Private Sub Form_Load()
With MSComm1
.CommPort = 2
.Settings = "115200,e,8,1"
.InputMode = 1
.SThreshold = 0
.RThreshold = 2
.InputLen = 0
.OutBufferCount = 0
.InBufferCount = 0
End With
MSComm1.PortOpen = True
End Sub
利用串口调试工具发送“<a”,却收到两次数据
追答
其实首先就应该说明,当使用OnComm,所用的通讯方式就是“事件驱动方式”。
这段是你写的代码吗?
Private Sub MSComm1_OnComm()
Dim a(4) As Byte
a(0) = &HA
a(1) = &H5E
a(2) = &HA
a(3) = &H5E
a(4) = &H11
MSComm1.Output = a
End Sub
不是接收的代码吗?我理解是:OnComm事件就是串行控件接收时所做的事情,应该做的是将接收到的内容送到某地(如将值送到文本框中去),而且你的代码还是在MSComm1控件的OnComm事件中将a送到MSComm1的输出中去再次进行发送。不怪?
另外,应该还有实现“发送”操作的代码吧?
[个人意见,如有错误请批评指正]
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sj(0) = &H1
MSComm1.Output =sj
发送2字节
Dim sj(1) As Byte
sj(0) = &H1
sj(1) = &H1A
MSComm1.Output =sj
MSComm1.Output =sj
发送2字节
Dim sj(1) As Byte
sj(0) = &H1
sj(1) = &H1A
MSComm1.Output =sj
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意 楼上的 看法
可能 是你 程序 里 有 2 次接收
贴出 你的 接收 程序
可能 是你 程序 里 有 2 次接收
贴出 你的 接收 程序
追问
非常感谢。我的没有写接收程序,只是定义了MSComm1.RThreshold = 2。初始化子程序如下:
Private Sub Form_Load()
With MSComm1
.CommPort = 2
.Settings = "115200,e,8,1"
.InputMode = 1
.SThreshold = 0
.RThreshold = 2
.InputLen = 0
.OutBufferCount = 0
.InBufferCount = 0
End With
MSComm1.PortOpen = True
End Sub
利用串口调试工具发送“<a”,却收到两次数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定有两次事件运行了,你没发现
追问
非常感谢。我的没有写接收程序,只是定义了MSComm1.RThreshold = 2。初始化子程序如下:
Private Sub Form_Load()
With MSComm1
.CommPort = 2
.Settings = "115200,e,8,1"
.InputMode = 1
.SThreshold = 0
.RThreshold = 2
.InputLen = 0
.OutBufferCount = 0
.InBufferCount = 0
End With
MSComm1.PortOpen = True
End Sub
利用串口调试工具发送“<a”,却收到两次数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询