VB的MSCOMM控件实现与单片机串口通信,怎么知道发送的是地址还是数据 也就是怎么控制单片机接受到的数据中的RB8.TB8位是1还是0
mscomm1.setting="9600,M,8,1"  地址 
mscomm1.setting="9600,S,8,1"  数据
  
    

解决方案 »

  1.   

    =1
    space=0
    楼主知道了还问?
      

  2.   

    通信子函数:::::::
    Public Function TongXin(i As Integer)
    Dim c$
    Dim ID As String
    k = DataGrid1.VisibleRows - 1
    ID = Str(i)
    MSComm1.Settings = " 9600,M,8,1 "      '设置地址帧
    MSComm1.Output = ID                    '发送单片机地址
    Delay (1)
    If (fla(i)) Then
     MSComm1.Settings = " 9600,S,8,1 "     '接受单片机的数据 有必要设置吗?
         Call DataReceive1
     For j = 0 To k Step 1   查表datagrid1
         ..............
      Next
      MSComm1.Settings = " 9600,S,8,1 "    '给单片机发送数据
           Call DataSend
    Else
       If (fla(i) = False) Then
       MSComm1.Settings = " 9600,S,8,1 "     '接受单片机的数据 有必要设置吗?
     Call DataReceive2
    For j = 0 To k Step 1
    ................                    查表
    Next
    End If
    End If
    Timer1.Enabled = True
    End Function
    我想确定一下 这里的M,S  是不是就是单片机收到数据中的RB8,TB8位 还有就是vb接受数据还有必要设置MSComm1.Settings = " 9600,S,8,1 " 
    论坛上有人说要更改Mscomm属性时,应先开端口 再关 即:
      SCOMM1.PORTOPEN=FALSE   
      mscomm1.setting="9600,e,8,1"   
      MSCOMM1.PORTOPEN=TRUE   
         
      MSCOMM1.PORTOPEN=FALSE   
      mscomm1.setting="9600,O,8,1"   
      MSCOMM1.PORTOPEN=TRUE  
    有必要吗?   先谢谢各位了
      

  3.   

    改变setting值是要先关的.改变setting之后再开.这样才有效..可也是MSCOMM不足的一个地方.
    不过我们一般不用两种通信协议还有一件事情你要确定单片机以RB8还是以TB8返回数据
    才能确定