HT9800仪表数据如下..和厂家的说明 9针的串口和计算机连接
数据格式
连续发送一组数据,每组数据5帧,每帧11位:1位起始位(0),8位数据位(D0-D7),2位停止位(1)。起定义如下:
第1帧:D0-D7 0FFH(起始位)
第2帧:D0-D2 为小数点位置(0-4)
D3 NC
D4 1表示称重稳定 0表示称重未稳定
D5 1表示称重为负 0表示称重未稳正
D6 NC
D7 1表示溢出
第3帧:D0-D7 BCD1(称重值)
第4帧:D0-D7 BCD2(称重值)
第5帧:D0-D7 BCD3(称重值)
注:(1)BCD1、BCD2、BCD3为由高到低的称重值的NCD码。 例
仪表显示数据为1670,则正确的数据包应为 FF 11 70 16 00
仪表显示数据为167.0,则正确的数据包应为 FF 12 70 16 00
杭州衡天技术部
--------------求解拆仪表发过来的BCD包成10进制显示--------------------------------------------
以下是我写的接收代码,老是解不对.又找不到错误.痛苦万分. void __fastcall TForm1::Comm1ReceiveData(TObject *Sender, Pointer Buffer,
WORD BufferLength)
{
//接收 波特率4800 数据位8 停止位2 没校验 AnsiString cs1,cstr,s1;
int v;
try{
cs1=PChar(Buffer);//取得字符
if(cs1.IsEmpty()){return;}
//cstr=Trim(cs1);//过滤空格 char *c=new char(cstr.Length());
StrLCopy(c,cstr.c_str(),cstr.Length());
for(int i=0;i <cstr.Length();i++)
{
v=int(c[i]);
s1=s1+IntToHex(v,2);//转换
}
delete []c;
}catch(...){return;} m1-> Lines-> Append("转换的值:"+s1);//
}
数据格式
连续发送一组数据,每组数据5帧,每帧11位:1位起始位(0),8位数据位(D0-D7),2位停止位(1)。起定义如下:
第1帧:D0-D7 0FFH(起始位)
第2帧:D0-D2 为小数点位置(0-4)
D3 NC
D4 1表示称重稳定 0表示称重未稳定
D5 1表示称重为负 0表示称重未稳正
D6 NC
D7 1表示溢出
第3帧:D0-D7 BCD1(称重值)
第4帧:D0-D7 BCD2(称重值)
第5帧:D0-D7 BCD3(称重值)
注:(1)BCD1、BCD2、BCD3为由高到低的称重值的NCD码。 例
仪表显示数据为1670,则正确的数据包应为 FF 11 70 16 00
仪表显示数据为167.0,则正确的数据包应为 FF 12 70 16 00
杭州衡天技术部
--------------求解拆仪表发过来的BCD包成10进制显示--------------------------------------------
以下是我写的接收代码,老是解不对.又找不到错误.痛苦万分. void __fastcall TForm1::Comm1ReceiveData(TObject *Sender, Pointer Buffer,
WORD BufferLength)
{
//接收 波特率4800 数据位8 停止位2 没校验 AnsiString cs1,cstr,s1;
int v;
try{
cs1=PChar(Buffer);//取得字符
if(cs1.IsEmpty()){return;}
//cstr=Trim(cs1);//过滤空格 char *c=new char(cstr.Length());
StrLCopy(c,cstr.c_str(),cstr.Length());
for(int i=0;i <cstr.Length();i++)
{
v=int(c[i]);
s1=s1+IntToHex(v,2);//转换
}
delete []c;
}catch(...){return;} m1-> Lines-> Append("转换的值:"+s1);//
}
解决方案 »
- 有一段string变量,内容结构与ini文件的结构一样,有没有方便的方法读出string的内容
- 输出为csv文件打开后'00000'变成'0' ??
- 将query中查询出的记录如何一条一条保存到本地文件中(必须一条一条保存),以便以后进行还原?
- 在SQL查询分析器中怎样可以看出一条SQL的速度快慢呀,看什么字段可以看出呢
- 下面的d6+sqlserver数据库连接有什么区别?那种更好?
- 有没有保留两位小数的控件呢?
- 如何在delphi中连接Mysql?
- 有没有好的传真控件,给我一个好不好.可以在PB中进行调用的那一种.
- 简单问题,怎么才能把这个函数的返回值转换成字符串放在一edit1.text中。50分
- 为什么自己注册的热键不能在全屏窗口下得到响应,而ALT+TAB可以?
- test
- 关于delphi接口 自动生成骨架代码
begin
iInputLen:=myMSComm.InBufferCount;
myMSComm.InputLen:=iInputLen;
RecStr:=myMSComm.Input; sValue:='';
for j:=0 to iInputLen - 1 do
sValue:=sValue+IntToHex(RecStr[j],2); //先拆出数据,再处理小数位和正负号
sValue:=sValue[9]+sValue[10]+sValue[7]+sValue[8]+sValue[5]+sValue[6]; .... end;
USB转串口的设备,百分之八十SPCOMM读不出来的.