Пример #1
0
        /// <summary>
        /// Обновляет, опрашивает состояние и получает данные с терминала
        /// Тип терминала задается в конструкторе класса переменной _TermType
        /// </summary>

        public void Refresh(SPort cPort)
        {
            //IDevice cDevice = null;
            switch (_TermType)
            {
            case "IMP01":
            case "TEM05M":
                Tem05 cTem05 = new Tem05();
                //cDevice.Refresh(cPort);
                cTem05._TimeDelay = _TimeDelay;
                cTem05._TimeWait  = _TimeWait;
                cTem05._TermId    = _TermId;

                cTem05.Refresh(cPort);
                ResData = cTem05.ResData;
                break;

            case "SPT961":
                SPT961 cSPT961 = new SPT961();
                cSPT961._TimeDelay   = _TimeDelay;
                cSPT961._TimeWait    = _TimeWait;
                cSPT961._TermId      = _TermId;
                cSPT961.RequestParam = _RequestParam;
                cSPT961.Refresh(cPort);
                ResData = cSPT961.ResData;
                break;

            default:
                throw new ArgumentException("Терминала типа '" + _TermType + "' в системе не описано.");
                break;
            }
        }
Пример #2
0
        /// <summary>
        /// Возвращает строку данных
        /// </summary>
        /// <returns></returns>
        public String getDataString()
        {
            string sep      = ";";
            string sepArray = "";
            int    intStart;
            int    intStartHead;
            String strItem;
            String strData, currVal = "";
            /*Это заголовок*/
            String strDataHead;
            String retData, strStatus = "49";
            Tem05  cTem05  = new Tem05();
            SPT961 cSpt961 = new SPT961();
            int    Code_D1 = 0;
            int    Code_D2 = 0;
            string sResVal = "";

            String[] arrItem;
            Config   cConf = new Config();
            string   strTime;

            arrProtocolElement = cConf.getObjectProtocol(_TermType, _TermProtocolIndex);

            String strAdd = "";

            strTime = ResData.strTime;

            if (strTime == null)
            {
                strTime = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;
            }
            retData = _TermId.ToString() + sep + _RequestParam.ProtocolIndex + sep + strTime;

            if (_RequestParam.ReportType != null)
            {
                sepArray = "=";
                sep      = ",";
                retData  = "";
            }

            //Config.SysObjectProtocol Protokol;
            try
            {
                //strData = ResData.strData;
                strDataHead = ResData.strHead;


                String[] arrDataLine = ResData.strData.Split(sepArray.ToCharArray());

                foreach (string DataLine in arrDataLine)
                {
                    strData = DataLine;
                    strItem = "";
                    foreach (Config.SysObjectProtocolMap Protocol in arrProtocolElement)
                    {
                        /*Если данные*/
                        if (Protocol.Index > 0)
                        {
                            if (_TermType == "TEM05M")
                            {
                                intStart = Convert.ToInt16(Convert.ToInt32(Protocol.Pos, 16));
                                //intStart = Convert.ToInt16(Convert.ToInt32(intStart, 16)) * 2;
                                intStart = intStart * 2;


                                /*if (intStart > 1)
                                 *  intStart = intStart + 2;
                                 */
                                strItem = strData.Substring(intStart, Protocol.Len * 2);
                                strAdd  = strAdd + strItem;
                                sResVal = (GetHexToDouble(strItem).ToString());
                            }
                            else if (_TermType == "SPT961")
                            {
                                intStart = Convert.ToInt16(Protocol.Pos);
                                arrItem  = strData.Split(';');
                                strItem  = arrItem[intStart];

                                sResVal = Data_Hex_Asc(ref strItem);
                                //sResVal = cSpt961.getConvertHexToString(strItem);
                                //sResVal = (GetHexToDouble(strItem).ToString());
                            }
                            else if (_TermType == "TEM104")
                            {
                                intStart = Convert.ToInt16(Protocol.Pos);
                                arrItem  = strData.Split(';');
                                strItem  = arrItem[intStart];

                                sResVal = strItem;
                            }
                            else
                            {
                                sResVal = (GetHexToDouble(strItem).ToString());
                            }
                        }
                        else
                        {
                            intStart = Convert.ToInt16(Convert.ToInt32(Protocol.Pos, 16));
                            intStart = intStart * 2;

                            strItem = strDataHead.Substring(intStart, Protocol.Len * 2);
                            strAdd  = strAdd + strItem;

                            sResVal = (GetHexToDouble(strItem).ToString());
                        }

                        /* Значения кода для выставления запятой */
                        if (Protocol.Name == "DR1") // Первый канал
                        {
                            Code_D1 = Convert.ToInt16(sResVal);
                        }

                        if (Protocol.Name == "DR2") // Второй канал
                        {
                            Code_D2 = Convert.ToInt16(sResVal);
                        }

                        if (Protocol.Comma == 1)
                        {
                            sResVal = cTem05.GetStrComma(Code_D1, Protocol.Name, sResVal);
                        }
                        if (Protocol.Comma == 2)
                        {
                            sResVal = cTem05.GetStrComma(Code_D2, Protocol.Name, sResVal);
                        }

                        /*@TODO дописать в общем виде*/
                        /* ДАнные из заголовока*/
                        if (Protocol.Name == "DOR")
                        {
                            string binaryval = "00" + Convert.ToString(Convert.ToInt32(strItem, 16), 2);
                            sResVal = binaryval.Substring(Protocol.Comma + 1, 1);
                        }
                        /* ДАнные из заголовока*/
                        if (Protocol.Name == "WTR")
                        {
                            string binaryval = "00" + Convert.ToString(Convert.ToInt32(strItem, 16), 2);
                            sResVal = binaryval.Substring(Protocol.Comma + 1, 1);
                        }
                        currVal = currVal + sep + sResVal;
                    }
                    retData = retData + sep + strStatus + currVal + sepArray;
                    currVal = "";
                }
            }
            catch (Exception e)
            {
                strStatus = "4";
            }
            //return "1;1;21:21:08;49;0;0;0;1;11;0;0;4;41;.22955;1.995;16.5179;667.859;755.027;27.147;434.3;2732.36;97429.3;44310.2;0;84.44;28.86;13.21";
            return(retData);//= retData + sep + strStatus  + currVal;
        }
Пример #3
0
        /// <summary>
        /// Обновляет, опрашивает состояние и получает данные с терминала
        /// Тип терминала задается в конструкторе класса переменной _TermType
        /// </summary>
        public void Refresh(SPort cPort)
        {
            //IDevice cDevice = null;
            switch (_TermType)
            {
                case "IMP01":
                case "TEM05M":
                    Tem05 cTem05 = new Tem05();
                    //cDevice.Refresh(cPort);
                    cTem05._TimeDelay = _TimeDelay;
                    cTem05._TimeWait = _TimeWait;
                    cTem05._TermId = _TermId;

                    cTem05.Refresh(cPort);
                    ResData = cTem05.ResData;
                    break;
                case "SPT961":
                    SPT961 cSPT961 = new SPT961();
                    cSPT961._TimeDelay = _TimeDelay;
                    cSPT961._TimeWait = _TimeWait;
                    cSPT961._TermId = _TermId;
                    cSPT961.RequestParam = _RequestParam;
                    cSPT961.Refresh(cPort);
                    ResData = cSPT961.ResData;
                    break;
                case "TEM104":
                    TEM104 cTEM104 = new TEM104();
                    cTEM104._TimeDelay = _TimeDelay;
                    cTEM104._TimeWait = _TimeWait;
                    cTEM104._TermId = _TermId;
                    cTEM104.RequestParam = _RequestParam;
                    cTEM104.Refresh(cPort);
                    ResData = cTEM104.ResData;
                    break;
                default:
                    throw new ArgumentException("Терминала типа '" + _TermType+"' в системе не описано.");
                    break;
            }
        }
Пример #4
0
        /// <summary>
        /// Возвращает строку данных 
        /// </summary>
        /// <returns></returns>
        public String getDataString()
        {
            string sep = ";";
            string sepArray = "";
            int intStart;
            int intStartHead;
            String strItem;
            String strData, currVal = "";
            /*Это заголовок*/
            String strDataHead;
            String retData, strStatus = "49";
            Tem05 cTem05 = new Tem05();
            SPT961 cSpt961 = new SPT961();
            int Code_D1 = 0;
            int Code_D2 = 0;
            string sResVal = "";
            String[] arrItem;
            Config cConf = new Config();
            string strTime;

            arrProtocolElement = cConf.getObjectProtocol(_TermType, _TermProtocolIndex);

            String strAdd = "";
            strTime = ResData.strTime;

            if (strTime == null)
            {
                strTime = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;
            }
            retData = _TermId.ToString() + sep + _RequestParam.ProtocolIndex + sep + strTime;

            if (_RequestParam.ReportType != null)
            {
                sepArray = "=";
                sep = ",";
                retData = "";
            }

            //Config.SysObjectProtocol Protokol;
            try
            {

                //strData = ResData.strData;
                strDataHead = ResData.strHead;

                String[] arrDataLine = ResData.strData.Split(sepArray.ToCharArray());

                foreach (string DataLine in arrDataLine)
                {
                    strData = DataLine;
                    strItem = "";
                    foreach (Config.SysObjectProtocolMap Protocol in arrProtocolElement)
                    {
                        /*Если данные*/
                        if (Protocol.Index > 0)
                        {
                            if (_TermType == "TEM05M")
                            {
                                intStart = Convert.ToInt16(Convert.ToInt32(Protocol.Pos, 16));
                                //intStart = Convert.ToInt16(Convert.ToInt32(intStart, 16)) * 2;
                                intStart = intStart * 2;

                                /*if (intStart > 1)
                                    intStart = intStart + 2;
                                */
                                strItem = strData.Substring(intStart, Protocol.Len * 2);
                                strAdd = strAdd + strItem;
                                sResVal = (GetHexToDouble(strItem).ToString());
                            }
                            else if (_TermType == "SPT961")
                            {
                                intStart = Convert.ToInt16(Protocol.Pos);
                                arrItem = strData.Split(';');
                                strItem = arrItem[intStart];

                                sResVal = Data_Hex_Asc(ref strItem);
                                //sResVal = cSpt961.getConvertHexToString(strItem);
                                //sResVal = (GetHexToDouble(strItem).ToString());
                            }
                            else if (_TermType == "TEM104")
                            {
                                intStart = Convert.ToInt16(Protocol.Pos);
                                arrItem = strData.Split(';');
                                strItem = arrItem[intStart];

                                sResVal = strItem;
                            }
                            else
                            {
                                sResVal = (GetHexToDouble(strItem).ToString());
                            }
                        }
                        else
                        {
                            intStart = Convert.ToInt16(Convert.ToInt32(Protocol.Pos, 16));
                            intStart = intStart * 2;

                            strItem = strDataHead.Substring(intStart, Protocol.Len * 2);
                            strAdd = strAdd + strItem;

                            sResVal = (GetHexToDouble(strItem).ToString());
                        }

                        /* Значения кода для выставления запятой */
                        if (Protocol.Name == "DR1") // Первый канал
                        {
                            Code_D1 = Convert.ToInt16(sResVal);

                        }

                        if (Protocol.Name == "DR2") // Второй канал
                        {
                            Code_D2 = Convert.ToInt16(sResVal);

                        }

                        if (Protocol.Comma == 1)
                        {
                            sResVal = cTem05.GetStrComma(Code_D1, Protocol.Name, sResVal);
                        }
                        if (Protocol.Comma == 2)
                        {
                            sResVal = cTem05.GetStrComma(Code_D2, Protocol.Name, sResVal);
                        }

                        /*@TODO дописать в общем виде*/
                        /* ДАнные из заголовока*/
                        if (Protocol.Name == "DOR")
                        {
                            string binaryval = "00" + Convert.ToString(Convert.ToInt32(strItem, 16), 2);
                            sResVal = binaryval.Substring(Protocol.Comma + 1, 1);
                        }
                        /* ДАнные из заголовока*/
                        if (Protocol.Name == "WTR")
                        {
                            string binaryval = "00" + Convert.ToString(Convert.ToInt32(strItem, 16), 2);
                            sResVal = binaryval.Substring(Protocol.Comma + 1, 1);
                        }
                        currVal = currVal + sep + sResVal;
                    }
                    retData = retData + sep + strStatus + currVal + sepArray;
                    currVal = "";
                }
            }
            catch(Exception e)
            {
                strStatus = "4";
            }
            //return "1;1;21:21:08;49;0;0;0;1;11;0;0;4;41;.22955;1.995;16.5179;667.859;755.027;27.147;434.3;2732.36;97429.3;44310.2;0;84.44;28.86;13.21";
            return retData ;//= retData + sep + strStatus  + currVal;
        }