请问,如何从串口接收数据并以十六进制显示出来
解决方案 »
- 头都大了,DBExpress的事务问题!
- ★★★ 本人申请网络编程/分布式开发小版主,欢迎提出意见 ★★★
- 上海的朋友请进!小弟有一问题相问?
- 如何再delphi中实现多个连接?并且分开传输数据!
- 请问chart组件的哪个属性和图表上将要显示的数据有关?或者说怎么控制图表上柱状图的数据?
- 我的Delphi7怎么不响应快捷键了?
- ?如何用 Delphi 编程实现域名解析
- 如何使表单像“输入法”那样缩成小图标!!(我不想用控件实现,最好是API)
- #0是什么?if not(key in['0'..'9',#8]) then key:=#0;这边的#0是?
- 请教高手,IBTable主从表post的问题,已经试验了几种方式,还是不行,不知道是bug还是程序的问题
- 历时两年完成类似Excel的表格控件(高分请大家试用)
- 有愿意有时间接些兼职活的XD不?具体请入内。
http://lysoft.7u7.net
BufferLength:Word);
Var
i:Integer;
Viewstring:String;
rbuf:Array[1..300] Of Byte;
bufflen:integer;
Begin
bufflen := 160;
If (bufferlength >= bufflen) Then
exit;
viewstring := '';
move(buffer^, rbuf, bufferlength);
For i := 1 To bufferlength Do
viewstring := viewstring + inttohex(rbuf[i], 2) + '';
//viewstring 就是十六进制的数据
End;
var
//传送及接收要用的动态数组声明
ByteSend:array of Byte;
// ByteReceive:array of Byte;
// Count,i:DWORD;
i:DWORD;
// PT:PByte; //字节指针
str:string;
begin
if not Comm1.PortOpen then
begin
MessageBox(0,'请先打开串口','串口错误',MB_OK);
exit;
end;
//指定欲传送的字节
SetLength(ByteSend,mSend.Lines.Count);
for i:=0 to mSend.Lines.Count-1 do
ByteSend[i]:=StrToInt(trim(mSend.Lines[i]));
Comm1.OutputByte(ByteSend);//串口传送出去
TimeDelay(100); //延迟500毫秒 //接收字节数据,包括数目及地址
Count:=Comm1.ReadInputByte(PT);
//接收的数据指定给接收数组
SetLength(ByteReceive,Count);
for i:=0 to Count do
begin
ByteReceive[i]:=PT^;
//结果显示在Memo组件中(Append方式)
str:=str+inttohex(bytereceive[i],3) + chr(13)+ chr(10);
mReceive.Text:=trim(str);//+chr(13)+chr(10);//inttohex(strtoint(str),3)+chr(13)+chr(10);
Inc(PT);
end;