大家好:
我用SPCOMM控件发送十六进制数据,别人给我了一个自定义的函数如下:
procedure SendHex(S: String);
var
s2:string;
buf1:array[0..50000] of char;
i:integer;
begin
s2:='';
for i:=1 to length(s) do
begin
if ((copy(s,i,1)>='0') and (copy(s,i,1)<='9'))or((copy(s,i,1)>='a') and (copy(s,i,1)<='f'))
or((copy(s,i,1)>='A') and (copy(s,i,1)<='F')) then
begin
s2:=s2+copy(s,i,1);
end;
end;
for i:=0 to (length(s2) div 2-1) do
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));
Comm1.WriteCommData(buf1,(length(s2) div 2));
end;不知道怎么搞的发送数据调用它时,总是出错。请高手帮俺改一下好吗???
先谢谢了啊
我用SPCOMM控件发送十六进制数据,别人给我了一个自定义的函数如下:
procedure SendHex(S: String);
var
s2:string;
buf1:array[0..50000] of char;
i:integer;
begin
s2:='';
for i:=1 to length(s) do
begin
if ((copy(s,i,1)>='0') and (copy(s,i,1)<='9'))or((copy(s,i,1)>='a') and (copy(s,i,1)<='f'))
or((copy(s,i,1)>='A') and (copy(s,i,1)<='F')) then
begin
s2:=s2+copy(s,i,1);
end;
end;
for i:=0 to (length(s2) div 2-1) do
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));
Comm1.WriteCommData(buf1,(length(s2) div 2));
end;不知道怎么搞的发送数据调用它时,总是出错。请高手帮俺改一下好吗???
先谢谢了啊
begin
if s1[i] in [0..9, 'a'..'z','A'..'Z'] then
s2:=s2 + s1[i];
end;
for i:=0 to (length(s2) div 2-1) do
buf1[i]:=char(strtoint('$'+copy(s2,i*2, 2)));
Comm1.WriteCommData(buf1,(length(s2) div 2));
你好!
你的那段程序应该不是太理想吧!十六进制不能出现A到F以外的字符。在你的那段程序里,如果
我误输入了Z,应该怎么办啊?
你好
我这个就是在你哪儿下载的啊!我还有一个问题还要打扰你一下
你的那个作品“串口通讯”,当接受数据时。为什么显示的时候老是分行啊!本来一行显示都
很宽余的。它非要多行显示。
你有办法吗?
if s1[i] in [0..9, 'a'..'f','A'..'F'] then原文:
你好!
你的那段程序应该不是太理想吧!十六进制不能出现A到F以外的字符。在你的那段程序里,如果
我误输入了Z,应该怎么办啊?