谁能给个串口通信的接收的例子啊,用MSComm or Tcomm控件 ( 积分: 255 )

  • 主题发起人 主题发起人 scy_fjqz
  • 开始时间 开始时间
S

scy_fjqz

Unregistered / Unconfirmed
GUEST, unregistred user!
如何向控件发送At+cmgl=4的命令,又如何
把结果取出来,放到memo控件上
 
如何向控件发送At+cmgl=4的命令,又如何
把结果取出来,放到memo控件上
 
把问题说的清楚些吧,你要控制什么仪表?
 
我要收发短信
如何通过串口发送"At+cmgl=4"到手机上,手机相应后,终端显示
+CMGL: 1,1,,21
0891683108505905F0040D91683159759759F50000504041013155230141

如何把这个读到memo控件上
 
function readcom: string;
var temp: string;
inbuff: array[0..10240] of char;
nbytesread, dwerror: longword;
cs: tcomstat;
begin
clearcommerror(hcomm, dwerror, @cs);
if cs.cbInQue > sizeof(inbuff) then
begin
purgecomm(hcomm, purge_rxclear);
exit;
end;
readfile(hcomm, inbuff, cs.cbInQue, nbytesread, nil);
temp := copy(inbuff, 1, cs.cbInQue);
result := temp;
end ;

memo1.lines.add(readCom);
 
我有spcomm控件编写的串口通信的例子,不知楼主有没有兴趣?
 
0891683108505905F0040D91683159759759F50000504041013155230141
这个如何解码?
串口通信我已经搞定,能取到值了,但是还不能解码
 
字符转换不可以么?
HexIntoInt等方法不可以么?不知道我有没有理解楼主的意思?
if HexShowCkBox.Checked then //如果是16进制显示接收到的数据
Data := Data+IntToHex(buf[p],2)+' ' //把buf里的数据变成16进制格式显示
else
Data := Data+Char(buf[p]); //否则以ASCII方式显示
 
这就需要你定义,你多少字节为一组,没组的含义是什么,只有预先定义你才能接码!
 
解码嘛,easy,留下邮件我发给例子给你
 
谁有spcom控件读串口的例子啊?请帮帮忙,非常感谢!
 
mscomm的onReceiveData事件中
procedure Tfrm_sms.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var sa: PChar;
begin
GetMem(sa, BufferLength);
try
Move(Buffer^, Sa^, BufferLength);
Memo1.Lines.Add(Sa);
finally
FreeMem(sa);
end;
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部