public void DBEditor(CRequestAction RequestParam) { try { if (RequestParam.lstTableDto == null) { return; } // 判断是否插入或者更新修改,并返回操作枚举类型值 foreach (struTableDto obj in RequestParam.lstTableDto) { int accessType = obj.accessType; if (accessType == 1) {// 插入数据表操作 insertTableDto(obj.tableDto); } else if (accessType == 2) { // 更新修改数据表操作 updateTableDto(obj.tableDto); } else if (accessType == 3) { // 删除数据表操作 deleteTableDto(obj.tableDto); } } } catch (Exception ex) { CLOGException.Trace("AbstractActionLib.CDBEditor.DBEditor 异常", CBaseMethods.MyBase.GetExceptionInfo(ex)); } }
/// <summary> /// 播放语音 /// </summary> public void VoicePlayer(object objRequestParam) { try { CRequestAction RequestParam = (CRequestAction)objRequestParam; m_dicSound = RequestParam.DicSound; int nPLCID = RequestParam.struHallEquip.nWareHouseID; int nHallID = RequestParam.struHallEquip.nHallID; if (!m_dicSound.ContainsKey(nHallID)) { CLOGException.Trace("AbstractActionLib.CVoicePlayer.VoicePlayer ", string.Format("无效 PLC ID = {0},或无效 Hall ID = {1}", nPLCID, nHallID)); return; } CSound player = new CSound(); player = m_dicSound[nHallID]; if (typeof(CSoundDirectX) == player.GetType()) { // struHallEquip增加语音设备号参数(读取配置文件) ((CSoundDirectX)player).SetParams(RequestParam.struHallEquip.nWareHouseID, RequestParam.struHallEquip.nHallID, RequestParam.struHallEquip.strAudioDeviceDesc); } player.ReadSound(m_strPathAuto + RequestParam.soundName); player = null; } catch (Exception ex) { CLOGException.Trace("AbstractActionLib.CVoicePlayer.VoicePlayer 异常", CBaseMethods.MyBase.GetExceptionInfo(ex)); } }
/// <summary> /// 重载执行工作 /// </summary> /// <param name="RequestParam"></param> public override void PerformAction(CRequestAction RequestParam) { try { ThreadPool.QueueUserWorkItem(new WaitCallback(m_voicePlayer.VoicePlayer), RequestParam); } catch (System.Exception ex) { CLOGException.Trace("AbstractActionLib.CSoundAction.PerformAction 异常", CBaseMethods.MyBase.GetExceptionInfo(ex)); } }
/// <summary> /// 重载执行工作 /// </summary> /// <param name="RequestParam"></param> public override void PerformAction(CRequestAction RequestParam) { try { m_dbHandler.DBEditor(RequestParam); } catch (System.Exception ex) { CLOGException.Trace("AbstractActionLib.CModifyDBAction.PerformAction 异常", CBaseMethods.MyBase.GetExceptionInfo(ex)); } }
/// <summary> /// 报文下发 /// </summary> /// <param name="objRequestParam"></param> public void TelegramSender(object objRequestParam) { try { CRequestAction RequestParam = (CRequestAction)objRequestParam; m_PLCServer = RequestParam.PLCServer; // 发送报文 foreach (struTelegram struSendTelegram in RequestParam.lstTelegram) { CWException.WriteLog(string.Format("Telegram ({0},{1}) will send ,devicecode:{2},iccode:{3}", struSendTelegram.nTelegramType, struSendTelegram.nSubTypeEMS, struSendTelegram.nEquipID, struSendTelegram.strICCardID), 4); Int16[] objTelegram; m_telegramParser.PackTelegram(out objTelegram, struSendTelegram); int warehouse = struSendTelegram.nEMSSendFlag; int equipID = struSendTelegram.nEquipID; //存在该位(nDeviceByteBit),表示在下发时要判断设备是否允许下发报文否,如果不存在该位,则可以直接下发当前报文 if (0 != struSendTelegram.nDeviceByteBit) { #region CDeviceStatusDto smg = CCommonMethods.myMethods.GetDeviceStatus(warehouse, equipID); #region if (smg == null) { //如果不存在设备号,则表示异常,先加入队列 CWException.WriteLog(string.Format("报文({0},{1})没有设备号,其卡号:{2}", struSendTelegram.nTelegramType, struSendTelegram.nSubTypeEMS, struSendTelegram.strICCardID), 4); //加入队列 InsertWorkQueue(objTelegram, struSendTelegram); continue; } #endregion if (smg.devicetype == (int)EnmSMGType.Hall) { #region 允许下发或加入队列 if (smg.devicemode == (int)EnmModel.Automatic && smg.isable == 1 && smg.isavailable == 1 && smg.tasktype == (int)EnmTaskType.Init) { smg.tasktype = struSendTelegram.nMasterType; smg.iccode = struSendTelegram.strICCardID; smg.prevnode = null; smg.currentnode = null; smg.scrloc = struSendTelegram.strSrcLocAddr; smg.desccloc = struSendTelegram.strDestLocAddr; new CDBEditor().updateTableDto(smg); //下发报文 DealSendTelegram(objTelegram, warehouse); } else { //加入队列 InsertWorkQueue(objTelegram, struSendTelegram); } #endregion } else if (smg.devicetype == (int)EnmSMGType.ETV) { #region 将(14,1)加入队列 if (struSendTelegram.nTelegramType == 14 && struSendTelegram.nSubTypeEMS == 1) { CWException.WriteLog(string.Format("warehouse:{0}, devicecode:{1} has telegram (14,1) add workqueue! ", smg.warehouse, smg.devicecode), 4); InsertWorkQueue(objTelegram, struSendTelegram); continue; } #endregion #region 判断避让, 执行(13,1)(11,1) if (smg.devicemode == (int)EnmModel.Automatic && smg.isable == 1 && smg.isavailable == 1 && smg.tasktype == (int)EnmTaskType.Init) { string toAddrss = ""; if (struSendTelegram.nTelegramType == 11 && struSendTelegram.nSubTypeEMS == 1) { toAddrss = struSendTelegram.strDestLocAddr; } else { toAddrss = struSendTelegram.strSrcLocAddr; } if (this.DealAvoid(smg, toAddrss, struSendTelegram.strICCardID)) { //允许下发,绑定设备,下发报文 smg.tasktype = struSendTelegram.nMasterType; smg.iccode = struSendTelegram.strICCardID; smg.prevnode = null; smg.currentnode = null; if (struSendTelegram.nMasterType != (int)EnmTaskType.MoveEquipTask) { smg.currentnode = (int)EnmFlowNodeDescp.Load; } smg.scrloc = struSendTelegram.strSrcLocAddr; smg.desccloc = struSendTelegram.strDestLocAddr; new CDBEditor().updateTableDto(smg); //下发报文 DealSendTelegram(objTelegram, warehouse); continue; } } //加入队列 InsertWorkQueue(objTelegram, struSendTelegram); #endregion } continue; #endregion } // 发送报文 DealSendTelegram(objTelegram, warehouse); } } catch (Exception ex) { CLOGException.Trace("AbstractActionLib.CTelegramSender.TelegramSender 异常", CBaseMethods.MyBase.GetExceptionInfo(ex)); } }
/// <summary> /// 执行工作 /// </summary> /// <param name="RequestParam"></param> public abstract void PerformAction(CRequestAction RequestParam);