粉丝2.0万获赞5.2万

大家好,我是自动化零工,朋友们大家晚上好,今天呢,咱们来讲一讲这个 mode bus 采集上来的数据如分啊,就是按位拆分,这个问题是怎么来的呢?好,首先接下来给大家看一个通讯协议啊,这是一个 温控仪的一个通讯协议,大家看这个 d 二零零八 model 一,它代表了一些啊,这个温控仪的一些状态变量。你看二零零八第一个位啊,这个就是二零零八点零吧,就是零代表自动一代表手动一代表 一啊,这个,然后代表本地,这个是远程二,这个 s 二零呢,代表运行,然后一代表 stop, 相当于这个提成器 d 二零零八,不同的位代表不同的含义,是吧? 如果咱们想采集其中某个未变量的状态,那咱们如何去实现呢?其实啊,有两种办法,第一种办法就是啊,直接采集第二零零八的某个未的地址啊,比方,比方说,呃,咱们可以在这里啊,直接设备窗口, 你不是二零零八吗?咱们在这里就直接二零零八,是不是第零位,他就是代表啊,那个零位,这个是吧,第零位就代表这个 am 状态,然后如果是零一位呢,就代表这个 啊,这个是本地还是远程的状态?这个选零一,这个是一共是十六个位啊,零到十五位啊,其实总共是十六个位,这样你可以每个不同的位啊,都加一个变量就 可以了,这是一种办法啊,另一种办法是什么呢?你先把整个的这个状态位直接给他采集上来啊,比方说这个就是,呃,是十六位无符号二进字数,然后你这里写个二零零八,这样呢,他直接采集上来呢,把这十六个位全部采集上来了, 全部采集上来以后呢,你再把它拆分,拆分出来啊,用脚本把它拆分出来,那相当于第一种方法呢,相当于在这里添加 不同的这个位就可以了。咱们第二种方法是直接先把整个提成器的数据采集上来,再按位拆分,咱们就将,今天呢,咱们就讲讲第二种方法啊,怎么去把它拆分。这里呢?我就建了一个简单的,比方说四万零一啊,咱们确认 按未拆分。好,接下来呢,咱们先看一下这个,呃,这个程序的一个运行效果啊,好,启动运行。大家看,我这里随便输一个数啊,比方说九百五十四,九五十 七。好,这里呢也是那个数,其实就是把它变成了二斤字的数啊,二斤字的显示,咱们按位拆分,咱们对比一下看看,看一不一样。一一零一对不对?零零幺零零零幺零对不对?零零幺零,然后是幺零幺零 幺零幺零,然后呢后边就是零一零零,前面这两个零没有显示出来啊。好,接下来咱们看一下是如何实现的呢?其实非常简单啊,其实就用了一个函数就实现了。好,把它打开看一下啊,这个函数 bite test, 检查指定位置是否唯一。好,咱打开帮助看一下啊,咱们打开帮助看一下这个状态,这个函数是怎么应用的? bite test, 这里检测 x 对 定二进制的指定位是否为一, x 整数被检测,被检测的数据 y 整数被检测的位编号范围取值范围零到三十一,你看这个例子,这个 right 等于 byt test。 三二 就是相当于啊,这个,这个就是 x 啊,这个就是 v, 就是相当于检测三对应的 第二位是否为一啊,等于一他就返回一,不等于一他就返回为零。 你看这个啊,这是相当于检测四万零一的第零位。相当于,这个就是检测四万零一的第零位是否为一啊,为一他就返回一,为零就返回零啊,这个就是。下面都是类似的啊,这样就实现了按位拆分,相当于 这个功能就可以应用到这上面啊。好,下一节呢,咱们就讲一讲如何采集上来,如何高低八位进行拆分啊。高八位转换一个数,低八位转换一个数。好,那今天的学习到此结束,点关注不迷路,咱们下期再见。

朋友们大家晚上好,接下来呢咱们会讲两节数据拆分的问题,有时候咱们通过摩托把式采集上来数据啊,需要按这个按位及啊按位进行拆分。好啊,这个实力呢,就是一个按位拆分的一个实力啊,比方说咱们采集上来的数据是一个 一个一个相关的数据啊,十六位的无符号二进制数,比方说三好,然后咱们需要的可能是第一位代表什么含义啊?第二位代表什么含义?可能就是不同的位代表不同的含义,咱们需要进行拆分,那接下来咱们就拆分一下。好,你看拆分以后是不是把每一位都拆分出来了, 哎,幺零幺幺幺零幺幺幺幺零零幺幺零零,然后幺零零幺幺零零幺,然后前面都是零,这这样呢,就实现了这个啊, 安慰的拆分啊,然后还有还有一种情况,就是进行高低八位的拆分,高低八位拆分就是前八位一个数,后八位一个数,那这个怎么拆呢?这里做了一个小的样例啊, 你看后八位是不是后边的八位?幺零幺幺幺幺零零是吧?幺零幺幺幺幺零零啊,然后最后得出来一个十进值的数,就是六十一,然后呢高八位的高八位就是这个啊,幺零幺幺啊,这这就是九啊, 大家知道都用了什么函数吗?知道的话把函数名称留在留言板下方,咱们来看一看,你们猜的对不对?


