地磅串口数据读取

crownsoft 2007-09-07 10:58:28
HT9800地磅通讯协议:
串行通讯方式:连续发送称重值
波特率:1200/2400/4800/9600可选
数据格式:10位:1位起始位(0),8位数据位(D0-D7),1位结束位(1)。
串行通讯发送重量数据为ASCII码,每次发送12个字节。其定义如下:
第1字节:起始位(02H)
第2字节:状态字A
第3字节:状态字B
第4字节:状态字C
第5字节:6位重量值的高位
:
第10字节:6位重量值的低位
第11字节:回车(0DH)
第12字节:换行(0AH)

用Delphi7+Pcomm编程读取数据,过程如下:

function ReceiveStr(Port: longint):string;
var
rLen: longInt;
PBuf: Pchar;
Buf: string;
begin
Result := '';
PBuf := Pchar(StringOfChar(' ',1024));
rLen := sio_read(Port,PBuf,1024);
if rLen = 0 then Exit;
Buf := StrPas(PBuf);
Buf := Copy(Buf,1,rLen);
Result := Buf;
end;

运行结果显示收到的数据为乱码字符,请各位指教。
...全文
1148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yitian66 2009-02-12
  • 打赏
  • 举报
回复
你好
我现在也在读取这个数据
想象你请教
QQ:121261138
风上人 2008-09-10
  • 打赏
  • 举报
回复
你好
我现在也在读取这个数据
有机会交流一下!
QQ:270515098
crownsoft 2007-09-10
  • 打赏
  • 举报
回复
公司已指定用Delphi7+Pcomm,因为有其它型号的地磅接口已经写好,
请用过Delphi7+Pcomm朋友看看,什么地方有问题?
踢踏 2007-09-10
  • 打赏
  • 举报
回复
这是我用MScomm做的通讯,供参考,差别应该不大。
var
iInputLen, j : Integer;
sValue : string;


RecStr:=myMSComm.Input;

sValue:='';
for j:=0 to iInputLen - 1 do
sValue:=sValue+IntToHex(RecStr[j],2);

//用日志记录通讯格式
WriteCommLog(sValue);

sValue:=sValue[9]+sValue[10]+sValue[7]+sValue[8]+sValue[5]+sValue[6];


看那山瞧那水 2007-09-07
  • 打赏
  • 举报
回复
用CPort,直接读str

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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