首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-24 
地磅串口数据读取HT9800地磅通讯协议:串行通讯方式:连续发送称重值波特率:1200/2400/4800/9600可选数据格

地磅串口数据读取
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;

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


[解决办法]
用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];


热点排行