SPComm的接受数据事件
OnReceiveData :procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object;请问OnReceiveData事件是在每接受到一个数据(VufferLength=1)就会发生,还是该事件发生时BufferLength值是随机的。
我要用OnReceiveData接收特定长度的一段数据,该怎么用?

解决方案 »

  1.   

    OnReceiveData :procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word
    ) of object 
    当有数据输入缓存时将触发该事件,在这里可以对从串口收到的数据进行处理。 Buffer中
    是收到的数据, BufferLength是收到的数据长度。
      

  2.   

    当有数据输入缓存时将触发该事件,那表示收到1个数据马上就触发了该事件,基本上BufferLength
    都会是1,对吗?
      

  3.   

    不一定,看通讯速率情况,如果数据量字节数量小,可能BufferLength能够返回所有的数据长度,如果数据量大可能会分几次接收。
    建议你这样处理:
    建立一个队列,每产生一次ReceiveData事件,就读BufferLength的buffer数据写入队列中。
    判断队列里的有效数据是否到了特定的长度,没有到,就返回。到了,就进行数据处理。