老菜鸟、周公您好,现在空调通过RS485我已经和计算机建立了连接并有返回。如下:
通过串口调试程序,发送HEX?? 02000130300302
结果有了回应:"(前面为几个空格)00101202000118000000"
表明通信完好,设置参数为“1200,E,7,1”,也没有问题
现在我开始用Visual basic调试,结果是无论如何都不返回数据,VB调试程序如下:
*************************************************************
Private Sub DelayTime()
Dim bDT As Boolean
Dim sPrevious As Single
Dim sLast As Single
bDT = True
sPrevious = Timer
Do While bDT
If Timer - sPrevious >= 0.3 Then bDT = False
Loop
bDT = True
End Sub
Private Sub Command2_Click()
Dim strflash, strreturn As String, str1
Dim OutDataByte() As Byte
Dim i As Integer
strflash = "02000130300302"
ReDim OutDataByte(Len(strflash) / 2)
For i = 1 To Len(strflash) / 2
OutDataByte(i) = CByte(Val("&H" &mid(strflash, i * 2 - 1, 2)))
Next
MSComm1.Settings = "1200,E,7,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
Form1.MSComm1.Output = OutDataByte
DelayTime
strreturn = "a"
str1 = Form1.MSComm1.Input
strreturn = strreturn + str1
MsgBox (strreturn)
End Sub
?
*********************************************************
用的是Command2_Click()作为测试返回的,inputlen已经设置为0了
也就是返回的字符串前面加个a作为提示符,但是怎么做,返回就单单一个a 也就是缓冲区没有返回任何内容
请赐教,这个程序应该如何写??我的漏了什么????谢谢,问题比较低级,但周围找不到人,谢谢谢谢
?
谢谢指教
可是俺穷啊,没钱支付您的服务费哦
您说的确实是一个问题,我后来也发现了,这段代码是抄来的,但这个问题还没有影响到这段小程序的运行
后来这个程序也调整好了
就把这个新手的小教训也写出来,供和我一样的菜鸟参考
mscomm的inputmode 要设置为binary ,文本模式对于控制上估计不太好用(很多参数无法对应文本)
发送参数的模式就如所示方式,但注意byte数组的使用,参照“有偿服务”的提示(不过对我这个程序好象运行正常,当然最好要规范)
接收数据也需要采用同样的模式
********************************************************
Dim Ss As Variant
DelayTime
Ss = Form1.MSComm1.Input
********************************************
这样,Ss就变成了字节数组,逐个取其中的数据即可(ascii代码)
?
?