示例#1
0
        private void procData(byte[] buff)
        {
            //if (SystemUnit.getCRC(buff, 0, buff.Length - 2) != (buff[buff.Length - 2] << 8 | buff[buff.Length - 1]))
            //{
            //    Log.WriteLog("CommPort", "ERROR", "【procData】校验失败!接收数据:" + SystemUnit.ToHexString(buff));
            //    return;
            //}


            //读数据模式下回复
            if (buff[1] == 0x03 && buff[2] == Global.sizeDistance)
            {
                if (Global.runMode == RunMode.READSIZE)
                {
                    for (int i = 0; i < Global.dataCount; i++)
                    {
                        Global.procData[i].size = (buff[3 + 4 * i] << 8 | buff[4 + 4 * i] | buff[5 + 4 * i] << 24 | buff[6 + 4 * i] << 16);
                    }
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READSIZEBACK, (int)ReturnResult.SUCCESS, (int)DataType.SIZE);
                }
                else if (Global.runMode == RunMode.READPLAN)
                {
                    for (int i = 0; i < Global.dataCount; i++)
                    {
                        Global.procData[i].planCount = (buff[3 + 4 * i] << 8 | buff[4 + 4 * i] | buff[5 + 4 * i] << 24 | buff[6 + 4 * i] << 16);
                    }
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READPLANBACK, (int)ReturnResult.SUCCESS, (int)DataType.PLAN);
                }
//                 if(buff[2] == Global.dataCount*2)
//                 {
//                     for(int i =0;i< Global.dataCount; i++)
//                     {
//                         Global.procData[i].pin = (short)(buff[3 + 2 * i] << 8 | buff[3 + 2 * i + 1]);
//                     }
//                     SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, (int)ReturnResult.SUCCESS, (int)DataType.PIN);
//                 }
            }

            //写入数据时回复
            if (Global.runMode == RunMode.WRITESIZE && buff[1] == 0x10)
            {
                int offset = buff[2] << 8 | buff[3];
                if (offset == Global.sizeOffset)
                {
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITESIZEBACK, (int)ReturnResult.SUCCESS, (int)DataType.SIZE);
                }
            }
            else if (Global.runMode == RunMode.WRITEPLAN && buff[1] == 0x10)
            {
                int offset = buff[2] << 8 | buff[3];
                if (offset == Global.planOffset)
                {
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEPLANBACK, (int)ReturnResult.SUCCESS, (int)DataType.PLAN);
                }
            }
        }
示例#2
0
        private void procData(byte[] buff)
        {
            //if (SystemUnit.getCRC(buff, 0, buff.Length - 2) != (buff[buff.Length - 2] << 8 | buff[buff.Length - 1]))
            //{
            //    Log.WriteLog("CommPort", "ERROR", "【procData】校验失败!接收数据:" + SystemUnit.ToHexString(buff));
            //    return;
            //}


            //读数据模式下回复
            if (buff[1] == 0x03 && Global.runMode == RunMode.READ)
            {
                if (buff[2] == 8)
                {
                    Global.procData[Global.readIndex].size      = (buff[3] << 8 | buff[4] | buff[5] << 24 | buff[6] << 16);
                    Global.procData[Global.readIndex].planCount = (buff[7] << 8 | buff[8] | buff[9] << 24 | buff[10] << 16);
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, (int)ReturnResult.SUCCESS, (int)DataType.SIZEANDPLAN);
                }
                if (buff[2] == Global.dataCount * 2)
                {
                    for (int i = 0; i < Global.dataCount; i++)
                    {
                        Global.procData[i].pin = (short)(buff[3 + 2 * i] << 8 | buff[3 + 2 * i + 1]);
                    }
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, (int)ReturnResult.SUCCESS, (int)DataType.PIN);
                }
            }

            //写入数据时回复
            if (Global.runMode == RunMode.WRITE && buff[1] == 0x10)
            {
                int offset = buff[2] << 8 | buff[3];
                if (Global.writeIndex == Global.dataCount && offset == Global.pinOffset)
                {
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEBACK, (int)ReturnResult.SUCCESS, (int)DataType.PIN);
                }
                else if (offset == Global.offset + 6 * Global.writeIndex)
                {
                    SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEBACK, (int)ReturnResult.SUCCESS, (int)DataType.SIZEANDPLAN);
                }
            }
        }