分享

串口编程总结 delphi spcomm

 quasiceo 2016-10-13
spcomm的简单使用
一、设置com口参数[code]
procedure TForm1.FormCreate(Sender: TObject);
begin//以下设置为默认设置
Comm1.CommName:='com2';//设置要操作的串口
Comm1.BaudRate :=9600;//设置端口速率
Comm1.ParityCheck:=false;//设置奇偶校验
Comm1.StopBits :=_1;//设置停目位
Comm1.ByteSize :=_8;//设置数据位
end;[/code]
二、打开串口
Comm1.StartComm;//使用串口前应先打开
三、编写发送数据代码[code]
procedure TForm1.Button1Click(Sender: TObject);
var
SendStr:string;
TEM:integer;
begin
SendStr:=edit1.text+#13+#10; //在每条命令加回车,换行,看具体设置而定
//TEM:=sizeof(SendStr);
TEM:=length(SendStr);//要发送数据的长度
//TEM:=sizeof(SendStr);
Comm1.WriteCommData(pchar(SendStr),TEM);//发送数据
end;[/code]
四、编写接收数据代码
注意:对接收到的字符串处理时最好加语句:Trim去掉控制字符串和空格。

方法一、[code]
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
//   RecStr:String;
//   i     :integer;
//   tmpArray:array[0..4096] of Byte;
   pStr:PChar;
begin
pStr:=Buffer;
//RecStr:=string(pStr);
if BufferLength<>0 then
   Memo1.Lines.add(pStr);
end;[/code]
方法二、[code]
procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
i:integer;
begin
viewstring:=‘’ ;
move(buffer^,pchar(@rbuf^),bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttohex(rbuf[i],2)+‘’ ;
viewstring:=‘接收’+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add(‘’ );
end;[/code]

五、关闭串口
Comm1.StopComm;//串口不再使用时,应关闭
六、以十六进制方式发送[code]
procedure TForm1.Button3Click(Sender: TObject);
var
   Sendbuffer:array[0..256] of byte;
   len,i,j:integer;
   ss,tempSS:String;
begin
ss:= Edit1.Text;
if ss='' then exit;
len:=length(ss);
if checkbox2.Checked then
begin
    i:=1;
    j:=0;
    repeat
     tempSS:='$'+copy(ss,i,2);
     try
       SendBuffer[j]:=byte(strtoint(tempSS));
     except
       exit;
     end;
     i:=i+2;
     j:=j+1;
    until(i>len);
    Comm1.WriteCommData(pchar(@sendbuffer), j);
end else
    Comm1.WriteCommData(pchar(ss), len);
end;[/code]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多