搜索
bottom↓
回复: 21

Cumu开源智能WIFI万用表:第四章:段码数据译码

[复制链接]

出0入0汤圆

发表于 2015-6-24 08:32:44 | 显示全部楼层 |阅读模式
本帖最后由 Cumu 于 2015-6-24 13:49 编辑

第四章:段码数据译码








了解Cumu请点击:Cumu开源智能WIFI万用表首次公开:精心筹备1年,将开源进行到底

FS9721串口格式如下:



14个字节的数据为断码显示数据:







MCU接收到14个字节数据后,需要按照液晶屏真值表译码成当前量程和当前数值 ,为此真是伤透了脑筋!
下面是C#写的验证程序,串口接收到数据后,显示出档位和数值。
工程文件是基于以前的一个项目改的,红色圈起的是解析出的测量值和档位



        //直流电压:1-mV  2-V
        //交流电压:3-mV  4-V
        //直流电流:5-uA  6-mA  7-A
        //交流电流:8-uA  9-mA  10-A
        //通断检测:11
        //电    阻:12-MΩ 13-KΩ 14-Ω
        //二 极 管:15
        
        //电    容:16-nF  17-uF
        //频    率:18-MHz  19-KHz  20-Hz
        //占空比  :21

        private void BuffToDisp(byte[] buff)
        {
            if ((((buff[0] & ((byte)0x04)) != 0))&&((((buff[10] & ((byte)0x08)) != 0))))
            {
                b_add = 1;
            }
            else if ((((buff[0] & ((byte)0x04)) != 0)) && ((((buff[12] & ((byte)0x04)) != 0))))
            {
                b_add = 2;
            }
            else if ((((buff[0] & ((byte)0x08)) != 0)) && ((((buff[10] & ((byte)0x08)) != 0))))
            {
                b_add = 3;
            }
            else if ((((buff[0] & ((byte)0x08)) != 0)) && ((((buff[12] & ((byte)0x04)) != 0))))
            {
                b_add = 4;
            }
            else if ((((buff[0] & ((byte)0x04)) != 0)) && ((((buff[9] & ((byte)0x08)) != 0))))
            {
                b_add = 5;
            }
            else if ((((buff[0] & ((byte)0x04)) != 0)) && ((((buff[10] & ((byte)0x08)) != 0))))
            {
                b_add = 6;
            }
            else if ((((buff[0] & ((byte)0x04)) != 0)) && ((((buff[12] & ((byte)0x08)) != 0))))
            {
                b_add = 7;
            }
            else if ((((buff[0] & ((byte)0x08)) != 0)) && ((((buff[9] & ((byte)0x08)) != 0))))
            {
                b_add = 8;
            }
            else if ((((buff[0] & ((byte)0x08)) != 0)) && ((((buff[10] & ((byte)0x08)) != 0))))
            {
                b_add = 9;
            }
            else if ((((buff[0] & ((byte)0x08)) != 0)) && ((((buff[12] & ((byte)0x08)) != 0))))
            {
                b_add = 10;
            }
            else if ((((buff[10] & ((byte)0x01)) != 0)) && ((((buff[11] & ((byte)0x04)) != 0))))
            {
                b_add = 11;
            }
            else if ((((buff[10] & ((byte)0x02)) != 0)) && ((((buff[11] & ((byte)0x04)) != 0))))
            {
                b_add = 12;
            }
            else if ((((buff[9] & ((byte)0x02)) != 0)) && ((((buff[11] & ((byte)0x04)) != 0))))
            {
                b_add = 13;
            }
            else if(((buff[11] & ((byte)0x04)) != 0))
            {
                b_add = 14;
            }
            else if (((buff[9] & ((byte)0x01)) != 0))
            {
                b_add = 15;
            }
            
            else if ((((buff[9] & ((byte)0x04)) != 0)) && ((((buff[11] & ((byte)0x08)) != 0))))
            {
                b_add = 16;
            }
            else if ((((buff[9] & ((byte)0x08)) != 0)) && ((((buff[11] & ((byte)0x08)) != 0))))
            {
                b_add = 17;
            }

            else if ((((buff[10] & ((byte)0x02)) != 0)) && ((((buff[12] & ((byte)0x02)) != 0))))
            {
                b_add = 18;
            }
            else if ((((buff[9] & ((byte)0x02)) != 0)) && ((((buff[12] & ((byte)0x02)) != 0))))
            {
                b_add = 19;
            }
            else if (((buff[12] & ((byte)0x02)) != 0))
            {
                b_add = 20;
            }
            else if (((buff[10] & ((byte)0x04)) != 0))
            {
                b_add = 21;
            }
            else b_add = 0;

            if (((buff[1] & ((byte)0x08)) != 0))//负值
            {
                s1 ="-";
            }
            else s1 = "+";

            if ((((buff[1] & ((byte)0x07)) == 0x00)) && (buff[2] == 0x35))
            {
                s2 = "1";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x05)) && (buff[2] == 0x3b))
            {
                s2 = "2";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x01)) && (buff[2] == 0x3f))
            {
                s2 = "3";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x02)) && (buff[2] == 0x37))
            {
                s2 = "4";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x03)) && (buff[2] == 0x3e))
            {
                s2 = "5";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x07)) && (buff[2] == 0x3e))
            {
                s2 = "6";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x01)) && (buff[2] == 0x35))
            {
                s2 = "7";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x07)) && (buff[2] == 0x3f))
            {
                s2 = "8";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x03)) && (buff[2] == 0x3f))
            {
                s2 = "9";
            }
            else if ((((buff[1] & ((byte)0x07)) == 0x07)) && (buff[2] == 0x3d))
            {
                s2 = "0";
            }

            if (((buff[3] & ((byte)0x08)) != 0))//小数点
            {
                s3 = ".";
            }
            else s3 = " ";

            if ((((buff[3] & ((byte)0x07)) == 0x00)) && (buff[4] == 0x55))
            {
                s4 = "1";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x05)) && (buff[4] == 0x5b))
            {
                s4 = "2";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x01)) && (buff[4] == 0x5f))
            {
                s4 = "3";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x02)) && (buff[4] == 0x57))
            {
                s4 = "4";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x03)) && (buff[4] == 0x5e))
            {
                s4 = "5";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x07)) && (buff[4] == 0x5e))
            {
                s4 = "6";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x01)) && (buff[4] == 0x55))
            {
                s4 = "7";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x07)) && (buff[4] == 0x5f))
            {
                s4 = "8";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x03)) && (buff[4] == 0x5f))
            {
                s4 = "9";
            }
            else if ((((buff[3] & ((byte)0x07)) == 0x07)) && (buff[4] == 0x5d))
            {
                s4 = "0";
            }

            if (((buff[5] & ((byte)0x08)) != 0))//小数点
            {
                s5 = ".";
            }
            else s5 = " ";

            if ((((buff[5] & ((byte)0x07)) == 0x00)) && (buff[6] == 0x75))
            {
                s6 = "1";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x05)) && (buff[6] == 0x7b))
            {
                s6 = "2";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x01)) && (buff[6] == 0x7f))
            {
                s6 = "3";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x02)) && (buff[6] == 0x77))
            {
                s6 = "4";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x03)) && (buff[6] == 0x7e))
            {
                s6 = "5";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x07)) && (buff[6] == 0x7e))
            {
                s6 = "6";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x01)) && (buff[6] == 0x75))
            {
                s6 = "7";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x07)) && (buff[6] == 0x7f))
            {
                s6 = "8";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x03)) && (buff[6] == 0x7f))
            {
                s6 = "9";
            }
            else if ((((buff[5] & ((byte)0x07)) == 0x07)) && (buff[6] == 0x7d))
            {
                s6 = "0";
            }

            if (((buff[7] & ((byte)0x08)) != 0))//小数点
            {
                s7 = ".";
            }
            else s7 = " ";

            if ((((buff[7] & ((byte)0x07)) == 0x00)) && (buff[8] == 0x95))
            {
                s8 = "1";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x05)) && (buff[8] == 0x9b))
            {
                s8 = "2";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x01)) && (buff[8] == 0x9f))
            {
                s8 = "3";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x02)) && (buff[8] == 0x97))
            {
                s8 = "4";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x03)) && (buff[8] == 0x9e))
            {
                s8 = "5";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x07)) && (buff[8] == 0x9e))
            {
                s8 = "6";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x01)) && (buff[8] == 0x95))
            {
                s8 = "7";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x07)) && (buff[8] == 0x9f))
            {
                s8 = "8";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x03)) && (buff[8] == 0x9f))
            {
                s8 = "9";
            }
            else if ((((buff[7] & ((byte)0x07)) == 0x07)) && (buff[8] == 0x9d))
            {
                s8 = "0";
            }
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2015-6-24 08:42:57 | 显示全部楼层
断码数据译码

出0入0汤圆

发表于 2015-6-24 10:31:47 | 显示全部楼层
比较关心,何时发布。。。

出0入0汤圆

 楼主| 发表于 2015-6-24 10:35:12 | 显示全部楼层
经过几天的研究,Cumu可以微信获取测量值了
想象一下,Cumu连接到测量点上,然后在任何地方拿出手机,给Cumu发送“获取1号测量点数值”,然后测量值就回复了!

出0入0汤圆

 楼主| 发表于 2015-6-24 10:36:07 | 显示全部楼层
血刃修罗 发表于 2015-6-24 10:31
比较关心,何时发布。。。

个人精力有限,我会加快进度的

出0入0汤圆

发表于 2015-6-24 12:37:33 来自手机 | 显示全部楼层
持续关注中,也在跟着楼主的在做实验。

出0入8汤圆

发表于 2015-6-24 12:48:12 | 显示全部楼层
看了半天才明白,应该是段码吧

出0入0汤圆

 楼主| 发表于 2015-6-24 13:48:31 | 显示全部楼层
liwei_jlu 发表于 2015-6-24 12:48
看了半天才明白,应该是段码吧

不好意思啊,这个错字太明显了

出0入0汤圆

发表于 2015-7-12 00:04:32 | 显示全部楼层
楼主,我还等着买套件呢!

出0入0汤圆

发表于 2015-7-12 07:26:21 来自手机 | 显示全部楼层
一直学习中……。呵

出0入0汤圆

发表于 2015-7-12 08:46:05 | 显示全部楼层
一同期待   有机会也想买套件   楼主加油

出0入0汤圆

发表于 2015-7-12 12:52:29 | 显示全部楼层
谢谢楼主的分享。

出0入0汤圆

发表于 2015-7-12 23:08:32 来自手机 | 显示全部楼层
一直关注中

出0入0汤圆

发表于 2015-7-14 12:07:42 | 显示全部楼层
持续关注中,跟着楼主学到不少了,谢谢

出0入0汤圆

发表于 2015-7-14 13:04:20 | 显示全部楼层
楼主,请问为什么不用stm32翻译后再发送到 上位机?

出0入0汤圆

发表于 2015-7-23 16:15:34 | 显示全部楼层
LZ,你的网站很漂亮,能介绍下用什么怎么做的吗

出0入0汤圆

发表于 2015-7-23 16:16:01 | 显示全部楼层
LZ,你的网站很漂亮,能介绍下用什么怎么做的吗

出0入0汤圆

发表于 2015-8-5 15:07:23 | 显示全部楼层
楼主有日子没路面了啊

出0入0汤圆

发表于 2015-8-6 22:56:23 | 显示全部楼层
网站是用wordpress模板吧

出0入0汤圆

发表于 2015-11-19 21:03:37 | 显示全部楼层
楼主你现在的万用表做到什么地步了呢

出0入0汤圆

发表于 2015-11-30 09:32:24 | 显示全部楼层
楼主目前进度如何?想买一块玩玩~~样机也行

出0入0汤圆

发表于 2015-12-4 12:51:12 来自手机 | 显示全部楼层
楼主好长时间没更新了…
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表