最近做一个串口调试软件,要求用16进制发送和接收。但现在数据可以正确发送,也可以将返回数据读入到缓冲区,但是当要送出显示的时候却一直没办法接收,其中一段源程序如下,我是定义成数组形式来接收数据,接收的数据为11个字节     Select Case frmComm.MSComm1.CommEvent
     Case comEvReceive
   bytData = frmComm.MSComm1.Input           '从缓冲区接收反馈数据
   For n = 0 To 11             '写入到数组arrReceive中
   arrReceive(n) = bytData(n)
   Next n
   End Select

解决方案 »

  1.   

    因为我用了另外一个串口com2来监视com1的情况,com2显示com1可以发送出数据,并且也将单片机发回的数据读到了缓冲区内,我需要将收到的数据其中一部分显示出来(listview):NAME就是我要显示的东西,现在也不知道是这段程序的问题,还是listview那段的问题,但是listview那段以前都正确显示所以也没有改过,我认为那一段问题应该很小。还有一个问题就是我定义bytdata:DIM bytdata AS BYTE Select Case frmComm.MSComm1.CommEvent
         Case comEvReceive
       bytData = frmComm.MSComm1.Input           '从缓冲区接收反馈数据
       For n = 0 To 11             '写入到数组arrReceive中
       arrReceive(n) = bytData(n)
       Next n
       End Select
     “ NAME=arrReceive(2)”
      

  2.   

    现在问题解决了,去掉了select case这几句,如下
    bytData = frmComm.MSComm1.Input    
    For n = 0 To 11    
    aa=mid(bytData,n+1,1) 
    arrReceive(n)=Hex(Asc(aa)) 
    Next n
    NAME=arrReceive(2)              
      

  3.   

    我看了一下楼主原来的程序
    不知道bytData 是如何定义的,
    如果楼主把bytData定义为一个字符串,那是不能使用bytData()访问字符串中单个字符的,
    如果bytData是一个字符串数组的话,则也是不能使用bytData = frmComm.MSComm1.Input这样的语句的。
    一般来说通常的做法都是使用一个字符串变量,先将COM中的输入缓冲区的内容都读出来,然后再对字符串进行操作处理。