public void SetStatus(byte[] rbytes) { if (this.InvokeRequired) { this.Invoke(new Action <byte[]>(SetStatus), rbytes); } else { try { if (recvBytes != null && recvBytes.Equals(rbytes)) { return; } recvBytes = (byte[])rbytes.Clone(); SOCKET_REQUEST request = CStuct <SOCKET_REQUEST> .BytesToStruct(recvBytes); labCmd.Text = request.CmdNo.ToString(); labName.Text = request.Name; labStatus.Text = request.ErrCode.ToString(); if (request.ErrCode == ESOCKET_ERROR.OK) { labStatus.ForeColor = Color.Blue; } else { labStatus.ForeColor = Color.Red; } rtbSnList.Clear(); if (request.Ready == 0) { labReady.Text = CLanguage.Lan("治具未就绪"); labReady.ForeColor = Color.Red; labModel.Text = "----"; labIdCard.Text = "----"; } else { if (request.Ready == 1) { labReady.Text = CLanguage.Lan("前工位"); } else { labReady.Text = CLanguage.Lan("后工位"); } labReady.ForeColor = Color.Blue; labIdCard.Text = request.IdCard; labModel.Text = request.Model; for (int i = 0; i < request.UUT_NUM; i++) { string sn = CLanguage.Lan("条码") + "【" + (i + 1).ToString() + "】:" + request.UUT[i].SerialNo + ";" + CLanguage.Lan("结果") + "=" + request.UUT[i].Result.ToString() + "\r\n"; rtbSnList.AppendText(sn); } } } catch (Exception) { throw; } } }
/// <summary> /// 自定义结构体应答客户端数据 /// </summary> /// <param name="recvData"></param> /// <returns></returns> public byte[] ReponseStruct(byte[] recvBytes) { try { //接收字节长度 if (recvBytes.Length != REQUEST_LEN) { socket_reponse.CmdNo = ESOCKET_CMD.NG; socket_reponse.Name = ""; socket_reponse.ErrCode = ESOCKET_ERROR.COMMAND_LENTH_ERROR; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = 0; return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse)); } SOCKET_REQUEST socketQuest = CStuct <SOCKET_REQUEST> .BytesToStruct(recvBytes); //站别名称 string statName = socketQuest.Name; if (!StatIdList.ContainsKey(statName)) { socket_reponse.CmdNo = ESOCKET_CMD.NG; socket_reponse.Name = socketQuest.Name; socket_reponse.ErrCode = ESOCKET_ERROR.STATION_IS_NOT_EXIST; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = 0; return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse)); } int statId = StatIdList[statName]; //命令类型 switch (socketQuest.CmdNo) { case ESOCKET_CMD.QUERY_STATE: socket_reponse.CmdNo = ESOCKET_CMD.STATE_OK; socket_reponse.Name = socketQuest.Name; socket_reponse.IdCard = StatRunList[statId].IdCard; socket_reponse.Model = StatRunList[statId].ModelName; socket_reponse.MesFlag = StatRunList[statId].MesFlag; if (StatRunList[statId].DoRun == ERUN.空闲 || StatRunList[statId].DoRun == ERUN.测试结束) { socket_reponse.ErrCode = ESOCKET_ERROR.OK; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = StatRunList[statId].SlotNum; for (int i = 0; i < socket_reponse.UUT_NUM; i++) { socket_reponse.UUT[i].SerialNo = string.Empty; socket_reponse.UUT[i].Result = 0; StatRunList[statId].Result[i] = 0; } } else { int ready = StatRunList[statId].SubNo; socket_reponse.ErrCode = ESOCKET_ERROR.OK; socket_reponse.Ready = ready; socket_reponse.UUT_NUM = StatRunList[statId].SlotNum; for (int i = 0; i < socket_reponse.UUT_NUM; i++) { socket_reponse.UUT[i].SerialNo = StatRunList[statId].SerialNos[i]; socket_reponse.UUT[i].Result = 0; } } break; case ESOCKET_CMD.START_TEST: if (StatRunList[statId].DoRun == ERUN.空闲) { socket_reponse.CmdNo = ESOCKET_CMD.NG; socket_reponse.Name = socketQuest.Name; socket_reponse.ErrCode = ESOCKET_ERROR.STATION_IS_NOT_READY; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = 0; return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse)); } else { socket_reponse.ErrCode = ESOCKET_ERROR.OK; socket_reponse.CmdNo = ESOCKET_CMD.START_OK; socket_reponse.Name = socketQuest.Name; socket_reponse.IdCard = StatRunList[statId].IdCard; socket_reponse.Model = StatRunList[statId].ModelName; socket_reponse.MesFlag = StatRunList[statId].MesFlag; socket_reponse.Ready = StatRunList[statId].SubNo; socket_reponse.UUT_NUM = StatRunList[statId].SlotNum; for (int i = 0; i < socket_reponse.UUT_NUM; i++) { socket_reponse.UUT[i].SerialNo = StatRunList[statId].SerialNos[i]; socket_reponse.UUT[i].Result = 0; StatRunList[statId].Result[i] = 0; } StatRunList[statId].DoRun = ERUN.测试中; } break; case ESOCKET_CMD.END_TEST: if (StatRunList[statId].DoRun == ERUN.空闲) { socket_reponse.CmdNo = ESOCKET_CMD.NG; socket_reponse.Name = socketQuest.Name; socket_reponse.ErrCode = ESOCKET_ERROR.STATION_IS_NOT_READY; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = 0; return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse)); } else { socket_reponse.ErrCode = ESOCKET_ERROR.OK; socket_reponse.CmdNo = ESOCKET_CMD.END_OK; socket_reponse.Name = socketQuest.Name; socket_reponse.IdCard = StatRunList[statId].IdCard; socket_reponse.Model = StatRunList[statId].ModelName; socket_reponse.MesFlag = StatRunList[statId].MesFlag; socket_reponse.Ready = StatRunList[statId].SubNo; socket_reponse.UUT_NUM = StatRunList[statId].SlotNum; for (int i = 0; i < StatRunList[statId].SlotNum; i++) { socket_reponse.UUT[i].SerialNo = StatRunList[statId].SerialNos[i]; StatRunList[statId].Result[i] = socketQuest.UUT[i].Result; } StatRunList[statId].DoRun = ERUN.测试结束; } break; default: socket_reponse.CmdNo = ESOCKET_CMD.NG; socket_reponse.ErrCode = ESOCKET_ERROR.COMMAND_IS_NOT_DEFINE; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = 0; break; } return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse)); } catch (Exception) { socket_reponse.CmdNo = ESOCKET_CMD.NG; socket_reponse.ErrCode = ESOCKET_ERROR.SYSTEM_ERROR; socket_reponse.Ready = 0; socket_reponse.UUT_NUM = 0; return(CStuct <SOCKET_REQUEST> .StructToBytes(socket_reponse)); } finally { } }