SerialPort 串口 访问电子秤

xubing122476 2008-12-26 06:05:03
每次18个字节(Bytes)
串行口通信格式:1个起始位,7个通信位,1个停止位,1个校验位。
波特率:9600bps
输出格式:18字节连续输出

数据位置 含义 描述
Byte1 STX(起始位) 0x02
Byte2 状态字A
bit6 0
bit5 1
bit4--bit3 11 (假设) 分度值因子
bit2--bit0 11 (假设) 小数点位置

Byte3 状态字B
bit6 1/0
bit5 1/0
bit4 1/0
bit3 1/0
bit2 1/0
bit1 1/0
bit0 1/0

byte4 状态字C
bit6 1/0
bit5 1/0
bit4 1/0
bit3 1/0
bit2 1/0
bit1 1/0
bit0 1/0
byte5 ---byte 10 6位毛重或净重值
byte11---byte 16 6为皮重值
byte 17 CR 是回车符 0x0D
byte 18 checksum 检验和 0x00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SerialPort com = new SerialPort(comAddress);
com.BaudRate = 9600;//300-9600
com.DataBits = 8;
com.StopBits = StopBits.One;
com.Parity = Parity.Even;
//打开串口
com.Open();
我用C#中的SerialPort 来操作串口,请问如何获取数据,解析数据,谢谢@!!

...全文
395 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡神在睡觉 2009-03-16
  • 打赏
  • 举报
回复
在串口控件的serialPort1_DataReceived事件中可以获得串口返回数据,判断数据是否完整(够不够18字节,有没有起始位/校验位/回车),按
每次18个字节(Bytes)
串行口通信格式:1个起始位,7个通信位,1个停止位,1个校验位。
波特率:9600bps
输出格式:18字节连续输出

数据位置 含义 描述
Byte1 STX(起始位) 0x02
Byte2 状态字A
bit6 0
bit5 1
bit4--bit3 11 (假设) 分度值因子
bit2--bit0 11 (假设) 小数点位置

Byte3 状态字B
bit6 1/0
bit5 1/0
bit4 1/0
bit3 1/0
bit2 1/0
bit1 1/0
bit0 1/0

byte4 状态字C
bit6 1/0
bit5 1/0
bit4 1/0
bit3 1/0
bit2 1/0
bit1 1/0
bit0 1/0
byte5 ---byte 10 6位毛重或净重值
byte11---byte 16 6为皮重值
byte 17 CR 是回车符 0x0D
byte 18 checksum 检验和 0x00
这个来判断(如果这个都看不懂就先别做了,先琢磨明白了再说),之后将byte5和byte11的值转换编码变成十进制数字(只为显示,一般人习惯看10进制),按有没有小数点拼接好了就ok了.

ps:在串口收发数据的时候切忌要合理丢弃数据,否则串口阻塞会让程序错误连篇!
xubing122476 2009-03-16
  • 打赏
  • 举报
回复
问题解决:
1.联系供应商获取设置方法
2.按16进制计算秤返回的值
a: byte5 ---byte 10 6位毛重或净重值
b:byte11---byte 16 6为皮重值
C:小数点位置
wangzhe1945 2008-12-27
  • 打赏
  • 举报
回复
学习
龙宜坡 2008-12-27
  • 打赏
  • 举报
回复
mark
Sader_ 2008-12-27
  • 打赏
  • 举报
回复
byte[]dataxxx=new byte[17]; //起始位无视
xxxport.Read(dataxxx, 1, 17);

读出来先比对校验位,然后按自己的规则解码.
GTX280 2008-12-26
  • 打赏
  • 举报
回复

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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