/// <summary> /// 接受消息 /// </summary> /// <param name="csID"></param> /// <param name="args"></param> void manager_UDPMessageReceived(string csID, UDPMessageReceivedEventArgs args) { this.Invoke((Action) delegate() { if (args.Msg == Msg.Zmsg1) { textBox1.AppendText(args.Time.ToLongTimeString() + " " + args.RemoteIP + ":" + args.RemotePort + " 发送文本:\n" + Encoding.Unicode.GetString(args.Data) + "\n"); } }); }
void manager_UDPMessageReceived(string csID, UDPMessageReceivedEventArgs args) { try { if (args.Data.Length >= 64) { if (args.RemoteIP == strIp && args.Data[8] == 0x01 && args.Data[1] == 0x8C) { blRet = true; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
///// <summary> ///// 断开连接 ///// </summary> //public void DisconnectReader() //{ // if (manager != null) // { // manager.UDPMessageReceived -= new UDPMessageReceivedEventHandler(manager_UDPMessageReceived); // manager.Stop (); // } //} #endregion /// <summary> /// 接受消息 /// </summary> /// <param name="csID"></param> /// <param name="args"></param> void manager_UDPMessageReceived(string csID, UDPMessageReceivedEventArgs args) { try { if (args.Data.Length >= 12 && blRead) { byte b = args.Data[4]; int iLength = args.Data[5] + b * 256; byte bCheak = 0; for (int i = 0; i < iLength - 1; i++) { bCheak += args.Data[i]; } if (args.Data[0] == 0x02 && args.Data[1] == 0x03 && args.Data[2] == 0x04 && args.Data[3] == 0x05 && args.Data.Length == iLength && args.Data[iLength - 1] == bCheak) { byte bType = args.Data[8]; switch (bType) { case 0x41: //收到标签 #region 收到标签 //txt 接受 txtLog.TxtWriteByte("PowerReader.txt", "Rece", args.Data, true); byte bCount = args.Data[10]; for (b = 0; b < bCount; b++) { int iCount = b * 7; int iCode = args.Data[11 + iCount] * 65536 + args.Data[12 + iCount] * 256 + args.Data[13 + iCount]; string strCode = iCode.ToString(); // 标签的状态 包括电池电压等 byte bRfidState = args.Data[14 + iCount]; #region 结合 激活器 ID判断 进出库 //激活器ID int iId = args.Data[15 + iCount] * 256 + args.Data[16 + iCount]; string strActiveIdNow = iId.ToString(); for (int iToos = 0; iToos < MainControl.listTools.Count; iToos++) { if (MainControl.listTools[iToos].StrRfidCode == strCode) { string strId = MainControl.listTools[iToos].StrToolId; if ((bRfidState & 0x40) == 0x40) { //电压低 string strContent = "电子标签电压低,请及时更换电池"; string sTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //string strPeople = ""; commonCls.NewErrRecord(AlarmsType.标签欠压.ToString(), strId, strContent, ""); if (NewAlarmShowEvent != null) { NewAlarmShowEvent(new NewEventEventArgs(EventType.标签欠压, strId, strContent, "", "", DateTime.Now)); } } //盘库 if (frmToolMark.blMark) { bool blMark = false; foreach (string markId in listMarkId) { if (strActiveIdNow == markId) { blMark = true; break; } } if (blMark) { if (!MainControl.listMark.Contains(strCode)) { lock (MainControl.listMark) { MainControl.listMark.Add(strCode); } } } } else { bool blMark = false; foreach (string markId in listMarkId) { if (strActiveIdNow == markId) { blMark = true; break; } } if (blMark) { serialVoice.OnOffMark(OnOffMark.关闭); } //借出归还的时间 DateTime timeLast = MainControl.listTools[iToos].TimeBorrRet; TimeSpan timeSpan = DateTime.Now - timeLast; { if (timeSpan.TotalSeconds >= infoOfSystem.iBorrRetSpan) { #region 以一个时间段 判断工具借还 ToolsBorrRet toolActBorrRet = ToolsBorrRet.未知; if (MainControl.listTools[iToos].StrLastActId == strInId1 || MainControl.listTools[iToos].StrLastActId == strInId2 || MainControl.listTools[iToos].StrLastActId == strInId3 || MainControl.listTools[iToos].StrLastActId == strInId4) { if (strActiveIdNow == strOutId1 || strActiveIdNow == strOutId2 || strActiveIdNow == strOutId3 || strActiveIdNow == strOutId4) //借出 { toolActBorrRet = ToolsBorrRet.借出; } } else { if (MainControl.listTools[iToos].StrLastActId == strOutId1 || MainControl.listTools[iToos].StrLastActId == strOutId2 || MainControl.listTools[iToos].StrLastActId == strOutId3 || MainControl.listTools[iToos].StrLastActId == strOutId4) { if (strActiveIdNow == strInId1 || strActiveIdNow == strInId2 || strActiveIdNow == strInId3 || strActiveIdNow == strInId4) { toolActBorrRet = ToolsBorrRet.归还; } } } MainControl.listTools[iToos].StrLastActId = strActiveIdNow; string strTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string strType = MainControl.listTools[iToos].StrToolType; string strName = MainControl.listTools[iToos].StrToolName; #region 借出归还错误 即 在库归还 不在库借出 if (MainControl.listTools[iToos].ToolState == ToolsState.在库 && toolActBorrRet == ToolsBorrRet.归还) { string strContent = "工具在库归还"; commonCls.NewErrRecord(AlarmsType.借还错误.ToString(), strId, strContent, ""); if (NewAlarmShowEvent != null) { NewAlarmShowEvent(new NewEventEventArgs(EventType.借还错误, strId, strContent, "", "", DateTime.Now)); } } else if ((MainControl.listTools[iToos].ToolState == ToolsState.借出 || MainControl.listTools[iToos].ToolState == ToolsState.外借超时) && toolActBorrRet == ToolsBorrRet.借出) { string strContent = "工具不在库借出"; commonCls.NewErrRecord(AlarmsType.借还错误.ToString(), strId, strContent, ""); if (NewAlarmShowEvent != null) { NewAlarmShowEvent(new NewEventEventArgs(EventType.借还错误, strId, strContent, "", "", DateTime.Now)); } } #endregion if (MainControl.listTools[iToos].ToolState == ToolsState.在库 && toolActBorrRet == ToolsBorrRet.借出) { ToolRorrRetRecord(ToolsState.借出, iToos, strTime, strCode, strType, strName, strId); lock (MainControl.listTools) { MainControl.listTools[iToos].TimeBorrRet = DateTime.Now; MainControl.listTools[iToos].StrLastActId = ""; } } else { if ((MainControl.listTools[iToos].ToolState == ToolsState.借出 || MainControl.listTools[iToos].ToolState == ToolsState.外借超时) && toolActBorrRet == ToolsBorrRet.归还) { ToolRorrRetRecord(ToolsState.在库, iToos, strTime, strCode, strType, strName, strId); lock (MainControl.listTools) { MainControl.listTools[iToos].TimeBorrRet = DateTime.Now; MainControl.listTools[iToos].StrLastActId = ""; } } } #endregion } } } break; } } #endregion } #endregion break; case 0x42: //心跳 if (blOnLine == false) { blOnLine = true; string strContent = "半有源读写器连接恢复正常"; commonCls.NewErrRecord(AlarmsType.半有源读写器通信.ToString(), "", strContent, ""); if (NewAlarmShowEvent != null) { NewAlarmShowEvent(new NewEventEventArgs(EventType.半有源读写器通信, "", strContent, "", "", DateTime.Now)); } } //txt 接受 txtLog.TxtWriteByte("PowerReader.txt", "Heat Rece", args.Data, true); break; default: break; } //收到数据即认为在线 timeReceHeat = DateTime.Now; if (blOnLine == false) { blOnLine = true; string strContent = "半有源读写器连接恢复正常"; commonCls.NewErrRecord(AlarmsType.半有源读写器通信.ToString(), "", strContent, ""); if (NewAlarmShowEvent != null) { NewAlarmShowEvent(new NewEventEventArgs(EventType.半有源读写器通信, "", strContent, "", "", DateTime.Now)); } } } } } catch (Exception ex) { if (frmMain.blDebug) { MessageUtil.ShowTips(ex.Message); } } }