读书人

地磅串口数据读取解决办法

发布时间: 2012-02-24 16:30:38 作者: rapoo

地磅串口数据读取
HT9800地磅通讯协议:
串行通讯方式:连续发送称重值
波特率:1200/2400/4800/9600可选
数据格式:10位:1位起始位(0),8位数据位—0-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;

运行结果显示收到的数据为乱码字符,请各位指教。


[解决办法]
用CPort,直接读str
[解决办法]
这是我用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];


读书人网 >.NET

热点推荐