有一帧数据是这样的(2,3,0,0D,0,1,16,FA)
我是这样写的
setlength(temp,8);
  temp[0]:=2;
  temp[1]:=3;
  temp[2]:=0;
  temp[3]:=13;
  temp[4]:=0;
  temp[5]:=1;
  temp[6]:=21;
  temp[7]:=250; comm1.WriteCommData(Pchar(temp),8);可是我用SPCOMM却怎么都发不出去,后来无意中发现,如果只发7位,甚至发9位却可以发出,唯独当最后一位为一个比较大的数字的时候却发不出去,请教这是怎么回事后来我试了试,最后一位如果不是250,而是25之类的小数字,倒是可以发出去,现在彻底迷惘了有哪位碰到过这类问题,帮我解决一下

解决方案 »

  1.   

    var temp :array of byte;刚刚又试了试,只要里面的数字大于127(7F)就不行。。搞不懂。。
      

  2.   

    是不是你的ByteSize属性设置为7了?
      

  3.   

    回复人: xixuemao(俺可是㊣②㈧经儿滴人) ( ) 信誉:100  2005-09-07 11:37:00  得分: 0  
     
     
       是不是你的ByteSize属性设置为7了?
      
     
    ///////这样的话,即使<127也没有办法发送出去第8位的吧!!!
    确实挺奇怪的一个问题,我一开始倒是怀疑动态数组的问题,本来想建议你用一个很大长度的静态数组来试一下的,后来想想,应该也没有什么关系.
    关注一下!!!
      

  4.   

    刚刚又试了试,如果用静态数组的话,还是发不出去,而且假如用静态数组,数组大小为[0..7],那么只要函数调用的时候参数大于8,也是发不出去的
    大家这里手头谁也有SPCOMM啊,帮我验证一下,真要怀疑是不是组件本身有BUG了。。
      

  5.   

    我刚才简单测试了一下,没有这种问题,我觉得要不你把你的代码帖上来看看。靠,帖代码上来就是非法言论,都什么啊?CSDN到底有什么限制啊。
      

  6.   

    object Comm1: TComm
        CommName = 'COM1'
        BaudRate = 9600
        ParityCheck = False
        Outx_CtsFlow = False
        Outx_DsrFlow = False
        DtrControl = DtrEnable
        DsrSensitivity = False
        TxContinueOnXoff = False
        Outx_XonXoffFlow = False
        Inx_XonXoffFlow = False
        ReplaceWhenParityError = False
        IgnoreNullChar = False
        RtsControl = RtsEnable
        XonLimit = 500
        XoffLimit = 500
        ByteSize = _8
        Parity = None
        StopBits = _1
        XonChar = #17
        XoffChar = #19
        ReplacedChar = #0
        ReadIntervalTimeout = 100
        ReadTotalTimeoutMultiplier = 0
        ReadTotalTimeoutConstant = 0
        WriteTotalTimeoutMultiplier = 0
        WriteTotalTimeoutConstant = 0
        Left = 96
        Top = 24
    这是从DFM中抄出来的
      

  7.   

    这个是我测试的那个
      object Comm1: TComm
        CommName = 'COM2'
        BaudRate = 9600
        ParityCheck = False
        Outx_CtsFlow = False
        Outx_DsrFlow = False
        DtrControl = DtrEnable
        DsrSensitivity = False
        TxContinueOnXoff = True
        Outx_XonXoffFlow = True
        Inx_XonXoffFlow = True
        ReplaceWhenParityError = False
        IgnoreNullChar = False
        RtsControl = RtsEnable
        XonLimit = 500
        XoffLimit = 500
        ByteSize = _5
        Parity = None
        StopBits = _1
        XonChar = #17
        XoffChar = #19
        ReplacedChar = #0
        ReadIntervalTimeout = 100
        ReadTotalTimeoutMultiplier = 0
        ReadTotalTimeoutConstant = 0
        WriteTotalTimeoutMultiplier = 0
        WriteTotalTimeoutConstant = 0
        OnReceiveData = Comm1ReceiveData
        Left = 256
        Top = 64
      end你完全可以把spcom控件删了,再重新放一个,用他的默认属性就可以
      

  8.   

    晕了,你把测试demo发我邮箱里吧。[email protected]
      

  9.   

    居然是用的串口监测软件有BUG!!晕啊。。浪费大家时间了。。