高手请指点:spcomm中的bufferlength是接收数据的长度么?这个长度是按什么来算的。单片机一个字节一个的发数据,怎么存在buffer里阿。和字节之间的间隔有关系么?

解决方案 »

  1.   

    tcomm.onrecevicedata(sender:tobject;buffer:pointer;bufferlength:word);
    //buffer:控件的缓冲区入口指针,控件接收的数据内容保存在组件本身的缓冲区内,这个BUFFER只是一个指针,指向这个缓冲区。TCOMM的缓冲区是一个4096 Bytes的数组,类似这样的数据结构:FBuffer:array [0..4096] of byte;//bufferlength:控件接收的数据长度,是指控件实际接收的字节(byte为单位)数。
    在接收数据时,串口操作是通过底层API以文件形式操作完成的,接收的数据是按字节保存在了缓存区中,在读取数据时,可以按字节读取的方式来取得所接收的数据。
    常用的方法如下:
    onrecedata();var 
      recestr:string;
      setlength(recestr,bufferlength);
      move(byte(buffer^),byte(recestr[1]),bufferlength);//内存直接COPY来完成数据读取
    .......