小弟在做一个从和串口设备通讯的程序,这个设备有四个开关,现在已经知道这四个开关的值分别是:1;2;4;8,全部为通时的代码为&HF(15),现在要监视这四个开关的组合状态,如果用SELECT CASE 的方法来做解码,代码也过于冗长,我自已也觉得这样的代码拿不手.我知道,这四个开关的值与二进制对应关系十进制 1 2 4 8
二进制 0001 0010 0100 1000看起好象很有规律,但我一时没有好的高效一些方法来写,特来请教.另外编码过程用VB写怎样效率高一些?
二进制 0001 0010 0100 1000看起好象很有规律,但我一时没有好的高效一些方法来写,特来请教.另外编码过程用VB写怎样效率高一些?
按位比较就OK了。
哪位为1哪位就是通阿。4个而已。
假设你4个开关量从高到低为: A8,A4,A2,A1
那么他们组合的值为: A8 * 8 + A4 * 4 + A2 * 2 + A1
就这么一行而已
Randomize
cls
Dim i&: For i = 1 To 3
Call ListState(Rnd() * 15)
Next
End SubPrivate Sub ListState(ByVal iSta As Long)
Print "开关参数:"; iSta
Dim i&: For i = 1 To 4
Print "通道"; i; "----> "; Mid$("关开", 1 + (iSta And 1), 1)
iSta = iSta \ 2
Next
End Sub