老菜鸟、周公您好,继续有问题请教 点击:203 | 回复:2



hoige

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-10-27 14:34:49
楼主

老菜鸟、周公您好,现在空调通过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 也就是缓冲区没有返回任何内容

请赐教,这个程序应该如何写??我的漏了什么????谢谢,问题比较低级,但周围找不到人,谢谢谢谢

?




有偿服务

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 53回
  • 年度积分:0
  • 历史总积分:121
  • 注册:2008年7月30日
发表于:2008-10-27 20:02:11
1楼
VB默认你的“OutDataByte”数组下标从0开始。也就是说你的“OutDataByte”数组比你预期的多了一个“OutDataByte(0)”。?你发送的是“00 02000130300302”。前面多了个“00H”。

hoige

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-10-29 12:04:15
2楼

谢谢指教

可是俺穷啊,没钱支付您的服务费哦

您说的确实是一个问题,我后来也发现了,这段代码是抄来的,但这个问题还没有影响到这段小程序的运行

后来这个程序也调整好了

就把这个新手的小教训也写出来,供和我一样的菜鸟参考

mscomm的inputmode 要设置为binary ,文本模式对于控制上估计不太好用(很多参数无法对应文本)

发送参数的模式就如所示方式,但注意byte数组的使用,参照“有偿服务”的提示(不过对我这个程序好象运行正常,当然最好要规范)

接收数据也需要采用同样的模式

********************************************************

Dim Ss As Variant

DelayTime



Ss = Form1.MSComm1.Input

********************************************

这样,Ss就变成了字节数组,逐个取其中的数据即可(ascii代码)

?

?


热门招聘
相关主题

官方公众号

智造工程师