小弟在做一个从和串口设备通讯的程序,这个设备有四个开关,现在已经知道这四个开关的值分别是:1;2;4;8,全部为通时的代码为&HF(15),现在要监视这四个开关的组合状态,如果用SELECT CASE 的方法来做解码,代码也过于冗长,我自已也觉得这样的代码拿不手.我知道,这四个开关的值与二进制对应关系十进制       1       2       4       8
二进制    0001    0010    0100    1000看起好象很有规律,但我一时没有好的高效一些方法来写,特来请教.另外编码过程用VB写怎样效率高一些?

解决方案 »

  1.   

    貌似每必要用SELECTCASE吧。
    按位比较就OK了。
    哪位为1哪位就是通阿。4个而已。
      

  2.   

    这不就是数模转换么.
    假设你4个开关量从高到低为: A8,A4,A2,A1
    那么他们组合的值为: A8 * 8 + A4 * 4 + A2 * 2 + A1
    就这么一行而已
      

  3.   

    这个代码应该比较简单吧!Option ExplicitPrivate Sub Command1_Click()
        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