SetLength(StrReceive,BuffeLength);
Move(Buffer^,Pchar(StrReceive)^,BufferLength);
这其中buffer的长度是从哪来的?串口上的值是直接读到buffer上了吗?
buffer上面打箭头是什么意思?
怎样向串口接收的下位机上发送字符?格式是什么样的
Procedure TFComm.Button1Click(Sender:Tobject);
begin
     Sbuf[1]:=byte('R');
     senddata;
end
就这样可以吗?
sbuf[i1]:=($0f)中$是什么意思?

解决方案 »

  1.   

    Buffer 就是 Spcomm控件一個自設定的參數, 接收到數據後, 就緩衝中 Buffer 指向的內存中, 觸發OnReceive事件, 你要可處理!
    >>这其中buffer的长度是从哪来的?
    Spcomm 默認的 buffer 是個 char 數組, 長度是 2048;
    >>串口上的值是直接读到buffer上了吗?
    是的, 你可以這樣理解! 雖然後面還有些處理機制!
    >>buffer上面打箭头是什么意思?
    buffer在這裹是一個內存指針, 打箭头 表示指向的內存區域;>>怎样向串口接收的下位机上发送字符?格式是什么样的
    格式根據自己需要定義!>>sbuf[i1]:=($0f)中$是什么意思?
    $ 是十六進制的前導符號, 代表後面的數字是表示十六進制的!
      

  2.   

    for i:=1 to 6 do
      comm1.writecommdata(@sbuf[i],1);
    大概如此!!
      

  3.   

    这其中buffer的长度是从哪来的?     :bufferlength  接收函数里有  不用管
    串口上的值是直接读到buffer上了吗? :接收到的数据放在接收缓冲区
    buffer上面打箭头是什么意思?       :取地址
    怎样向串口接收的下位机上发送字符? :comm1.writecommdata(@sbuf[i],1);pDataToWrite:array[1..20] of char; // 要发送的,转化为字符      pDataToWrite[1]:=chr(byte($D1));
        Len:=1;//长度    Comm1.Inx_XonXoffFlow:=false;
        Comm1.Outx_XonXoffFlow:=false;
        flag:=Comm1.WriteCommData(@(pDataToWrite),Len);    dtTmp:=Now;
       while ((not (flag)) and ((Now-dtTmp)<(1000 /(24*60*60*1000))))  do //等待1秒试试
        begin
          Application.ProcessMessages;//处理缓冲区数据
        end;格式是什么样的
    Procedure TFComm.Button1Click(Sender:Tobject);
    begin
         Sbuf[1]:=byte('R');   -----:Sbuf[1]:=byte(ord('R'));
         senddata;
    end
    就这样可以吗?
    sbuf[i1]:=($0f)中$是什么意思?   :得到0f的十进制值  0*16+15=15
      

  4.   

    发送字符‘ab'Comm1.StartComm;
      pDataToWrite[1]:=chr(ord('b'));
      pDataToWrite[1]:=chr(ord('a'));
      LDate:=2;
      Comm1.Inx_XonXoffFlow:=false;
      Comm1.Outx_XonXoffFlow:=false;
      Comm1.WriteCommData(@(pDataToWrite),LDate);
      dtTmp:=Now;
      while ((Now-dtTmp)<(1000 /(24*60*60*1000))))  do
      begin
        Application.ProcessMessages;
      end;