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.READDATA) { //if (buff[2] == Global.dataCount * 12 && !Global.readDataDone ) if (buff[2] == Global.dataCount * 12) { for (int i = 0; i < Global.dataCount; i++) { int lenth = (buff[i * 12 + 3] << 8 | buff[12 * i + 4] | buff[12 * i + 5] << 24 | buff[12 * i + 6] << 16); int grosswidth = (buff[12 * i + 7] << 8 | buff[12 * i + 8] | buff[12 * i + 9] << 24 | buff[12 * i + 10] << 16); int done = (buff[12 * i + 11] << 8 | buff[12 * i + 12] | buff[12 * i + 13] << 24 | buff[12 * i + 14] << 16); if (lenth == Global.procData[i].Lenth && grosswidth == Global.procData[i].GrossWidth && done != Global.procData[i].Done) { int undo = Global.procData[i].GrossWidth - done; string sql = "update working set done = " + done.ToString() + " ,undone = " + undo.ToString() + " where id = " + Global.procData[i].id; Global.mysqlHelper.ExecuteSql(sql); Global.procData[i].Done = done; Global.dataIsChanged = true; Log.WriteLog("CommPort", "Info", sql); } } if (Global.readDataDone) { Log.WriteLog("CommPort", "Info", "PostMessage:READDONE"); SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, (int)ReturnResult.SUCCESS, (int)DataType.READDONE); } else { Log.WriteLog("CommPort", "Info", "PostMessage:READCONTINUE"); SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, (int)ReturnResult.SUCCESS, (int)DataType.READCONTINUE); } } else if (buff[2] == (30 - Global.dataCount) * 12 && Global.readDataDone) { int count = 30 - Global.dataCount; for (int i = 0; i < count; i++) { int lenth = (buff[i * 12 + 3] << 8 | buff[12 * i + 4] | buff[12 * i + 5] << 24 | buff[12 * i + 6] << 16); int grosswidth = (buff[12 * i + 7] << 8 | buff[12 * i + 8] | buff[12 * i + 9] << 24 | buff[12 * i + 10] << 16); int done = (buff[12 * i + 11] << 8 | buff[12 * i + 12] | buff[12 * i + 13] << 24 | buff[12 * i + 14] << 16); if (lenth == Global.procData[Global.dataCount + i].Lenth && grosswidth == Global.procData[Global.dataCount + i].GrossWidth && done != Global.procData[Global.dataCount + i].Done) { string sql = "update workorder set done = " + done.ToString() + " where id = " + Global.procData[Global.dataCount + i].id; Global.mysqlHelper.ExecuteSql(sql); Global.procData[Global.dataCount + i].Done = done; Global.dataIsChanged = true; Log.WriteLog("CommPort", "Info", sql); } } SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, (int)ReturnResult.SUCCESS, (int)DataType.READDONE); } // 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); // } } else if (buff[1] == 0x03 && Global.runMode == RunMode.READSTATUS && buff[2] == 4) { //buff[4] 第8位运行状态 buff[6]第3位故障状态 第7位 运行模式 int status = (buff[3] << 8 | buff[6]); SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_READBACK, status, (int)DataType.STATUS); } else if (Global.runMode == RunMode.WRITE && buff[1] == 0x10) { int offset = buff[2] << 8 | buff[3]; if (offset == Global.pinOffset) { SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEBACK, (int)ReturnResult.SUCCESS, (int)DataType.PIN); } else if (offset == Global.offset) { if (Global.isSendAll) { SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEBACK, (int)ReturnResult.SUCCESS, (int)DataType.WRITEDONE); } else { SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEBACK, (int)ReturnResult.SUCCESS, (int)DataType.WRITECONTINUE); } } else if (offset == Global.offset + Global.dataCount * 6) { SystemUnit.PostMessage(SystemUnit.HWND_BROADCAST, SystemUnit.WM_WRITEBACK, (int)ReturnResult.SUCCESS, (int)DataType.WRITEDONE); } } }