协议:
波特率19200,8个数据位,外加校验位,发送地址采用prMark校验方式,发送命令采用prSpace校验方式1、发送板号(1个字节,地址方式);
2、等待返回板号(1个字节),如果等候超时则发送复位命令;如果返回的板号不正确,也发送复位命令;
3、发送通道号(1个字节,命令方式,高四位和低四位都为通道号码,用于校验)
4、等候开锁结果(1个字节)上面是单片机公司给我提供的协议.
下面是我写的代码作用是发送一个板号。等待返回板号。
问题一:DATA = BUFFER 出现编译错误. 提示“不能给数组赋值”
问题二:把DATA = BUFFER改成 DATA(0)=BUFFER可以通过编译。但是我用DEBUG.PRING DATA 时 DATA
        的值是空的。这是不是说明我向串口发送数据没有成功。这怎么解决呀??
问题三:我的代码的其他部分我想还会有很多问题。请各位指正。下面是我的代码:
Private Sub Command1_Click()
Call SendData
End SubPrivate Sub SendData()
'发送一个字节
Dim BUFFER As Variant  '定义一个Variant变量
Dim DATA(0) As Byte     '定义一个数组变量
DATA(0) = 3BUFFER = DATA       '数组变量赋值给Variant变量
MSComm1.Output = BUFFER  '将Variant变量发送 发送三个字节
End SubPrivate Sub Form_Load()
MSComm1.InputMode = comInputModeBinary
MSComm1.CommPort = 1  '设置串口号
MSComm1.Settings = "19200,n,8,1" '设置波特率   MSComm1.InputLen = 0
   MSComm1.RTSEnable = True
MSComm1.RThreshold = 1 '设置接收一个字节MSComm1.PortOpen = True  '开串口MSComm1.InBufferCount = 0 '清输入缓冲区
MSComm1.OutBufferCount = 0 '清输出缓冲区
End SubPrivate Sub MSComm1_OnComm()
'接收一个字节
Dim BUFFER As Variant    '定义一个Variant变量
Dim DATA(0) As Byte      '定义一个数组变量
Select Case MSComm1.CommEvent
Case MSComm - EV - RECEIVE '接收事件发生
BUFFER = MSComm1.Input     '用Variant变量接收
DATA = BUFFER             ' Variant变量赋值给数组变量
Text1.Text = Str(DATA(0))   '显示此数组
End Select
End Sub

解决方案 »

  1.   

    1、发送板号(1个字节,地址方式);
    单片机的要求是什么? 发送3  的ascii码 还是什么?? 3本事就是2进制的00000011还有“地址方式” 是代表什么 因为 如果是单片机的识位的话 要在停止位那边设置的 
    能些详细点协议码??
    Dim DATA() As Byte     '定义一个数组变量redim DATA(0)
    DATA(0) = 3
    MSComm1.Output = DATA 就能发送16进制数的
      

  2.   

    >协议:
    >波特率19200,8个数据位,外加校验位,发送地址采用prMark校验方式,发送命令采用prSpace校验方式实际上,这是一个主机对多个从设备的 RS-485 通讯协议。
    发地址(呼叫从设备):
    MSComm1.Settings = "19200,M,8,1"
    发命令:
    MSComm1.Settings = "19200,S,8,1">问题一:DATA = BUFFER 出现编译错误. 提示“不能给数组赋值”
    发送过程不需要通过 Variant 类型的变量转换,直接
    MSComm1.Output = Data
      

  3.   

    1    domhuang(不名)谢谢您的指导。 发送板号(一个字节,地址方式) “地址方式“是指 校验方式
    但我不知道是什么校验方式
    2   单片机就是要一个二进制的数字(还有校验)3我试了,但是仍然没有反应!!
      

  4.   

    of123() 谢谢您!!1 我听明白您的意思了!!第一个 "19200,m,8,1"的问题我已经纠正了!!
                       2 DATA=BUFFER 出现错误不是发生在发送的时候,而是发生在接收的时候
                         (我的代码里面有两个DATA=BUFFER)
      

  5.   

    Private Sub MSComm1_OnComm()
    '接收一个字节
    Dim BUFFER As Variant    '定义一个Variant变量
    Dim DATA() As Byte      '定义一个数组变量,这里不要限制维数
    Dim i As Integer
    Select Case MSComm1.CommEvent
    Case comEvReceive       '接收事件发生,这里常数错误******
    BUFFER = MSComm1.Input     '用Variant变量接收
    DATA = BUFFER             ' Variant变量赋值给数组变量
    Text1 = ""
    For i = 0 To Ubound(DATA)
    Text1.Text = Text1 & CStr(DATA(i))   '显示此数组
    Next i
    End Select
    End Sub