开关量控制在实际应用中其实是相对比较简单的东西,但是跟电脑软件控制匹配起来就有点让人摸不到头脑了,一般开关控制我们会这样写:
上面程序相当于有14路的开关量控制,其中对应位为“1”时,就打开对应位,对应位为“0”时,便关闭对应位。
如此看来甚是简单,但如果和电脑软件控制联系起来,你就会发现有问题了,比如:当我要打开第“1”位,那我发送的“dat”对应值应该为“1”;同理打开第“2”位,对应发送“dat”的值则为“2”;此时问题就出来了,当我依次打开第“1”路和第“2”路,并且需要两路都打开,那我发送的值应该怎么处理呢?
很多人觉得,只要发一个“3”进去就行了,但是其实全错,为什么呢?其一:电脑软件控制时每一个按钮对应一直数值,按下去为“1”,放开为“0”,这个按钮其实对应了一个16位的值,如第一位:0x00000001,但当我关闭时,0x00000000就影响的下面几路的关闭了,因为下面对应位为0了,详情如下:
dat为16位整型数据,如此我要关闭第“1”路就应该发送“0xFE”,但问题出现了,我发“FE”则对应的下面所有剩余13路通道全开了,所以这时候关闭的那个值就值得思考了,既要不影响后面的开关通道,又要关闭第“1”路的信号,于是便有了如下算法:
注意:本文归作者所有,未经作者允许,不得转载