public void UpdateAllStatus() { SqlDataReader reader = null; if (db_Base.GetDataGroup("Select uid from [FilesDB].[dbo].[T_PLAT_ApInfo]", ref reader)) { if (reader.HasRows) { int c1 = reader.GetOrdinal("uid"); reader.Read(); reader.Read(); reader.Read(); while (reader.Read()) { string EmpName = reader.GetString(0); if (EmpName == "apserver" || EmpName == "manager server") { continue; } if (EmpName.Length < 20) { return; } udpsocket.Send(apEncapsulator.GetApStatus(Encoding.ASCII.GetBytes(EmpName))); } reader.Close(); } } //Log.write("Get all AP status"); if (db_Base.GetDataGroup("Select ai.uid,ri.uid from dbo.T_PLAT_ReaderConfig as rc left join dbo.T_PLAT_ReaderInfo as ri on ri.pk_id=rc.fk_reader left join dbo.T_PLAT_ApInfo as ai on ai.pk_id=rc.fk_ap", ref reader)) { if (reader.HasRows) { int c1 = reader.GetOrdinal("uid"); //int c2 = reader.GetOrdinal("uid_1"); while (reader.Read()) { string EmpName1 = reader.GetString(0); string EmpName2 = reader.GetString(1); udpsocket.Send(apEncapsulator.Response_Terminal_StatusUpdate(Encoding.ASCII.GetBytes(EmpName1), Encoding.ASCII.GetBytes(EmpName2))); break; } reader.Close(); } } // Log.write("Get all Terminal status"); }
//工作-处理终端数据 private void Job_Terminal_data_upload(APParser apPaser) { int size = 0; if (!apPaser.GetParam_Terminal_data_upload(ref byte_ap_uid, ref byte_terminal_uid, ref byte_terminal_data, ref size)) { return; } TerminalHandleJob(size); udpSocket.Send(apEncapsulator.Response_Terminal_DataUpload(byte_ap_uid)); string tmp1 = System.Text.Encoding.Default.GetString(byte_ap_uid); database.CmdLog("05020600", tmp1, apPaser.GetParam_Origin_Hex()); tmp1 = null; }
//工作-处理AP校验 private void Job_AP_Validate(APParser apPaser) { int Count = 0; apPaser.GetParam_Validate_Order(ref byte_ap_uid, ref Count); string tmp = System.Text.Encoding.Default.GetString(byte_ap_uid); if (database.AP_Validate(tmp, Count.ToString())) { udpSocket.Send(apEncapsulator.Response_AP_Validate(byte_ap_uid, 0x31)); } else { udpSocket.Send(apEncapsulator.Response_AP_Validate(byte_ap_uid, 0x32)); } database.CmdLog("05010100", tmp, apPaser.GetParam_Origin_Hex()); tmp = null; }
private void DBHandleJob() { try { if (dbOrderList.Count == 0 && dbSentList.Count == 0) { Log.write("DBMsgHandler-WaitOne"); resumeEvent.Reset(); resumeEvent.WaitOne(); } lock (dbOrderList) { if (dbOrderList.Count != 0) { APParser apParser = dbOrderList[0]; udpsocket.Send(apParser.GetParam_Origin_byte()); dbOrderList.RemoveAt(0); dbSentList.Add(apParser); Log.write("DBMsgHandler---Send a command", 0); } //处理发送数据 } //锁存dbOrderList int dbSent_count = dbSentList.Count; if (dbSent_count == 0) { return; }//已发送命令 lock (dbResultList) { int dbResult_count = dbResultList.Count; if (dbResult_count == 0) { Thread.Sleep(50); return; }//有处理结果返回 for (int i = dbResult_count - 1; i >= 0; i--) { dbResult_count = dbResultList.Count; if (dbResult_count == 0) { break; }//结果为0,结束 bool isReponsed = false; for (int j = dbSent_count - 1; j >= 0; j--) { APParser SentParser = dbSentList[j]; APParser ResultParser = dbResultList[i]; int iRet = APParser.RelatingMsg(SentParser, ResultParser); if (iRet == 1) { database.DB_Set_Cmd(SentParser.GetID(), ResultParser.GetParam_Result()); //Log.write("DBMsgHandler-Get relative message:sent JobDone"); Log.write("DBMsgHandler---matching a result:" + SentParser.GetParam_Origin_Hex() + "\r\n" + ResultParser.GetParam_Origin_Hex() + "\r\n", 2); dbSentList.RemoveAt(j); dbResultList.RemoveAt(i); SentParser.Dispose(); ResultParser.Dispose(); isReponsed = true; break;//match and break the circle } else if (iRet == 0) { database.DB_Update_Cmd(SentParser.GetID(), ResultParser.GetParam_Cmd_SendOrNot()); Log.write("DBMsgHandler---matching a response:" + SentParser.GetParam_Origin_Hex() + "\r\n" + ResultParser.GetParam_Origin_Hex() + "\r\n", 2); isReponsed = true; dbResultList.RemoveAt(i); ResultParser.Dispose(); break;//match and break the circle } else { } } if (!isReponsed) { APParser aa = dbResultList[i]; aa.Dispose(); dbResultList.RemoveAt(i); Log.write("DBMsgHandler---inequal result", 0); } } //遍历匹配 } //锁存 } catch (SqlException ex) { Log.write("DBMsgHandler SqlException Error:" + ex.Message, 0); SqlExceptionHelper.Deal(ex); } catch (Exception ex) { Log.write("DBMsgHandler-ThreadError:" + ex.Message, 0); dbOrderList.Clear(); dbResultList.Clear(); Log.write("DBMsgHandler-Clear All", 0); } }