关于mscomm控件串口通讯的问题

nktylm 2003-07-01 05:46:26
我在delphi中使用mscomm控件开发一个串口通讯的程序,下位设备是一种手持pos,用C51开发的。现在碰到一个问题:手持pos机通过串口上传到主机的数据我不知道如何获得,在delphi中使用mscomm控件读取串口缓冲区是一个olevariant类型的变量,但获取之后我如何将其中的数据解析出来呢?
我程序中的部分代码:
iCount:=mscomm1.inbufcount; //得到串口缓中区中的字符数
varContent:=mscomm1.input; //获得串口缓冲区中的内容(varContent为一个Variant类型的变量)
以上代码中能够获得串口缓冲区中的字符数,但用variant变量得到的内容我不知如何进行解析。我想将他转换成字符串
strTemp:=vartostr(varContent);
但得到的是一个空字符串。可我判断variant变量是否为空时确实不是空
bEmpty:=VarIsEmpty(varContent); //得到的值是false,不为空
这我就不知道如何进行处理了,那位高手做过此方面的东西,还请赐教一二,不胜感激!
(下位的手持pos向串口发送数据时是按照我定义的结构进行发送的,c51写的)
...全文
36 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
javabeauty 2003-07-09
  • 打赏
  • 举报
回复
up
jpyc 2003-07-02
  • 打赏
  • 举报
回复
关于delphi中串口通讯控件的选择
mscomm:微软的东西,ActivX控件,使用简单,在VB中带的,性能一般,由于是ActivX控件,打包时需要注册好多信息,不推荐使用。
spcomm:比较好的vcl,算是比较专业的,解剖了一下,功能比较完善。
TurboPower:公认的专业通讯控件。可以到其站点下载,开放源码了。
我在制作串口通讯软件时三种都用过,最终全部使用TurboPower!所以也推荐大家使用它。
写了个例子,基本的串口通讯都可以实现,可提供参考。
下载地址:http://www.kaer.cn/default.aspx(网站安全性较差,经常当机,如果急用,mail我)
多多指正:sdwhxyr@yeah.net
daidai0 2003-07-01
  • 打赏
  • 举报
回复
procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
rbuf:Buffer;
viewstring:string;
begin
viewstring:='';
move(buffer^,rbuf,bufferlength);
for i:=0 to bufferlength-1 do
begin
viewstring:=viewstring+inttohex(rbuf[i],2);
end;
end;
wsz1995 2003-07-01
  • 打赏
  • 举报
回复
就这样:

var
buff : widestring;
begin
buff := mscomm1.input;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧