コード例 #1
0
        void setWiegandMultiConfig(IntPtr sdkContext, UInt32 deviceID, bool isMasterDevice)
        {
            BS2WiegandMultiConfig wiegandMultiConfig = Util.AllocateStructure <BS2WiegandMultiConfig>();

            for (int i = 0; i < 15; ++i)
            {
                wiegandMultiConfig.formats[i].formatID      = 0;
                wiegandMultiConfig.formats[i].format.length = 0;
                Array.Clear(wiegandMultiConfig.formats[i].format.idFields, 0, 128);
                Array.Clear(wiegandMultiConfig.formats[i].format.parityFields, 0, 128);
                Array.Clear(wiegandMultiConfig.formats[i].format.parityType, 0, 4);
                Array.Clear(wiegandMultiConfig.formats[i].format.parityPos, 0, 4);
            }

            wiegandMultiConfig.formats[0].formatID            = 1;
            wiegandMultiConfig.formats[0].format.length       = 26;
            wiegandMultiConfig.formats[0].format.idFields[28] = 0x01;
            wiegandMultiConfig.formats[0].format.idFields[29] = 0xFE;

            wiegandMultiConfig.formats[0].format.idFields[31 + 29] = 0x01;
            wiegandMultiConfig.formats[0].format.idFields[31 + 30] = 0xFF;
            wiegandMultiConfig.formats[0].format.idFields[31 + 31] = 0xFE;

            wiegandMultiConfig.formats[0].format.parityType[0] = 2;
            wiegandMultiConfig.formats[0].format.parityPos[0]  = 0;

            wiegandMultiConfig.formats[0].format.parityType[1] = 1;
            wiegandMultiConfig.formats[0].format.parityPos[1]  = 25;

            wiegandMultiConfig.formats[0].format.parityType[2] = 0;
            wiegandMultiConfig.formats[0].format.parityPos[2]  = 0;

            wiegandMultiConfig.formats[0].format.parityType[3] = 0;
            wiegandMultiConfig.formats[0].format.parityPos[3]  = 0;

            wiegandMultiConfig.formats[0].format.parityFields[28] = 0x01;
            wiegandMultiConfig.formats[0].format.parityFields[29] = 0xFE;
            wiegandMultiConfig.formats[0].format.parityFields[30] = 0xE0;

            wiegandMultiConfig.formats[0].format.parityFields[31 + 30] = 0x1F;
            wiegandMultiConfig.formats[0].format.parityFields[31 + 31] = 0xFE;

            Console.WriteLine("Trying to set wiegandMultiConfig");
            BS2ErrorCode result = (BS2ErrorCode)API.BS2_SetWiegandMultiConfig(sdkContext, deviceID, ref wiegandMultiConfig);

            if (result != BS2ErrorCode.BS_SDK_SUCCESS)
            {
                Console.WriteLine("Got error({0}).", result);
            }
            else
            {
                getWiegandMultiConfig(sdkContext, deviceID, true);
            }
        }
コード例 #2
0
 void print(IntPtr sdkContext, BS2WiegandMultiConfig wiegandMultiConfig)
 {
     for (int idx = 0; idx < 15; ++idx)
     {
         Console.WriteLine(">>>> WiegandMulti configuration formatID[{0}] = {1}", idx, wiegandMultiConfig.formats[idx].formatID);
         Console.WriteLine("     |--length : {0}", wiegandMultiConfig.formats[idx].format.length);
         for (int j = 0; j < 4; ++j)
         {
             for (int k = 27; k < 32; ++k)
             {
                 Console.WriteLine("     |--idFields[{0},{1}] : {2}", j, k, wiegandMultiConfig.formats[idx].format.idFields[(j * 31) + k]);
             }
         }
     }
 }
コード例 #3
0
        public void setPredefinedWiegandFormats(IntPtr sdkContext, UInt32 deviceID, bool isMasterDevice)
        {
            Console.WriteLine("Do you want to set the predefined wiegand formats to the device?[Y/N]");
            Console.Write(">>>> ");
            if (!Util.IsYes())
            {
                return;
            }

            BS2WiegandMultiConfig configWiegandMulti = Util.AllocateStructure <BS2WiegandMultiConfig>();

            /*=======================H10301 26 bit format=======================*/
            configWiegandMulti.formats[0].formatID            = 1;
            configWiegandMulti.formats[0].format.length       = 26;
            configWiegandMulti.formats[0].format.idFields     = new byte[128];
            configWiegandMulti.formats[0].format.parityFields = new byte[128];
            configWiegandMulti.formats[0].format.parityType   = new byte[4];
            configWiegandMulti.formats[0].format.parityPos    = new byte[4];

            configWiegandMulti.formats[0].format.idFields[28] = 0x01;
            configWiegandMulti.formats[0].format.idFields[29] = 0xFE;
            configWiegandMulti.formats[0].format.idFields[61] = 0x01;
            configWiegandMulti.formats[0].format.idFields[62] = 0xFF;
            configWiegandMulti.formats[0].format.idFields[63] = 0xFE;

            configWiegandMulti.formats[0].format.parityType[0] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_EVEN;
            configWiegandMulti.formats[0].format.parityType[1] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;

            configWiegandMulti.formats[0].format.parityPos[0] = 0;
            configWiegandMulti.formats[0].format.parityPos[1] = 25;

            configWiegandMulti.formats[0].format.parityFields[28] = 0x01;
            configWiegandMulti.formats[0].format.parityFields[29] = 0xFF;
            configWiegandMulti.formats[0].format.parityFields[30] = 0xE0;

            configWiegandMulti.formats[0].format.parityFields[62] = 0x1F;
            configWiegandMulti.formats[0].format.parityFields[63] = 0xFE;



            /*=======================H10302 37 bit format=======================*/
            configWiegandMulti.formats[1].formatID            = 2;
            configWiegandMulti.formats[1].format.length       = 37;                      //Set the length of the format. H10302 is a 37 bit format
            configWiegandMulti.formats[1].format.idFields     = new byte[128];
            configWiegandMulti.formats[1].format.parityFields = new byte[128];
            configWiegandMulti.formats[1].format.parityType   = new byte[4];
            configWiegandMulti.formats[1].format.parityPos    = new byte[4];

            // H10302 uses only 1 field. The first field is from [0] ~ [31]
            // If you convert the bits used on the field in binary, it is as below. 35 bit as card ID.
            // 0000 1111 / 1111 1111 / 1111 1111 / 1111 1111 / 1111 1110        -> 0F / FF / FF / FF / FE
            //     27    /     28    /     29    /    30     /    31
            configWiegandMulti.formats[1].format.idFields[27] = 0x0F;
            configWiegandMulti.formats[1].format.idFields[28] = 0xFF;
            configWiegandMulti.formats[1].format.idFields[29] = 0xFF;
            configWiegandMulti.formats[1].format.idFields[30] = 0xFF;
            configWiegandMulti.formats[1].format.idFields[31] = 0xFE;


            configWiegandMulti.formats[1].format.parityType[0] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_EVEN; // The first parity bit is an even parity bit.
            configWiegandMulti.formats[1].format.parityType[1] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;  // The second parity bit is an odd parity bit.

            configWiegandMulti.formats[1].format.parityPos[0] = 0;                                                // The first parity bit's position is the first bit. So, it will be 0.
            configWiegandMulti.formats[1].format.parityPos[1] = 36;                                               // The second parity bit's position is the last bit. So, it will be 36.


            // According to H10302, the first even parity calculates the bits starting from 1 ~ 18
            // 000 0<parity bit 1111 / 1111 1111 / 1111 1100                -> 0F / FF / FC
            //           27         /     28    /     29
            configWiegandMulti.formats[1].format.parityFields[27] = 0x0F;
            configWiegandMulti.formats[1].format.parityFields[28] = 0xFF;
            configWiegandMulti.formats[1].format.parityFields[29] = 0xFC;

            // The second parity calculates the bits starting from 18 ~ 35. Since this is for the second parity bit,
            // parityFields[32] ~ [63] is used.
            // 0000 0111 / 1111 1111 / 1111 111 0<parity bit
            //     61    /     62    /     63
            configWiegandMulti.formats[1].format.parityFields[61] = 0x07;
            configWiegandMulti.formats[1].format.parityFields[62] = 0xFF;
            configWiegandMulti.formats[1].format.parityFields[63] = 0xFE;



            /*=======================H10304 37 bit format=======================*/
            configWiegandMulti.formats[2].formatID            = 3;
            configWiegandMulti.formats[2].format.length       = 37;
            configWiegandMulti.formats[2].format.idFields     = new byte[128];
            configWiegandMulti.formats[2].format.parityFields = new byte[128];
            configWiegandMulti.formats[2].format.parityType   = new byte[4];
            configWiegandMulti.formats[2].format.parityPos    = new byte[4];

            configWiegandMulti.formats[2].format.idFields[59] = 0x0F;
            configWiegandMulti.formats[2].format.idFields[60] = 0xFF;
            configWiegandMulti.formats[2].format.idFields[61] = 0xF0;

            configWiegandMulti.formats[2].format.idFields[29] = 0x0F;
            configWiegandMulti.formats[2].format.idFields[30] = 0xFF;
            configWiegandMulti.formats[2].format.idFields[31] = 0xFE;

            configWiegandMulti.formats[2].format.parityType[0] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_EVEN;
            configWiegandMulti.formats[2].format.parityType[1] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;

            configWiegandMulti.formats[2].format.parityPos[0] = 0;
            configWiegandMulti.formats[2].format.parityPos[1] = 36;

            configWiegandMulti.formats[2].format.parityFields[27] = 0x0F;
            configWiegandMulti.formats[2].format.parityFields[28] = 0xFF;
            configWiegandMulti.formats[2].format.parityFields[29] = 0xFC;

            configWiegandMulti.formats[2].format.parityFields[61] = 0x07;
            configWiegandMulti.formats[2].format.parityFields[62] = 0xFF;
            configWiegandMulti.formats[2].format.parityFields[63] = 0xFE;


            /*=======================Corporate 1000 35 bit format=======================*/
            configWiegandMulti.formats[3].formatID            = 4;
            configWiegandMulti.formats[3].format.length       = 35;
            configWiegandMulti.formats[3].format.idFields     = new byte[128];
            configWiegandMulti.formats[3].format.parityFields = new byte[128];
            configWiegandMulti.formats[3].format.parityType   = new byte[4];
            configWiegandMulti.formats[3].format.parityPos    = new byte[4];

            configWiegandMulti.formats[3].format.idFields[27] = 0x01;
            configWiegandMulti.formats[3].format.idFields[28] = 0xFF;
            configWiegandMulti.formats[3].format.idFields[29] = 0xE0;

            configWiegandMulti.formats[3].format.idFields[61] = 0x1F;
            configWiegandMulti.formats[3].format.idFields[62] = 0xFF;
            configWiegandMulti.formats[3].format.idFields[63] = 0xFE;

            configWiegandMulti.formats[3].format.parityType[0] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_EVEN;
            configWiegandMulti.formats[3].format.parityType[1] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;
            configWiegandMulti.formats[3].format.parityType[2] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;

            configWiegandMulti.formats[3].format.parityPos[0] = 1;
            configWiegandMulti.formats[3].format.parityPos[1] = 34;
            configWiegandMulti.formats[3].format.parityPos[2] = 0;

            configWiegandMulti.formats[3].format.parityFields[27] = 0x01;
            configWiegandMulti.formats[3].format.parityFields[28] = 0xB6;
            configWiegandMulti.formats[3].format.parityFields[29] = 0xDB;
            configWiegandMulti.formats[3].format.parityFields[30] = 0x6D;
            configWiegandMulti.formats[3].format.parityFields[31] = 0xB6;

            configWiegandMulti.formats[3].format.parityFields[59] = 0x03;
            configWiegandMulti.formats[3].format.parityFields[60] = 0x6D;
            configWiegandMulti.formats[3].format.parityFields[61] = 0xB6;
            configWiegandMulti.formats[3].format.parityFields[62] = 0xDB;
            configWiegandMulti.formats[3].format.parityFields[63] = 0x6C;

            configWiegandMulti.formats[3].format.parityFields[91] = 0x03;
            configWiegandMulti.formats[3].format.parityFields[92] = 0xFF;
            configWiegandMulti.formats[3].format.parityFields[93] = 0xFF;
            configWiegandMulti.formats[3].format.parityFields[94] = 0xFF;
            configWiegandMulti.formats[3].format.parityFields[95] = 0xFF;



            /*=======================Corporate 1000 48 bit format=======================*/
            configWiegandMulti.formats[4].formatID            = 5;
            configWiegandMulti.formats[4].format.length       = 48;
            configWiegandMulti.formats[4].format.idFields     = new byte[128];
            configWiegandMulti.formats[4].format.parityFields = new byte[128];
            configWiegandMulti.formats[4].format.parityType   = new byte[4];
            configWiegandMulti.formats[4].format.parityPos    = new byte[4];

            configWiegandMulti.formats[4].format.idFields[26] = 0x3F;
            configWiegandMulti.formats[4].format.idFields[27] = 0xFF;
            configWiegandMulti.formats[4].format.idFields[28] = 0xFF;

            configWiegandMulti.formats[4].format.idFields[61] = 0xFF;
            configWiegandMulti.formats[4].format.idFields[62] = 0xFF;
            configWiegandMulti.formats[4].format.idFields[63] = 0xFE;

            configWiegandMulti.formats[4].format.parityType[0] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_EVEN;
            configWiegandMulti.formats[4].format.parityType[1] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;
            configWiegandMulti.formats[4].format.parityType[2] = (byte)BS2ParityTypeEnum.BS2_WIEGAND_PARITY_ODD;

            configWiegandMulti.formats[4].format.parityPos[0] = 1;
            configWiegandMulti.formats[4].format.parityPos[1] = 47;
            configWiegandMulti.formats[4].format.parityPos[2] = 0;

            configWiegandMulti.formats[4].format.parityFields[26] = 0x1B;
            configWiegandMulti.formats[4].format.parityFields[27] = 0x6D;
            configWiegandMulti.formats[4].format.parityFields[28] = 0xB6;
            configWiegandMulti.formats[4].format.parityFields[29] = 0xDB;
            configWiegandMulti.formats[4].format.parityFields[30] = 0x6D;
            configWiegandMulti.formats[4].format.parityFields[31] = 0xB6;

            configWiegandMulti.formats[4].format.parityFields[58] = 0x36;
            configWiegandMulti.formats[4].format.parityFields[59] = 0xDB;
            configWiegandMulti.formats[4].format.parityFields[60] = 0x6D;
            configWiegandMulti.formats[4].format.parityFields[61] = 0xB6;
            configWiegandMulti.formats[4].format.parityFields[62] = 0xDB;
            configWiegandMulti.formats[4].format.parityFields[63] = 0x6C;

            configWiegandMulti.formats[4].format.parityFields[90] = 0x7F;
            configWiegandMulti.formats[4].format.parityFields[91] = 0xFF;
            configWiegandMulti.formats[4].format.parityFields[92] = 0xFF;
            configWiegandMulti.formats[4].format.parityFields[93] = 0xFF;
            configWiegandMulti.formats[4].format.parityFields[94] = 0xFF;
            configWiegandMulti.formats[4].format.parityFields[95] = 0xFF;

            BS2ErrorCode result = (BS2ErrorCode)API.BS2_SetWiegandMultiConfig(sdkContext, deviceID, ref configWiegandMulti);

            if (result != BS2ErrorCode.BS_SDK_SUCCESS)
            {
                Console.WriteLine("Got error({0}).", result);
                return;
            }
        }
コード例 #4
0
 extern public static int BS2_SetWiegandMultiConfig(IntPtr context, UInt32 deviceId, ref BS2WiegandMultiConfig config);