在做一个串口通讯的exe,PC端先循环发送握手信号&H20,一旦检测到握手成功,就发送命令信号&H2,然后再进行下一步操作。问题是:
在发送命令信号&H2时,根据打印的信息,下位机接收到的仍然是握手信号&H20,为什么会这样?
后来尝试在检测到握手成功后清空发送缓冲和接收缓冲,再发送命令信号,结果得不到改观;
而后又尝试在检测到握手成功后清空发送缓冲和接收缓冲、关闭串口,再打开串口,再执行清空发送缓冲和接收缓冲,再发送命令信号,结果仍得
不到改观。代码片断如下:
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_CODE) '&H20
If IsRxDataReady(1, 0) = True Then '
ReDim returnData(1)
returnData = ReadRxData(10)
If returnData(0) Then 'Handshak is OK ?
Exit Do
End If
End If
Loop MSComm1.OutBufferCount = 0 'clean buffer
MSComm1.InBufferCount = 0
MSComm1.PortOpen = False 'close com port OpenCommPort 'Open com port
MSComm1.OutBufferCount = 0 'clean buffer
MSComm1.InBufferCount = 0
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_COMMAND) '&H2
If IsRxDataReady(1, 0) = True Then
ReDim returnData(1)
returnData = ReadRxData(1)
If returnData(0) = CCHR Then 'Command is OK ?
Exit Do
End If
End If
Loop 各位VB前辈,多多指教,谢谢
如果可以的话,可以QQ指导:36039261,或E-mail:[email protected] 因为刚注册,分不多
请赐教,不胜感激
在发送命令信号&H2时,根据打印的信息,下位机接收到的仍然是握手信号&H20,为什么会这样?
后来尝试在检测到握手成功后清空发送缓冲和接收缓冲,再发送命令信号,结果得不到改观;
而后又尝试在检测到握手成功后清空发送缓冲和接收缓冲、关闭串口,再打开串口,再执行清空发送缓冲和接收缓冲,再发送命令信号,结果仍得
不到改观。代码片断如下:
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_CODE) '&H20
If IsRxDataReady(1, 0) = True Then '
ReDim returnData(1)
returnData = ReadRxData(10)
If returnData(0) Then 'Handshak is OK ?
Exit Do
End If
End If
Loop MSComm1.OutBufferCount = 0 'clean buffer
MSComm1.InBufferCount = 0
MSComm1.PortOpen = False 'close com port OpenCommPort 'Open com port
MSComm1.OutBufferCount = 0 'clean buffer
MSComm1.InBufferCount = 0
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_COMMAND) '&H2
If IsRxDataReady(1, 0) = True Then
ReDim returnData(1)
returnData = ReadRxData(1)
If returnData(0) = CCHR Then 'Command is OK ?
Exit Do
End If
End If
Loop 各位VB前辈,多多指教,谢谢
如果可以的话,可以QQ指导:36039261,或E-mail:[email protected] 因为刚注册,分不多
请赐教,不胜感激
解决方案 »
- 如何禁止程序一开始启动(或webbrowser1访问的是about blank)时触发WebBrowser1_DocumentComplete事件?
- 有个判断数据库是否已经打开的小问题,在线等~~~~~~~~~~~~~~~~~~~~~~~
- 各位幫我看看這段查詢代碼,要怎麼樣寫才對.
- 各位大虾,快快帮忙,打印问题在线等急!!!!绝对给分
- 问一个奇怪的问题
- 如何知道一个控件是否已经注册
- 小小问题,分数高:如何在Richtext中显示图片和Text。在线等待中。。。
- 非常感谢大家对我的帮助,撒分~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
- 谁来教教我
- 十万火急: 如何把某个text字段的内容写到文本文件中?
- 如何使用未添加控件的属性?
- VB5.0生成EXE文件 乱码!!!!!!!
returnData(0)清空是这样吗:returnData = Empty
这样试了,结果依旧。而且,我通过打印信息,已经确认握手成功,只待进行命令操作了,关键问题是:在接下来的数据发送中,不管我发送啥数据,总得到的是一样的结果。请问还有更贴切的建议吗?
谢谢,在线企待
还有你在 sendbyte (HS_COMMAND) '&H2
这句设个断点,单步调试一下
我想,如果按照逻辑分析的话,我发了一个数据后,清空了缓冲区,再发一个新数据,不应该出现这样的问题啊
我分析过是否是定时器的问题,但在命令成功之前是没有使能定时器的对了,是不是这个循环有毛病:
"
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_CODE) '&H20
If IsRxDataReady(1, 0) = True Then '
ReDim returnData(1)
returnData = ReadRxData(10)
If returnData(0) Then 'Handshak is OK ?
Exit Do
End If
End If
Loop
"
上位机在接受到正确数据returnData之前已经发了NN多的&H20,也就是说下位机的接受缓冲区中已经有了NN多的&H20,这样的话,在NNN个
"
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_COMMAND) '&H2
If IsRxDataReady(1, 0) = True Then
ReDim returnData(1)
returnData = ReadRxData(1)
If returnData(0) = CCHR Then 'Command is OK ?
Exit Do
End If
End If
Loop
"
操作后,下位机应该也有机会收到&H2的呀。那时候好像PC机都快瘫了...
“
Do 'Just handshaking
If IsRxDataReady(1, 0) = True Then
ReDim returnData(1)
returnData = ReadRxData(10)
If returnData(0) Then
Exit Do
End If
returnData = ""
End If
Loop MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_CODE) 'Send &H20
returnData = ""
MSComm1.PortOpen = False
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
OpenCommPort
Do
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
sendbyte (HS_COMMAND) 'Send &H2
If IsRxDataReady(10, 0) = True Then
ReDim returnData(1)
returnData = ReadRxData(1)
If returnData(0) = CCHR Then
Exit Do
End If
returnData = ""
End If
Loop
”
问题如旧,肯请高手指点。多谢