请教兄弟们bcd解码问题,如何转换成数字

brightfran 2014-09-29 09:39:30
最近搞个地磅读取的程序,请教兄弟们如何把接收到的字节转换成数字字符,有酬谢。.说明书如下。HT9800 称重 串行通讯方式:连续发送称重值
(1) 波特率:600/1200/2400/480/9600可选
(2) 连续发送称重值
(3) 数据格式
每隔100Ms发送一组数据,每组数据有5帧,每帧数据有11位:1位起始位(0),8位数据位(D0-D7),2位停止位(1).其定义如下:

第1帧:D0-D7 ------ 0FFH(起始位)
第2帧:D0-D2 ------ 为小数点位置(0-5)
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)BCD3.BCD2.BCD1为由高到低的称重值的BCD码
(2)如用户需要以指令方式通讯,我们可根据用户的要求修改串行通讯程序.
...全文
225 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightfran 2014-09-29
  • 打赏
  • 举报
回复
获取到这三帧的bcd数据后,不知要怎样处理了
mjp1234airen4385 2014-09-29
  • 打赏
  • 举报
回复
以前弄过地磅的串口称重。不复杂。 不过没有C#的代码了。
brightfran 2014-09-29
  • 打赏
  • 举报
回复
谢谢版主的回复.请问,我以下代码,要如何转换成重量呢,原代码如下:,如何sb对象如何再次转换 Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。 int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致 byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据 received_count += n;//增加接收计数 comm.Read(buf, 0, n);//读取缓冲数据 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //<协议解析> bool data_1_catched = false;//缓存记录数据是否捕获到 //1.缓存数据 buffer.AddRange(buf); //2.完整性判断 StringBuilder sb = new StringBuilder(); for (int i = 4; i >= 2; i--) { string str1 = Convert.ToString(buf[i], 2).PadLeft(8, '0'); string stry = str1.Substring(4, 4); string strx = str1.Substring(0, 4); int x = Convert.ToInt32(strx, 2); int y = Convert.ToInt32(stry, 2); sb.Append(x); sb.Append(y); }
threenewbee 2014-09-29
  • 打赏
  • 举报
回复
BCD最简单了,它是二进制形式的十进制。 一般就是4个二进制表示一组,比如 0001 0010,就是十进制的 12,你只要每4位二进制转换为十进制,然后乘以10的n-1次方(n等于它从后数是第几组),每一位相加即可。 参考 http://www.cnblogs.com/cancer_xu/archive/2012/09/14/WeighBridge-Com.html (不同设备协议略有不同,不能直接用)
内容概要:本研究聚焦于考虑“源-荷-储”协同互动的主动配电网优化调度问题,基于IEEE33节点标准系统,构建了综合考虑分布式电源(如光伏、风电)、可控负荷及储能系统协调运行的优化模型。通过Matlab编程实现了多主体协同调度的仿真分析,重点解决在不确定性环境下如何提升配电网运行的经济性与可靠性。研究引入需求响应机制,充分调动负荷侧灵活性,并结合储能系统的充放电特性,优化系统运行成本、网损及峰谷差等指标,有效提升了新能源消纳能力和系统运行效率。该资源为电力系统优化领域的核心期刊复现成果,具备较强的学术参考价值和技术实现细节。; 适合人群:适用于电力系统、能源与动力工程等相关专业的研究生、科研人员及从事智能电网优化调度工作的技术人员,具备一定Matlab编程基础和电力系统专业知识者更佳。; 使用场景及目标:①用于学习和复现高水平期刊中关于主动配电网优化调度的建模范式;②掌握“源-荷-储”协同优化的数学建模方法与求解流程;③支撑科研项目中对IEEE33节点系统的仿真验证与算法对比分析;④为学位论文或学术论文提供可复用的技术框架与代码基础。; 阅读建议:建议读者结合文档中的代码逐行调试,理解目标函数与约束条件的实现逻辑,同时关注多元宇宙优化算法(MVO)等智能算法在求解过程中的应用方式,推荐配合相关文献深入理解模型假设与参数设置。

111,124

社区成员

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

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

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