Beispiel #1
0
 /// <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");
         }
     });
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
        ///// <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);
                }
            }
        }