Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        /// <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));
            }
        }
Ejemplo n.º 3
0
 /// <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));
     }
 }
Ejemplo n.º 4
0
 /// <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));
     }
 }
Ejemplo n.º 5
0
        /// <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));
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 执行工作
 /// </summary>
 /// <param name="RequestParam"></param>
 public abstract void PerformAction(CRequestAction RequestParam);