登录
首页 电脑编程
回帖 发帖
正文

主题:关于MSCCOM.INPUT属性的疑问请各位老师详解,谢谢

点击:2030 回复:5

我接受的是十六进制数据,所以INPUTMODE定义为1,因为书上说INPUT属性不能直接赋值给字节数组,所以我定义了一个Variant的变量来接受数据,再赋给字节数组。但是i程序i运行总停在IF语句这里,并报下标越界,我参考过别人的程序都直接赋值字节数组,所以我搞不懂了,请各位老师指教。
以下是程序,请帮我看看
Public Sub read_data()
 Dim zhancun1, zhancun2 As Integer
 Dim shuju As Variant
 Dim Time_out, I As Integer
 Dim ERROR_COM  As Boolean
 Dim send(3) As Byte
 Dim shuju1() As Byte
 MSComm1.InBufferCount = 0 'clear off  inbuffer
send(0) = &HFB: send(1) = &H1: send(2) = ((&HFB Xor &H1) And &H7F): sen(3) = &HFE
   MSComm1.Output = send
  '判断通讯错误
   Do
   DoEvents
   Loop Until (MSComm1.InBufferCount >= 6)
  shuju = MSComm1.Input
shuju1 = shuju
  If Val(shuju1(0)) = Val(&HF0) And Val(shuju1(1)) = Val(&H1) Then
     zhancun1 = shuju(3) '取出数据位
     zhancun2 = shuju(4)
     Elevator.floor = Revert(zhancun1)
     Call explain(zhancun2)
     End If
  Call display_data1
End Sub
05-05-31 15:27
Dim shuju1() As Byte
shuju1 = shuju
If Val(shuju1(0)) = Val(&HF0) And Val(shuju1(1)) = Val(&H1) Then
绝对错!
05-06-12 22:49
支持顶楼的!
05-09-20 20:33
ni de yu ju ying gai you hen du wen ti.
05-09-22 19:31
应该有很多问题。
05-09-22 19:32
告诉你一种我调试的心得:
VB中有一种Byte数据类型,每个Byte只占一个字节,数值范围也为0~255,可见,这种Byte型变量与单片机中的字节是一致的。所以发送和接收数据时可用Byte型,但在实验中却发现,使用该变量必须小心。使用Output和Input指令时只能用数组形式操作,即先定义一个Byte型数组,若要发送,可将数据赋值给该数组的各个指针,发送时只需用该数组的名称,整个数组的数据即可发送。
如:    Dim temp(0 To 1) As Byte
       temp(0) = &HFF
       temp(1) = &HFE
       Comm1.Output = temp
执行如上指令即可完成发送。接收数据时也类似,只需先定义好数据,再执行一条:temp=Comm1.Input即可完成接收。
05-10-19 17:03

工控新闻

更多新闻资讯