Beispiel #1
0
        void comm_DataReceived_Kim(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                //log.Info("开始接收数据");
                byte[]             RS232DataBuff = GetData(comm);
                SerialHandleObject handle        = new SerialHandleObject();
                if (RS232Received != null)
                {
                    RS232Received(handle, RS232DataBuff);
                    if (handle.handled)
                    {
                        return;
                    }
                }
                //Encoding utf8 = Encoding.GetEncoding(65001);
                //Encoding gb2312 = Encoding.GetEncoding("gb2312");
                string recv = DefaultEncoding.GetString(RS232DataBuff);
                //LogRevMsg.LogText("单次接收", recv);
                //log.Info("单次接收" + "\r" + recv);

                if (!IsASTM)
                {
                    currStr += recv;

                    if (CheckEndStr(currStr, ETXStr))
                    {
                        foreach (byte b in RS232DataBuff)
                        {
                            handleComand(b);
                        }
                        LogRevMsg.LogText("接收", currStr);
                        Lib.LogManager.Logger.LogInfo("接收" + "\r" + currStr);
                        //MonitorManager.Instance.SendCommand(
                        //    RemoteCommand.CMD_LOG, new string[] { LocalConfig.Instance.ItrID, currStr }); //kim 发送至监控服务器
                        if (false)
                        {
                            LogRevMsg.GetFile(currStr);
                        }
                        else
                        {
                            LogRevMsg.GetBufferLog(currStr);
                        }
                        currStr = string.Empty;
                    }
                }
                else
                {
                    try
                    {
                        if (RS232DataBuff.Length == 2 && RS232DataBuff[0] == ASTMCommon.ACK_6 && RS232DataBuff[1] == ASTMCommon.EOT_4)
                        {
                            byte[] buff = new byte[1];
                            buff[0]       = RS232DataBuff[0];
                            RS232DataBuff = buff;
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error(ex.Message);
                    }
                    foreach (byte b in RS232DataBuff)
                    {
                        if (IsASTM)
                        {
                            HandleAstmCommand(b);
                        }
                        char RecChar = Convert.ToChar(b);
                        currStr += RecChar;
                        if (CheckEndStr(currStr, ETXStr))
                        {
                            LogRevMsg.LogText("接收", currStr);
                            Lib.LogManager.Logger.LogInfo("接收" + "\r" + currStr);
                            //MonitorManager.Instance.SendCommand(
                            //    RemoteCommand.CMD_LOG, new string[] { LocalConfig.Instance.ItrID, currStr }); //kim 发送至监控服务器
                            LogRevMsg.GetBufferLog(currStr);
                            currStr = string.Empty;
                        }
                        //if (CheckEndStr(SingleStr, ETXStr) || SingleStr.Contains(ASTMCommon.cENQ_5.ToString()))
                        //{
                        //    LogRevMsg.LogText("接收", SingleStr);
                        //    log.Info("接收" + "\r" + SingleStr);
                        //    //MonitorManager.Instance.SendCommand(
                        //    //    RemoteCommand.CMD_LOG, new string[] { LocalConfig.Instance.ItrID, currStr }); //kim 发送至监控服务器
                        //    if (!SingleStr.Contains(ASTMCommon.cEOT_4.ToString()))
                        //    {
                        //        SingleStr = string.Empty;
                        //    }
                        //}
                        //if (SingleStr.Contains(ASTMCommon.cEOT_4.ToString()))
                        //{
                        //    if (ETXStr != ASTMCommon.cEOT_4.ToString())
                        //    {
                        //        LogRevMsg.LogText("接收", SingleStr);
                        //        log.Info("接收" + "\r" + SingleStr);
                        //    }
                        //    //MonitorManager.Instance.SendCommand(
                        //    //    RemoteCommand.CMD_LOG, new string[] { LocalConfig.Instance.ItrID, currStr }); //kim 发送至监控服务器
                        //    LogRevMsg.GetBufferLog(currStr);
                        //    currStr = string.Empty;
                        //    SingleStr = string.Empty;
                        //    break;
                        //}
                    }
                }
                if (IsNeedAck)
                {
                    if (RS232DataBuff.Length == 1)
                    {
                        if (RS232DataBuff[0] == ASTMCommon.NAK_21)
                        {
                            return;
                        }
                        if (RS232DataBuff[0] == ASTMCommon.ACK_6)
                        {
                            return;
                        }
                    }
                    SendACK();
                }
            }
            catch (Exception ex)
            {
            }
        }