⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialdebug.pas

📁 GPS对讲机接收
💻 PAS
📖 第 1 页 / 共 3 页
字号:
//edit1.text:=zz;
    if not MSComm.PortOpen then
    begin
        showmessage('没有打开串口!');
        Exit;
    end
    else begin
        //发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
            Output:=zz;
            Len:=Length(Output);
            if Len>0 then
            begin
               i:=1;
               count:=1;
               //创建一个Variant数组
               tmpVar:=VarArrayCreate([1,1],varByte);
               while(i<Len) do
               begin
                  //每3个字符串中截取2个字符,转换为16进制
                  tmpStr:=Copy(Output,i,2);
                  tmpStr:=LowerCase(tmpStr);
                  tmpInt:=HexToInt(tmpStr);
                  if tmpInt=-1 then
                  begin
                      showmessage('发送的数据格式有问题!');
                      exit;
                  end
                  else begin
                      tmpVar[Count]:=tmpInt;
                      Inc(count);
                     //增大Variant数组
                      VarArrayRedim(tmpVar,count);
                  end;
                  i:=i+3;
               end;
               MSComm.Output :=tmpVar;
            end;

        end;
    end;


procedure TMainForm.Button6Click(Sender: TObject);
var
    Len:Integer;
    i,j,count,tmpInt:Integer;
    tmpVar:Variant;
    tmpStr,Output,zz,ppp:String;
    ppp3,ppp1,ppp2,temp:string;
begin
temp:='00';
j:=1;
ppp3:='0310'+edit2.Text;
//hexxorstr('ff','17');
for i:=1 to length(ppp3) div 2 do
begin;
ppp1:=copy(ppp3,j,2);
temp:=hexxorstr(temp,ppp1);
j:=j+2;
end;

ppp3:=copy(trim(edit2.text),1,2);
ppp1:=copy(trim(edit2.text),3,2);
ppp2:=ppp3+' '+ppp1;
zz:='2a aa aa 03 10'+' '+trim(ppp2)+' '+trim(temp);
//zz:='2a aa aa 07 16 00 05 00 14 50 01 51';
//edit1.text:=zz;
    if not MSComm.PortOpen then
    begin
        showmessage('没有打开串口!');
        Exit;
    end
    else begin
        //发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
            Output:=zz;
            Len:=Length(Output);
            if Len>0 then
            begin
               i:=1;
               count:=1;
               //创建一个Variant数组
               tmpVar:=VarArrayCreate([1,1],varByte);
               while(i<Len) do
               begin
                  //每3个字符串中截取2个字符,转换为16进制
                  tmpStr:=Copy(Output,i,2);
                  tmpStr:=LowerCase(tmpStr);
                  tmpInt:=HexToInt(tmpStr);
                  if tmpInt=-1 then
                  begin
                      showmessage('发送的数据格式有问题!');
                      exit;
                  end
                  else begin
                      tmpVar[Count]:=tmpInt;
                      Inc(count);
                     //增大Variant数组
                      VarArrayRedim(tmpVar,count);
                  end;
                  i:=i+3;
               end;
               MSComm.Output :=tmpVar;
            end;
       
        end;
    end;


procedure TMainForm.Button8Click(Sender: TObject);
var
    Len:Integer;
    i,j,k,l,count,tmpInt:Integer;
    tmpVar:Variant;
    tmpStr,Output,zz,ppp:String;
    ppp3,ppp1,ppp2,ppp4,len1,l1,temp,temp1:string;
begin
if  CheckListBox1.Count>0 then
begin
l1:='';
for k:=0 to CheckListBox1.Count - 1 do
begin
   if CheckListBox1.Checked[k] then
   begin
   l1:=l1+CheckListBox1.Items.Strings[k];
   end;
end;
l:=CheckListBox1.Count*2;
len1:=copy(int1tohex(l+5),7,2);
temp:='00';
j:=1;
ppp3:=len1+'1600090014'+l1;
//hexxorstr('ff','17');
for i:=1 to length(ppp3) div 2 do
begin;
ppp1:=copy(ppp3,j,2);
temp:=hexxorstr(temp,ppp1);
j:=j+2;
end;
j:=1;
temp1:='';
ppp1:='';
for i:=1 to l do
begin;
ppp1:=copy(ppp3,j,2);
temp1:=temp1+ppp1+' ';
j:=j+2;
end;
zz:='2a aa aa '+len1+' 16 00 09 00 14 '+temp1+trim(temp);
//edit1.text:=zz;
    if not MSComm.PortOpen then
    begin
        showmessage('没有打开串口!');
        Exit;
    end
    else begin
        //发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
            Output:=zz;
            Len:=Length(Output);
            if Len>0 then
            begin
               i:=1;
               count:=1;
               //创建一个Variant数组
               tmpVar:=VarArrayCreate([1,1],varByte);
               while(i<Len) do
               begin
                  //每3个字符串中截取2个字符,转换为16进制
                  tmpStr:=Copy(Output,i,2);
                  tmpStr:=LowerCase(tmpStr);
                  tmpInt:=HexToInt(tmpStr);
                  if tmpInt=-1 then
                  begin
                      showmessage('发送的数据格式有问题!');
                      exit;
                  end
                  else begin
                      tmpVar[Count]:=tmpInt;
                      Inc(count);
                     //增大Variant数组
                      VarArrayRedim(tmpVar,count);
                  end;
                  i:=i+3;
               end;
               MSComm.Output :=tmpVar;
            end;

        end;
        end
        else
        begin
        showmessage('请选择GPS');
        end;
    end;

procedure TMainForm.Button9Click(Sender: TObject);
var
    Len:Integer;
    i,j,k,l,count,tmpInt:Integer;
    tmpVar:Variant;
    tmpStr,Output,zz,ppp:String;
    ppp3,ppp1,ppp2,ppp4,len1,l1,temp,temp1:string;
begin
if  CheckListBox1.Count>0 then
begin
l1:='';
for k:=0 to CheckListBox1.Count - 1 do
begin
   if CheckListBox1.Checked[k] then
   begin
   l1:=l1+CheckListBox1.Items.Strings[k];
   end;
end;
l:=CheckListBox1.Count*2;
len1:=copy(int1tohex(l+3),7,2);
temp:='00';
j:=1;
ppp3:=len1+'120078'+l1;
//hexxorstr('ff','17');
for i:=1 to length(ppp3) div 2 do
begin;
ppp1:=copy(ppp3,j,2);
temp:=hexxorstr(temp,ppp1);
j:=j+2;
end;
j:=1;
temp1:='';
ppp1:='';
for i:=1 to l do
begin;
ppp1:=copy(ppp3,j,2);
temp1:=temp1+ppp1+' ';
j:=j+2;
end;

zz:='2a aa aa '+len1+' 12 00 78 '+temp1+trim(temp);
//zz:='2a aa aa 07 16 00 05 00 14 50 01 51';
//edit1.text:=zz;
    if not MSComm.PortOpen then
    begin
        showmessage('没有打开串口!');
        Exit;
    end
    else begin
        //发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
            Output:=zz;
            Len:=Length(Output);
            if Len>0 then
            begin
               i:=1;
               count:=1;
               //创建一个Variant数组
               tmpVar:=VarArrayCreate([1,1],varByte);
               while(i<Len) do
               begin
                  //每3个字符串中截取2个字符,转换为16进制
                  tmpStr:=Copy(Output,i,2);
                  tmpStr:=LowerCase(tmpStr);
                  tmpInt:=HexToInt(tmpStr);
                  if tmpInt=-1 then
                  begin
                      showmessage('发送的数据格式有问题!');
                      exit;
                  end
                  else begin
                      tmpVar[Count]:=tmpInt;
                      Inc(count);
                     //增大Variant数组
                      VarArrayRedim(tmpVar,count);
                  end;
                  i:=i+3;
               end;
               MSComm.Output :=tmpVar;
            end;

        end;
        end
        else
        begin
        showmessage('请选择GPS');
        end;
    end;


procedure TMainForm.FormActivate(Sender: TObject);
var
I,j: Integer;
department:String;
begin
with datamodule1 do
begin
datamodule1.t_rkdz.Close;
checklistbox1.Items.Clear;
with datamodule1 do
begin
t_rkdz.close;
t_rkdz.SQL.Clear;
t_rkdz.SQL.Add('select distinct gpsbh from rkdz ');
t_rkdz.Open;
while not t_rkdz.Eof do
begin
CheckListBox1.Items.add(t_rkdz.fieldbyname('gpsbh').Value);
t_rkdz.next;
end;
end;
end;
end;


procedure TMainForm.Button4Click(Sender: TObject);
var
    Len:Integer;
    i,count,tmpInt:Integer;
    tmpVar:Variant;
    tmpStr,Output,zz:String;

begin
zz:='$SET8082'+trim(edit2.Text)+'0a05';
    if not MSComm.PortOpen then
    begin
        showmessage('没有打开串口!');
        Exit;
    end
    else begin
        //发送二进制数,需要使用Variant变量矩阵,矩阵大小自动调节
        if HexSend then
        begin
            Output:=zz;
            Len:=Length(Output);
            if Len>0 then
            begin
               i:=1;
               count:=1;
               //创建一个Variant数组
               tmpVar:=VarArrayCreate([1,1],varByte);
               while(i<Len) do
               begin
                  //每3个字符串中截取2个字符,转换为16进制
                  tmpStr:=Copy(Output,i,2);
                  tmpStr:=LowerCase(tmpStr);
                  tmpInt:=HexToInt(tmpStr);
                  if tmpInt=-1 then
                  begin
                      showmessage('发送的数据格式有问题!');
                      exit;
                  end
                  else begin
                      tmpVar[Count]:=tmpInt;
                      Inc(count);
                     //增大Variant数组
                      VarArrayRedim(tmpVar,count);
                  end;
                  i:=i+3;
               end;
               MSComm.Output :=tmpVar;
            end;
        end
        else begin
            MSComm.Output :=zz;
        end;
    end;
end;

end.






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -