Beispiel #1
0
 /*
  * 找到握手包头
  */
 private static int FindDownHeaderHandShake(byte[] data, int inlength, out REQTYPE type)
 {
     byte[] a   = new byte[3];
     byte[] key = new byte[] { 0x87, 0x7e, 03 };
     for (int i = 0; i < inlength - 3; i++)
     {
         Buffer.BlockCopy(data, i, a, 0, 3);
         if (SameArray(a, key))
         {
             type = REQTYPE.FIND;
             return(i + 3);
         }
     }
     byte[] key2 = new byte[] { 0x87, 0x7e, 0x13 };
     for (int i = 0; i < inlength - 3; i++)
     {
         Buffer.BlockCopy(data, i, a, 0, 3);
         if (SameArray(a, key2))
         {
             type = REQTYPE.LOCALUPDATE;
             return(i + 3);
         }
     }
     type = REQTYPE.NONE;
     return(-1);
 }
Beispiel #2
0
        public int SendRequest(REQTYPE type, byte[] value)
        {
            byte[] request = Packrequest(type, value);
            dumpdata(request, request.Length, "request");
            int i = SendData(request);

            //sp1.ClosePort();

            return(i);
        }
Beispiel #3
0
        /*
         * 解压缩握手包
         */
        public static byte[] UnpackHandShake(byte[] data, out REQTYPE type)
        {
            byte[] result = new byte[2];
            int    loc    = FindDownHeaderHandShake(data, data.Length, out type);

            if (loc > 0 && type != REQTYPE.NONE)
            {
                result[0] = data[loc];
                result[1] = data[loc + 1];
            }
            else
            {
                return(null);
            }

            return(result);
        }
Beispiel #4
0
        //打包请求数据
        public static byte[] Packrequest(REQTYPE type, byte[] value)
        {
            byte[] returnvalue = new byte[7];
            returnvalue[0] = upheader[0];
            returnvalue[1] = upheader[1];
            returnvalue[2] = upheader[2];
            switch (type)
            {
            case REQTYPE.ERROR:
                returnvalue[3] = 0x15;
                returnvalue[4] = 0x00;
                returnvalue[5] = 0x00;
                break;

            case REQTYPE.FIND:
                returnvalue[3] = 0x25;
                returnvalue[4] = value[0];
                returnvalue[5] = value[1];
                break;

            case REQTYPE.DATA:
                returnvalue[3] = 0x35;
                returnvalue[4] = value[0];
                returnvalue[5] = value[1];
                break;

            case REQTYPE.VERSION:
                returnvalue[3] = 0x45;
                returnvalue[4] = value[0];
                returnvalue[5] = value[1];
                break;
            }
            returnvalue[6] = CRCSUM(returnvalue, 6);


            return(returnvalue);
        }