用mscomm编程,当设置portopen=true,为什么串口会自动发送ff呢,设置的为16进制的数据!?如何避免,急,急,急,请各位帮忙

解决方案 »

  1.   

    就是比如我在form_load事件中
    分别设置,
    mscomm控件实例的settings,comport,等等,即使我什么不设置,然后我将控件的portopen设置为true,,与这台机器相连的另外一台机器上就收到了ff, 就是说当mscomm控件设置portopen为true时,控件本身就发送了一个ff过去,不知道我说明白没有!!!?、
      

  2.   

    Private Sub Command1_Click()
    Dim a() As Byte
    ReDim a(8)
    a(0) = 1
    a(1) = 2
    a(2) = 3
    a(3) = 4
    a(4) = 5
    a(5) = 6
    a(6) = 7
    a(7) = 8 ',0x02,0x03,0x04,0x05,0x06,0x07
    MSComm1.Output = aEnd SubPrivate Sub Command2_Click()
    If (MSComm1.PortOpen = True) Then
    MSComm1.PortOpen = False
    End IfIf (MSComm1.PortOpen = False) Then
    MSComm1.PortOpen = True
    End If
    End SubPrivate Sub Form_Load()MSComm1.CommPort = 2
    MSComm1.InBufferSize = 1024
    MSComm1.OutBufferSize = 512
    If (MSComm1.PortOpen = False) Then
    MSComm1.PortOpen = True
    MSComm1.InputMode = comInputModeBinary
    End If
    End SubPrivate Sub MSComm1_OnComm()
    If MSComm1.CommEvent = 1 Then
    MsgBox ("hahahaha")
    End If
    End Sub
    这是上位机的发送程序,下位机用另外一台电脑,用龚建伟写的串口调试程序,一直打开这串口并查看串口数据,这样,当form load的时候就有ff发送过去,有一个button是不停在开关port,它就不停的发送ff,请各位帮忙,把下位机设置为接受16进制数!!!!!!!!!!!!!!!!!!!!!!!!!!请各位帮忙!!!!
      

  3.   

    你按command1的时候有没有东西发送过去??你是不是不断的在按command2啊??(这个buntton是让你打开串口的)
      

  4.   

    有东西发送过去啊,
    调试的时候,当form_load事件触发时它就发送了ff,然后如果我click command1,则下位机会收到数组a,command2只是为了证实当打开串口时有ff发送过去,没有别的用啊
      

  5.   

    有东西发送过去啊,
    调试的时候,当form_load事件触发时它就发送了ff,然后如果我click command1,则下位机会收到数组a,command2只是为了证实当打开串口时有ff发送过去,没有别的用啊
      

  6.   

    你的情况是不是 当你form_load的时候 就发了一个 ff 出去当你每次按command2 的时候就发送一个ff
      

  7.   

    可能是因为你 每次都先关闭 再打开 串口  让接收方出现误动作??你再代码里面 
    Private Sub Command2_Click()
    ////If (MSComm1.PortOpen = True) Then
    //MSComm1.PortOpen = False
    //End If  这个关闭不要就可以了If (MSComm1.PortOpen = False) Then
    MSComm1.PortOpen = True
    End If
    End Sub
      

  8.   

    我的这个command2只是为了证实这个问题,我程序里面肯定不会这么写的吗!!,但是我的form_load事件中,ff还是会发送一次,我怎么避免呢!!
      

  9.   

    一样道理  
    If (MSComm1.PortOpen = False) Then
    MSComm1.PortOpen = True
    End If就写这个就可以了 !!
    但是你 form_unload 里面关闭 串口 
      

  10.   

    你的意思是,如果我的端口从false变为true,控件必须要发送ff吗,就是说
    当MSComm1.PortOpen = False的情况下,如果我MSComm1.PortOpen=true ,则不可避免要发送ff吗!?
      

  11.   

    好象没有这个道理(每次open端口必定有ff发送),正常我们做的时候没有这个问题,也不晓得是什么原因,是不是线路问题呀!信号衰减,下位机误动作!
      

  12.   

    我在做串口通讯程序时遇到了这样一个问题:在VB中我需要将一个浮点型数据(single)转换成一个四位字节的字符串后,送给下位才能实现通讯.
    例如:需要将数据    1.11
            转换成    (3F 8E 14 7B) 字符串的形式发给下位
    另外,如何将下位传给我的字符串(3F 8E 14 7B)
            转换成浮点数 1.11
    请各位高手给看看,谢谢
      

  13.   

    你的意思是,如果我的端口从false变为true,控件必须要发送ff吗,就是说
    当MSComm1.PortOpen = False的情况下,如果我MSComm1.PortOpen=true ,则不可避免要发送ff吗!?楼主我不是这个意思  是 
    由 ture变成false再变为ture的时候 可能因为 串口上面由些电平的变化(我也是估计的)引起错误!
    因为由你的代码看来 要是formload 或 按command2 前串口已经打开的话你就会做这样的动作:ture变成false再变为ture。