Beispiel #1
0
        //通知核心将解析消息加入解析队列
        public void Notify_decode(Message4Kernel msg)
        {
            lock (_sync_decode)
            {
                if (_enabled)
                {
                    _queue_decode.Enqueue(msg);
                    log.Debug("解析消息添加到队列:" + msg.filePath);

                    /**
                     * //如果当前队列和正在处理的消息中不包含msg,则添加msg
                     * if (cureentMessage != null)
                     * {
                     *  if (cureentMessage.fileName != msg.fileName && !isInQueue(msg))
                     *  {
                     *      _queue_decode.Enqueue(msg);
                     *      log.Debug("解析消息添加到队列:" + msg.filePath);
                     *  }
                     * }
                     * else
                     * {
                     *  if(!isInQueue(msg))
                     *  {
                     *  _queue_decode.Enqueue(msg);
                     *  log.Debug("解析消息添加到队列:" + msg.filePath);
                     *  }
                     * }**/
                }
            }
        }
Beispiel #2
0
 private Boolean isInQueue(Message4Kernel msg)
 {
     foreach (Message4Kernel message4Kernel in _queue_decode)
     {
         if (msg.fileName == message4Kernel.fileName)
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #3
0
        public void Decode(Message4Kernel msg)
        {
            switch (msg.fileType)
            {
            case "*.csv":

                break;

            case "*.mdb":
            {
                string dbServer = Path.Combine(msg.filePath, msg.fileName);
                if (ini.IniReadValue("配置", "ChooseInstrument").Equals("W110"))
                {
                    log.Debug(msg.filePath + ":按照W110设备设置进行解析");
                    msg.dbUser = "******";
                    msg.dbPwd  = "";
                    W110Decode w110Decode = new W110Decode();
                    w110Decode.DataDecode(msg.id, msg.fileType, dbServer, msg.dbUser, msg.dbPwd);
                }
                if (ini.IniReadValue("配置", "ChooseInstrument").Equals("W119"))
                {
                    msg.dbUser = "******";
                    msg.dbPwd  = "88888888";
                    W119Decode w119Decode = new W119Decode();
                    w119Decode.DataDecode(msg.id, msg.fileType, dbServer, msg.dbUser, msg.dbPwd);
                }
                if (ini.IniReadValue("配置", "ChooseInstrument").Equals("W120"))
                {
                    msg.dbUser = "******";
                    msg.dbPwd  = "";
                    W120Decode w120Decode = new W120Decode();
                    w120Decode.DataDecode(msg.id, msg.fileType, dbServer, msg.dbUser, msg.dbPwd);
                }
                break;
            }
            }
        }
Beispiel #4
0
        public Kernel(String serverUrl)
        {
            _serverUrl     = serverUrl;
            _enabled       = true;
            _exited_decode = new ManualResetEvent(initialState: false);
            _queue_decode  = new Queue <Message4Kernel>();
            _sync_decode   = ((ICollection)_queue_decode).SyncRoot;
            //解析线程
            ThreadPool.QueueUserWorkItem(delegate
            {
                while (_enabled || Count_decode > 0)
                {
                    Message4Kernel decodeMessage = dequeue_decode();
                    cureentMessage = decodeMessage;
                    if (decodeMessage != null)
                    {
                        log.Info("开始处理文件: " + decodeMessage.fileName);
                        try
                        {
                            DecodeFactory.Instance.Decode(decodeMessage);
                        }
                        catch (Exception exception)
                        {
                            log.Error("Decode ", exception);
                        }
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }

                _exited_decode.Set();
            });
            _exited_send = new ManualResetEvent(initialState: false);
            _queue_send  = new Queue <NSampleModel>();
            _sync_send   = ((ICollection)_queue_send).SyncRoot;
            //发送线程
            ThreadPool.QueueUserWorkItem(delegate
            {
                while (_enabled || Count_send > 0)
                {
                    NSampleModel sendMessage = dequeue_send();
                    if (sendMessage != null && sendMessage.sampleModel != null)
                    {
                        log.Info("开始发送样本号: " + sendMessage.sampleModel.sampleNo);
                        try
                        {
                            DecodeFactory.Instance.SendToServer(sendMessage);
                        }
                        catch (Exception exception)
                        {
                            log.Error("Send ", exception);
                        }
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }
                _exited_send.Set();
            });
        }