📄 serialdebug.pas
字号:
//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 + -