delphi怎么让串口发送接收为十六进制数
用MSCOMM控件,想设置inputmode为1,接收到的数据为十六进制格式,然后发送也是十六进制的,有没有详细的例程啊。谢谢!以下是我的程序
mscomm1.InBufferCount:=0;
mscomm1.InputLen:=0;
mscomm1.RThreshold:=1;
mscomm1.Settings:='9600,N,8,1';
mscomm1.CommPort:=3;
mscomm1.PortOpen:=true; //打开端口
mscomm1.DTREnable:=true; //DTR信号线有效,指示计算机等待接收传输
mscomm1.RTSEnable:=true; //RTS信号线有效,请示允许发送数据
procedure TForm2.MSComm1Comm(Sender: TObject);
var
recstr:olevariant;
begin
if mscomm1.CommEvent=2 then //接收
begin
recstr:=mscomm1.Input;
memo1.Text:=memo1.text+recstr;
end;
end;
procedure TForm2.Button3Click(Sender: TObject);//发送
begin
mscomm1.Output:=edit1.Text;
end;
我现在就只会接收为文本文件,和发送单个ASCII码。我需要实现的是接收一串的数据和发送一串的数据,不懂怎么实现,求助谢谢 我也是一个新手,发送和接收只能是ASCII码,所以要把自已发送的字符串数据转换为十六进制数
ep:
var
a:String;
...
a := '0'.
StrToInt(a).就OK了,实际发送就是0
再说接收,我是在网上看了一函数转换就可以,楼主可以Google一下,明白原理就很好用的 //网上找来的...传输模式设为BinAry //触发接收事件的字数设为1(MSComm1.RThreshold:=1;)
Function Str_HexToInt(Hex: String): integerVar HexDigital: Set Of char;
i: integer;
Digital: String;
Begin
Result := 0;
HexDigital := ['1', '2', '3', '4', '5', '6', '7', '8','9',
'0', 'A', 'B','C','D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f'];
If Length(Hex) = 0 Then Exit;
For i := 1 To Length(Hex) Do
Begin
Digital := Copy(Hex, i, 1);
If (i = 1) And (digital = '$') Then Continue;
End;
Digital := Copy(Hex, 1, 1);
If Digital <> '$' Then Hex := '$' + Hex;
//Result := StrToInt(Hex);
Str_HexToInt:=StrToInt(Hex) ;
End;
//+++++++++++++++++++++++++++++++++++++++++++++++++++
function HexCharToInt(HexToken : char):Integer;
begin
{if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32);
{ use lowercase aswell }
Result:=0;
if (HexToken>#47) and (HexToken <#58) then { chars 0....9 }
Result:=Ord(HexToken)-48
else if (HexToken>#64) and (HexToken <#71) then{ chars A....F }//??91
Result:=Ord(HexToken)-65 + 10;
end;
页:
[1]