急!高分求解spcomm的问题。 ( 积分: 100 )

  • 主题发起人 主题发起人 wyabc
  • 开始时间 开始时间
W

wyabc

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi很久没有用了,都快还给老师了。最近一个项目需要串口通讯。
我用
fsSS:='5502020206AA';
Comm1.WriteCommData(pchar(fsSS), 12);
发送了数据。现在要求要以hex方式发送5502020206AA。
请高手给段代码。谢谢!
 
delphi很久没有用了,都快还给老师了。最近一个项目需要串口通讯。
我用
fsSS:='5502020206AA';
Comm1.WriteCommData(pchar(fsSS), 12);
发送了数据。现在要求要以hex方式发送5502020206AA。
请高手给段代码。谢谢!
 
给你个我写的函数,将字符串转为hexe
const hexchar :array [0..15] of char ='0123456789ABCDEF';
function strToHex(buf :Pchar; len :integer; destbuf :Pchar; destlen :integer):integer;
var
c :integer;
i :integer;
begin
result :=-1;
if destlen<len*2 then exit;
result := 0;
for i := 0 to len-1 do
begin
c := integer(buf^);
destbuf^ := hexchar[c div 16];
inc(destbuf);
destbuf^ := hexchar[c mod 16];
inc(destbuf);
inc(buf);
inc(result,2);
end;
end;
 
viewstring:string;

i:integer;

rbuf,sbuf:array[16] of byte;

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,2)+‘’ ;

viewstring:=‘接收’+ viewstring;

memo1.lines.add(viewstring);

memo1.lines.add(‘’ );

end;




end;
 
多谢daqun和kofoun的热心解答。
我用 fsSS:='5502020206AA';
Comm1.WriteCommData(pchar(fsSS), 12);
是以字符形式发送的。现在需要以hex形式发送。
daqun给我的代码是把字符转换为hex形式。我采用
procedure TForm1.Button1Click(Sender: TObject);
var wyaa:string;
begin
fsSS:='5502020206AA';
strToHex(pchar(fsSS),12,pchar(wyaa),24);
showmessage(wyaa);
Comm1.WriteCommData(pchar(fsSS), 12);
但是运行strToHex()时出错。我那样写可对?
有3年没有用delphi干活了。delphi忘了不少,但是大富翁是不会忘记的。感谢大富翁里面的兄弟们无私的奉献!我这个账号3年没有用了,还有不少分。需要的兄弟,我会无偿奉送!
 
fsSS:='5502020206AA';
buf[0] := $55;
buf[1] := $02;
buf[2] := $02;
Buf[3] := $02;
Buf[4] := $06;
Buf[5] := $AA;

就是这个意思,你自已想想吧。
 
贴个我常用的,连用空格作间隔的HEX串都处理了
//HEX字串转ASC字串
function HexToStr(SourceString : string) : string;
var i:integer;
begin
result:='';
i:=1;
while i<=length(SourceString) do
if SourceString<>' '
then
if SourceString[i+1]=' '
then
begin
result:=result+char(StrToInt('$'+SourceString));
i:=i+2;
end
else
begin
result:=result+char(StrToInt('$'+SourceString+SourceString[i+1]));
i:=i+2;
end
else i:=i+1;
end;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部