Пример #1
0
 public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
     try
     {
         using (SqlCommand cmd = new SqlCommand(_rtcmd, _con))
         using (SqlDataAdapter dad = new SqlDataAdapter(cmd))
         using (DataTable dtbl = new DataTable())
         {
             dad.Fill(dtbl);
             using (DataView dvw = new DataView(dtbl, "", "T_TAG", DataViewRowState.CurrentRows))
             {
                 for (int i = 0; i < nNum; ++i)
                 {
                     int idx = dvw.Find(nrst[i].srcId);
                     if (-1 == idx) continue;
                     nrst[i].val = Convert.ToSingle(dvw[idx][1]);
                     nrst[i].dtm = Convert.ToDateTime(dvw[idx][2]);
                 }
                 for (int i = 0; i < sNum; ++i)
                 {
                     int idx = dvw.Find(srst[i].srcId);
                     if (-1 == idx) continue;
                     srst[i].val = dvw[idx][1].ToString();
                     srst[i].dtm = Convert.ToDateTime(dvw[idx][2]);
                 }
             }
         }
         return true;
     }
     catch (Exception ex)
     {
         err.WrtMsg(ex.Message);
         return false;
     }
 }
Пример #2
0
        public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            for (int i = 0; i < nNum; ++i)
            {
                float rval = 0;
                int istat = 0, timedate = 0;

                int ret = pisn_getsnapshot(numID[i], out rval, out istat, out timedate);
                if (0 == ret)
                {
                    switch (numT[i])
                    {
                        case 'R':
                            nrst[i].val = rval;
                            break;
                        case 'I':
                        case 'D':
                            nrst[i].val = (float)istat;
                            break;
                        default:
                            err.WrtMsg(string.Format("测点{0}类型不匹配.", nrst[i].srcId));
                            break;
                    }
                    nrst[i].dtm = GetSysTime(timedate);
                }
            }
            return true;
        }
Пример #3
0
        public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            numID = new int[nNum];
            strID = new int[sNum];
            numT = new char[nNum];
            strT = new char[sNum];

            int i = 0;
            foreach (numInf nr in nrst)
            {
                pipt_findpoint(nr.srcId, ref numID[i]);
                if (-5 != numID[i]) pipt_pointtype(numID[i], ref numT[i]);
                else err.WrtMsg(string.Format("测点{0}不存在.", nr.srcId));
                ++i;
            }

            i = 0;
            foreach (strInf sr in srst)
            {
                pipt_findpoint(sr.srcId, ref strID[i]);
                if (-5 != strID[i]) pipt_pointtype(strID[i], ref strT[i]);
                else err.WrtMsg(string.Format("测点{0}不存在.", sr.srcId));
                ++i;
            }
        }
Пример #4
0
        public void SetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            string[] pt = new string[nNum];
            DateTime[] dt = new DateTime[nNum];
            uint[] stat = new uint[nNum];
            float[] val = new float[nNum];
            int i = 0;
            foreach (numInf nr in nrst)
            {
                pt[i] = nr.dstId;
                dt[i] = nr.dtm;
                stat[i] = 0;
                val[i] = nr.val;
                ++i;
            }
            HSApi.CS_UpdateValueByName(RTDBApi.HSApi.ConnStr + "@" + RTDBApi.HSApi.CurrentInstance, pt, dt, stat, val, 0);

            pt = new string[sNum];
            dt = new DateTime[sNum];
            stat = new uint[sNum];
            string[] sval = new string[sNum];
            i = 0;
            foreach (strInf sr in srst)
            {
                pt[i] = sr.dstId;
                dt[i] = sr.dtm;
                stat[i] = 0;
                sval[i] = sr.val;
                ++i;
            }
            HSApi.CS_UpdateValueByName_S(pt, dt, stat, sval);
        }
Пример #5
0
        public void SetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            byte[] pack = rtVal.PutData(nNum, nrst, sNum, srst);

            try
            {stSend.Send(pack);}
            catch (Exception)
            {}
        }
Пример #6
0
        public void SetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            SqlCommand cmd = new SqlCommand(string.Format("TRUNCATE TABLE {0}", _tblName), _con);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                err.WrtMsg(ex.Message);
                _connected = false;
            }

            using (DataTable dtbl = new DataTable())
            {
                dtbl.Columns.Add("tag", typeof(string));
                dtbl.Columns.Add("val", typeof(string));
                dtbl.Columns.Add("dtm", typeof(DateTime));
                DataRow drow;
                foreach (numInf nr in nrst)
                {
                    drow = dtbl.NewRow();
                    drow["tag"] = nr.dstId;
                    drow["val"] = nr.val.ToString();
                    drow["dtm"] = nr.dtm;
                    dtbl.Rows.Add(drow);
                }

                foreach (strInf sr in srst)
                {
                    drow = dtbl.NewRow();
                    drow["tag"] = sr.dstId;
                    drow["val"] = sr.val;
                    drow["dtm"] = sr.dtm;
                    dtbl.Rows.Add(drow);
                }

                using (SqlBulkCopy bcp = new SqlBulkCopy(_con))
                {
                    bcp.DestinationTableName = _tblName;
                    bcp.ColumnMappings.Add("tag", _tagField);
                    bcp.ColumnMappings.Add("val", _valField);
                    bcp.ColumnMappings.Add("dtm", _dtmField);
                    try
                    {
                        bcp.WriteToServer(dtbl);
                    }
                    catch (Exception ex)
                    {
                        err.WrtMsg(ex.Message);
                        _connected = false;
                    }
                }
            }
        }
Пример #7
0
        public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            try
            {
                using (SqlCommand cmd = new SqlCommand("SELECT a.TAG,a.VALUE,a.TIME FROM REALVALUE a INNER JOIN TAGCONFIG b ON b.TYPE=0 AND a.TAG=b.TAG ORDER BY b.ID_KEY", _con))
                using (SqlDataAdapter dad = new SqlDataAdapter(cmd))
                using (DataTable dtbl = new DataTable())
                {
                    dad.Fill(dtbl);
                    using (DataView dvw = new DataView(dtbl, "", "TAG", DataViewRowState.CurrentRows))
                    {
                        for (int i = 0; i < nrst.Length; ++i)
                        {
                            int idx = dvw.Find(nrst[i].srcId);
                            if (-1 != idx)
                            {
                                nrst[i].val = Convert.ToSingle(dvw[idx][1]);
                                nrst[i].dtm = Convert.ToDateTime(dvw[idx][2]);
                            }
                        }
                    }
                }

                using (SqlCommand cmd = new SqlCommand("SELECT a.TAG,a.VALUE,a.TIME FROM REALVALUE a INNER JOIN TAGCONFIG b ON b.TYPE=1 AND a.TAG=b.TAG ORDER BY b.ID_KEY", _con))
                using (SqlDataAdapter dad = new SqlDataAdapter(cmd))
                using (DataTable dtbl = new DataTable())
                {
                    dad.Fill(dtbl);
                    using (DataView dvw = new DataView(dtbl, "", "TAG", DataViewRowState.CurrentRows))
                    {
                        for (int i = 0; i < srst.Length; ++i)
                        {
                            int idx = dvw.Find(srst[i].srcId);
                            if (-1 != idx)
                            {
                                srst[i].val = dvw[idx][1].ToString();
                                srst[i].dtm = Convert.ToDateTime(dvw[idx][2]);
                            }
                        }
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                DisConnect();
                Connect();
                err.WrtMsg(ex.Message);
                return false;
            }
        }
Пример #8
0
        public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            for (int i = 0; i < nNum; ++i)
            {
                double dval = 0;
                int time = 0;
                ushort stat = 0;

                int ret = RealTime.DNAGetRTShort(nrst[i].srcId, out dval, out time,out stat);
                if (0 == ret)
                {
                    nrst[i].val = (float)dval;
                    nrst[i].dtm = Utility.GetDateTime(time);
                }
            }
            return true;
        }
Пример #9
0
        public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            SqlCommand cmd;

            cmd = new SqlCommand(string.Format("SELECT COUNT(*) FROM TAGCONFIG WHERE INTERFACE={0} AND TYPE=0 AND SENDFLAG=1", _interface), _con);
            rtNnum = (int)cmd.ExecuteScalar();
            rtNid = new int[rtNnum];

            cmd = new SqlCommand(string.Format("SELECT COUNT(*) FROM TAGCONFIG WHERE INTERFACE={0} AND TYPE=1 AND SENDFLAG=1", _interface), _con);
            rtSnum = (int)cmd.ExecuteScalar();
            rtSid = new int[rtSnum];

            cmd = new SqlCommand(string.Format("SELECT ID_KEY,TAG,DSC,SENDFLAG FROM TAGCONFIG WHERE INTERFACE={0} AND TYPE=0 ORDER BY ID_KEY", _interface), _con);
            using (SqlDataReader dtr = cmd.ExecuteReader())
            {
                int iN = 0;
                int i = 0;
                while (dtr.Read())
                {
                    nrst[i].sn = i;
                    nrst[i].srcId = dtr.GetString(1);
                    nrst[i].dstId = dtr.GetString(1);
                    nrst[i].desc = dtr.GetString(2);
                    if (1 == dtr.GetByte(3)) rtNid[iN++] = i;
                    ++i;
                }
            }

            cmd = new SqlCommand(string.Format("SELECT ID_KEY,TAG,DSC,SENDFLAG FROM TAGCONFIG WHERE INTERFACE={0} AND TYPE=1 ORDER BY ID_KEY", _interface), _con);
            using (SqlDataReader dtr = cmd.ExecuteReader())
            {
                int iS = 0;
                int i = 0;
                while (dtr.Read())
                {
                    srst[i].sn = nNum + i;
                    srst[i].srcId = dtr.GetString(1);
                    srst[i].dstId = dtr.GetString(1);
                    srst[i].desc = dtr.GetString(2);
                    if (1 == dtr.GetByte(3)) rtSid[iS++] = i;
                    ++i;
                }
            }
            cmd.Dispose();
        }
Пример #10
0
 public void SetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
     int i = 0;
     foreach (numInf nr in nrst)
     {
         int ret = 0;
         switch (numT[i])
         {
             case 'R':
                 ret = pisn_putsnapshot(numID[i], nr.val, 0, GetIntTime(nr.dtm));
                 break;
             case 'I':
             case 'D':
                 ret = pisn_putsnapshot(numID[i], 0, (int)nr.val, GetIntTime(nr.dtm));
                 break;
             default:
                 break;
         }
         if (0 != ret) err.WrtMsg(string.Format("测点{0}写入失败,错误号:{1}.", nr.dstId,ret.ToString()));
         ++i;
     }
 }
Пример #11
0
 public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
 }
Пример #12
0
 public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
     SqlCommand cmd;
     cmd = new SqlCommand("SELECT ID_KEY,TAG,DSC FROM TAGCONFIG WHERE TYPE=0 AND SENDFLAG=1 ORDER BY ID_KEY", _con);
     using (SqlDataReader dtr = cmd.ExecuteReader())
     {
         int i = 0;
         while (dtr.Read())
         {
             nrst[i].sn = i;
             nrst[i].srcId = dtr.GetString(1);
             nrst[i].dstId = dtr.GetString(1);
             nrst[i].desc = dtr.GetString(2);
             ++i;
         }
     }
     cmd = new SqlCommand("SELECT ID_KEY,TAG,DSC FROM TAGCONFIG WHERE TYPE=1 AND SENDFLAG=1 ORDER BY ID_KEY", _con);
     using (SqlDataReader dtr = cmd.ExecuteReader())
     {
         int i = 0;
         while (dtr.Read())
         {
             srst[i].sn = nNum + i;
             srst[i].srcId = dtr.GetString(1);
             srst[i].dstId = dtr.GetString(1);
             srst[i].desc = dtr.GetString(2);
             ++i;
         }
     }
     cmd.Dispose();
 }
Пример #13
0
        /// <summary>
        /// 对二进制串解报
        /// </summary>
        /// <param name="bytetemp"></param>
        /// <param name="con"></param>
        public int UnpackReceive(byte[] bytetemp, Control con,ref ASDUClass.FunType ft, ref ASDUClass.TransRes tr)
        {
            try
            {
                if ((bytetemp.Length == 1) && (bytetemp[0] == 0xe5))
                {
                    //收到 E5
                    return 1;
                }
                if ((bytetemp.Length == 5) && (bytetemp[0] == 0x10) && (bytetemp[4] == 0x16))
                {
                    Frame_101 temp = new Frame_101(bytetemp);
                    if (temp.GetControl().PRM == false)
                    {
                        con.Copy(con, temp.GetControl());
                        Console.WriteLine("RX: ACD:{0} DFC:{1} FUNCTION:{2}\r\n",
                                             temp.GetControl().ACD, temp.GetControl().DFC, temp.GetControl().function_0);
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine(DateTime.Now.ToString() + " RX: ACD:{0} DFC:{1} FUNCTION:{2}\r\n",
                                                 temp.GetControl().ACD, temp.GetControl().DFC, temp.GetControl().function_0);
                            sw.Close();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message.ToString());
                        }
                        //收到固定长度帧
                        return 2;
                    }
                }
                if (bytetemp.Length > 5)
                {
                    Frame_101 vtemp = new Frame_101(bytetemp);
                    if ((vtemp != null) && (vtemp.GetControl().PRM == false))
                    {

                        Console.WriteLine("RX: ACD:{0} DFC:{1} FUNCTION:{2} Time:{3} ASDUType:{4} Res:{5}",
                                            vtemp.GetControl().ACD, vtemp.GetControl().DFC, vtemp.GetControl().function_0, DateTime.Now, vtemp.GetAsduType(), vtemp.Res);
                        //Console.WriteLine("RX: {0}", vtemp.ToString());
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine(DateTime.Now.ToString() + " RX: ACD:{0} DFC:{1} FUNCTION:{2} ASDUType:{3} Res:{4}",
                                                vtemp.GetControl().ACD, vtemp.GetControl().DFC, vtemp.GetControl().function_0, vtemp.GetAsduType(), vtemp.Res);
                            sw.Close();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message.ToString());
                        }

                        con.Copy(con, vtemp.GetControl());
                        ft = vtemp.GetAsduType();
                        tr = vtemp.Res;

                        var datas = vtemp.GetData();
                        foreach (var data in datas)
                        {
                            //if (data.Addr == 0) continue;
                            Console.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                "data:" + data.Data.ToString() + " " +
                                                "time:" + data.Time.ToString());
                            //try
                            //{
                            //    sw = File.AppendText(logfile);
                            //    sw.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                            //                        "data:" + data.Data.ToString() + " " +
                            //                        "time:" + data.Time.ToString());
                            //    sw.Close();
                            //}
                            //catch (Exception ex)
                            //{
                            //    Console.WriteLine(ex.Message.ToString());
                            //}

                            numInf numtemp = new numInf();
                            if (find.TryGetValue(data.Addr, out numtemp))
                            {
                                numtemp.val = Convert.ToSingle(data.Data);
                                if (data.Time != null)
                                {
                                    numtemp.dtm = Convert.ToDateTime(data.Time);
                                }
                                else numtemp.dtm = DateTime.Now;
                                find.Remove(data.Addr);
                                find.Add(data.Addr, numtemp);
                            }
                            else
                            {
                                numtemp.val = Convert.ToSingle(data.Data);
                                if (data.Time != null)
                                {
                                    numtemp.dtm = Convert.ToDateTime(data.Time);
                                }
                                else numtemp.dtm = DateTime.Now;
                                find.Add(data.Addr, numtemp);
                            }
                        }
                        Console.WriteLine("\n");
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine("\r\n");
                            sw.Close();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message.ToString());
                        }
                        //收到可变长度帧
                        return 3;
                    }
                }
                //收到错误帧
                return 4;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
                return 4;
            }
        }
Пример #14
0
 public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
     return rtVal.GetData(nNum, nrst, sNum, srst);
 }
Пример #15
0
 public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
     if (find.Count < 1) return false;
     int index = 0;
     numInf numtemp = new numInf();
     for (int i = 0; i < nrst.Length; i++)
     {
         try
         {
             index = int.Parse(nrst[i].srcId);
             if (find.TryGetValue(index, out numtemp))
             {
                 float rat = 1.0f, dev = 0.0f;
                 if (nrst[i].ratio.Contains("+"))
                 {
                     string[] ss = nrst[i].ratio.Split('+');
                     rat = float.Parse(ss[0]);
                     dev = float.Parse(ss[1]);
                 }
                 else if (nrst[i].ratio.Contains("-"))
                 {
                     string[] ss = nrst[i].ratio.Split('-');
                     rat = float.Parse(ss[0]);
                     dev = float.Parse(ss[1]) * (-1);
                 }
                 else
                 {
                     rat = float.Parse(nrst[i].ratio);
                     dev = 0.0f;
                 }
                 nrst[i].val = numtemp.val * rat + dev;
                 if (numtemp.dtm.Year == 1) nrst[i].dtm = DateTime.Now;
                 else nrst[i].dtm = numtemp.dtm;
             }
         }
         catch (Exception e)
         {
             try
             {
                 sw = File.AppendText(logfile);
                 sw.WriteLine(DateTime.Now.ToString() + e.ToString());
                 sw.Close();
             }
             catch { }
             continue;
         }
     }
     return true;
 }
Пример #16
0
 public void SetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
 }
Пример #17
0
        public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            try
            {
                MyItems = MyGroup.OPCItems;
                MyItem = new OPCItem[nNum + sNum];
                numinf = new numInf[nNum];
                strinf = new strInf[sNum];
                numNum = nNum;
                strNum = sNum;

                int i = 0;
                foreach (numInf nn in nrst)
                {
                    try
                    {
                        MyItem[i] = MyItems.AddItem(nn.srcId, i);//byte
                        i++;
                    }
                    catch
                    {
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine("初始化点" + nn.srcId + "失败!");
                            sw.Close();
                        }
                        catch { }
                        //MyItem[i] = MyItems.AddItem(nrst[i - 1].srcId, i);
                        MyItem[i] = MyItem[i - 1];
                        i++;
                        continue;
                    }
                }
                foreach (strInf ss in srst)
                {
                    try
                    {
                        MyItem[i] = MyItems.AddItem(ss.srcId, i);//byte
                        i++;
                    }
                    catch
                    {
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine("初始化点" + ss.srcId + "失败!");
                            sw.Close();
                        }
                        catch { }
                        MyItem[i] = MyItem[i - 1];
                        i++;
                        continue;
                    }
                }

                object ItemValuestemp; object Qualities; object TimeStamps;//同步读的临时变量:值、质量、时间戳
                for (int ii = 0; ii < nNum + sNum; ii++)
                {
                    MyItem[ii].Read(1, out ItemValuestemp, out Qualities, out TimeStamps);//同步读,第一个参数只能为1或2
                    if (ii < nNum)
                    {
                        numinf[ii].val = Convert.ToSingle(ItemValuestemp);//转换后获取item值
                        numinf[ii].dtm = Convert.ToDateTime(TimeStamps);
                    }
                    else
                    {
                        strinf[ii - numNum].val = Convert.ToString(ItemValuestemp);//转换后获取item值
                        strinf[ii - numNum].dtm = Convert.ToDateTime(TimeStamps);
                    }
                }

                MyGroup.IsSubscribed = true;//使用订阅功能,即可以异步,默认false
                try
                {
                    sw = File.AppendText(logfile);
                    sw.WriteLine("初始化点成功!");
                    sw.Close();
                }
                catch { }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
Пример #18
0
        /// <summary>
        /// 后台线程提交数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            try
            {
                FileInfo file = new FileInfo(logfile);
                long size = file.Length;//文件大小。byte
                if (size > 1024000)
                {
                    StreamWriter sw1 = new StreamWriter(logfile);
                    string w = "";
                    sw1.Write(w);
                    sw1.Close();
                }
            }
            catch { }

            if (e.ProgressPercentage == -1)
            {
                APDUClass temp = new APDUClass(e.UserState as byte[]);
                APCIClass.UISFormat dataFormat = temp.GetApciType();
                if (temp != null)
                {
                    try
                    {
                        sw = File.AppendText(logfile);
                        sw.WriteLine(DateTime.Now.ToString() + " TX: " + "Type:" + temp.GetAsduType().ToString() + " Res:" + temp.Res.ToString()
                                        + " SR:" + temp.GetSR().ToString() + " NR:" + temp.GetNR().ToString()
                                        + "\r\n" + temp.ApciToString() + temp.AsduToString() + "\r\n");
                        sw.Close();
                    }
                    catch {}
                    Console.WriteLine(DateTime.Now.ToString() + " TX: " + "Type:" + temp.GetAsduType().ToString() + " Res:" + temp.Res.ToString()
                                             + " SR:" + temp.GetSR().ToString() + " NR:" + temp.GetNR().ToString()
                                             + "\n" + temp.ApciToString() + temp.AsduToString() + "\r\n");
                }
            }
            else if (e.ProgressPercentage > 0)
            {
                byte[] receive = new byte[e.ProgressPercentage];
                Array.Copy(e.UserState as byte[], receive, e.ProgressPercentage);
                if (receive[0] == 0x68)
                {
                    int i = 0;
                    while (i < receive.Length)
                    {
                        try
                        {
                            int recevlen = receive[i + 1];
                            byte[] receivetemp = new byte[recevlen +2];
                            Array.Copy(receive, i, receivetemp, 0, receivetemp.Length);
                            i = i + receivetemp.Length;

                            APDUClass temp = new APDUClass(receivetemp);
                            APCIClass.UISFormat dataFormat = temp.GetApciType();
                            //if (dataFormat == APCIClass.UISFormat.I && !(nr > temp.GetSR()))
                            if (dataFormat == APCIClass.UISFormat.I)
                            {
                                nr = (short)temp.GetSR();
                                if (nr > short.MaxValue)
                                {
                                    nr = 0;
                                }
                                nrflag = true;
                                if (((nr % m_config_104.m_AckNW) == m_config_104.m_AckNW - 1)||(sr == 0))
                                {
                                    SendList.Enqueue(new APDUClass(new APCIClassSFormat(nr), null));
                                    for (int id = 0; id < SendList.Count - 1; id++)
                                    {
                                        APDUClass tempsend = SendList.Dequeue();
                                        SendList.Enqueue(tempsend);
                                    }
                                    nrflag = false;
                                }
                                if ((temp.GetAsduType() == ASDUClass.FunType.CalAll) && (temp.Res == ASDUClass.TransRes.ActiveEnd))
                                {
                                    ASDUClass calymBuffer = new ASDUClass();
                                    calymBuffer.Pack(ASDUClass.TransRes.Active, ASDUClass.FunType.CalEnergyPulse, m_config_104.m_PublicAddress);
                                    SendList.Enqueue(new APDUClass(new APCIClassIFormat(sr++, nr), calymBuffer));
                                    ASDUClass readymBuffer = new ASDUClass();
                                    readymBuffer.SetData_QCC(0x05, m_config_104.m_PublicAddress);
                                    SendList.Enqueue(new APDUClass(new APCIClassIFormat(sr++, nr), readymBuffer));
                                }
                            }
                            if (dataFormat == APCIClass.UISFormat.U)
                            {
                                if ((APCIClassUFormat.UFormatType)temp.GetApci().GetControlByte() == APCIClassUFormat.UFormatType.StartSet)
                                    SendList.Enqueue(new APDUClass(new APCIClassUFormat(APCIClassUFormat.UFormatType.StartConfirm), null));
                                if ((APCIClassUFormat.UFormatType)temp.GetApci().GetControlByte() == APCIClassUFormat.UFormatType.TestSet)
                                    SendList.Enqueue(new APDUClass(new APCIClassUFormat(APCIClassUFormat.UFormatType.TestConfirm), null));
                                if ((APCIClassUFormat.UFormatType)temp.GetApci().GetControlByte() == APCIClassUFormat.UFormatType.StopSet)
                                    SendList.Enqueue(new APDUClass(new APCIClassUFormat(APCIClassUFormat.UFormatType.StopConfirm), null));
                                if ((APCIClassUFormat.UFormatType)temp.GetApci().GetControlByte() == APCIClassUFormat.UFormatType.StartConfirm)
                                {
                                    ASDUClass calBuffer = new ASDUClass();
                                    calBuffer.Pack(ASDUClass.TransRes.Active, ASDUClass.FunType.CalAll, m_config_104.m_PublicAddress);
                                    SendList.Enqueue(new APDUClass(new APCIClassIFormat(sr++, nr), calBuffer));
                                }
                            }
                            ////对方发来确认帧,在核实确认序号等于或小于本分的I帧发送序号,再次发送I帧
                            ////此部分在“实现发送控制命令”时,给以完成。
                            //else if (dataFormat == APCIClass.UISFormat.S)
                            //{
                            //    if (nr > short.MaxValue)
                            //    {
                            //        nr = 0;
                            //    }
                            //    Console.WriteLine(dataFormat.ToString());
                            //    SendList.Enqueue(new APDUClass(new APCIClassSFormat(nr++), null));
                            //}

                            if (temp != null)
                            {
                                try
                                {
                                    sw = File.AppendText(logfile);
                                    sw.WriteLine(DateTime.Now.ToString() + " RX: " + "Type:" + temp.GetAsduType().ToString() + " Res:" + temp.Res.ToString()
                                                        + " SR:" + temp.GetSR().ToString() + " NR:" + temp.GetNR().ToString()
                                                        + "\r\n" + BitConverter.ToString(receivetemp, 0).Replace("-", " "));
                                    sw.Close();
                                }
                                catch { }

                                Console.WriteLine(DateTime.Now.ToString() + " RX: " + "Type:" + temp.GetAsduType().ToString() + " Res:" + temp.Res.ToString()
                                                    + " SR:" + temp.GetSR().ToString() + " NR:" + temp.GetNR().ToString()
                                                    + "\n" + BitConverter.ToString(receivetemp, 0).Replace("-", " "));

                                var datas = temp.GetData();
                                foreach (var data in datas)
                                {
                                    if (data.Addr == 0) continue;
                                    try
                                    {
                                        sw = File.AppendText(logfile);
                                        sw.WriteLine("RX " + "addr:" + data.Addr.ToString() + " " +
                                                    "data:" + data.Data.ToString() + " " +
                                                    "time:" + data.Time.ToString());
                                        sw.Close();
                                    }
                                    catch { }

                                    //Console.WriteLine("RX " + "addr:" + data.Addr.ToString() + " " +
                                    //                "data:" + data.Data.ToString() + " " +
                                    //                "time:" + data.Time.ToString());

                                    numInf numtemp = new numInf();
                                    if (find.TryGetValue(data.Addr, out numtemp))
                                    {
                                        numtemp.val = Convert.ToSingle(data.Data);
                                        if (data.Time != null)
                                        {
                                            numtemp.dtm = Convert.ToDateTime(data.Time);
                                        }
                                        else numtemp.dtm = DateTime.Now;
                                        find.Remove(data.Addr);
                                        find.Add(data.Addr, numtemp);
                                    }
                                    else
                                    {
                                        numtemp.val = Convert.ToSingle(data.Data);
                                        if (data.Time != null)
                                        {
                                            numtemp.dtm = Convert.ToDateTime(data.Time);
                                        }
                                        else numtemp.dtm = DateTime.Now;
                                        find.Add(data.Addr, numtemp);
                                    }
                                }
                                try
                                {
                                    sw = File.AppendText(logfile);
                                    sw.WriteLine("\r\n");
                                    sw.Close();
                                }
                                catch { }
                                Console.WriteLine("\r\n");
                            }
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine(ex.ToString());
                        }
                    }
                }
            }
        }
Пример #19
0
        public void SetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            SqlCommand cmd = new SqlCommand(string.Format("DELETE t1 FROM REALVALUE t1 INNER JOIN TAGCONFIG t2 ON t1.TAG=t2.TAG AND t2.INTERFACE={0}", _interface), _con);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                DisConnect();
                Connect();
                err.WrtMsg(ex.Message);
            }

            using (DataTable dtbl = new DataTable())
            {
                dtbl.Columns.Add("tag", typeof(string));
                dtbl.Columns.Add("val", typeof(string));
                dtbl.Columns.Add("dtm", typeof(DateTime));

                foreach (int id in rtNid)
                {
                    DataRow drow = dtbl.NewRow();
                    drow["tag"] = nrst[id].dstId;
                    drow["val"] = nrst[id].val.ToString();
                    drow["dtm"] = nrst[id].dtm;
                    dtbl.Rows.Add(drow);
                }

                foreach (int id in rtSid)
                {
                    DataRow drow = dtbl.NewRow();
                    drow["tag"] = srst[id].dstId;
                    drow["val"] = srst[id].val;
                    drow["dtm"] = srst[id].dtm;
                    dtbl.Rows.Add(drow);
                }

                using (SqlBulkCopy bcp = new SqlBulkCopy(_con))
                {
                    bcp.DestinationTableName = "REALVALUE";
                    bcp.ColumnMappings.Add("tag", "TAG");
                    bcp.ColumnMappings.Add("val", "VALUE");
                    bcp.ColumnMappings.Add("dtm", "TIME");
                    try
                    {
                        bcp.WriteToServer(dtbl);
                    }
                    catch (Exception ex)
                    {
                        DisConnect();
                        Connect();
                        err.WrtMsg(ex.Message);
                    }
                }
            }

            if (0 == frmMain.bufMod / 2) return;

            using (DataTable dtbl = new DataTable())
            {
                dtbl.Columns.Add("tag", typeof(string));
                dtbl.Columns.Add("val", typeof(string));
                dtbl.Columns.Add("dtm", typeof(DateTime));

                foreach (numInf nr in nrst)
                {
                    DataRow drow = dtbl.NewRow();
                    drow["tag"] = nr.dstId;
                    drow["val"] = nr.val.ToString();
                    drow["dtm"] = nr.dtm;
                    dtbl.Rows.Add(drow);
                }

                foreach (strInf sr in srst)
                {
                    DataRow drow = dtbl.NewRow();
                    drow["tag"] = sr.dstId;
                    drow["val"] = sr.val;
                    drow["dtm"] = sr.dtm;
                    dtbl.Rows.Add(drow);
                }

                using (SqlBulkCopy bcp = new SqlBulkCopy(_con))
                {
                    bcp.DestinationTableName = "HISTVALUE";
                    bcp.ColumnMappings.Add("tag", "TAG");
                    bcp.ColumnMappings.Add("val", "VALUE");
                    bcp.ColumnMappings.Add("dtm", "TIME");
                    try
                    {
                        bcp.WriteToServer(dtbl);
                    }
                    catch (Exception ex)
                    {
                        DisConnect();
                        Connect();
                        err.WrtMsg(ex.Message);
                    }
                }
            }
        }
Пример #20
0
        public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            try
            {
                for (int i = 0; i < nNum; i++)
                {
                    try
                    {
                        nrst[i].val = numinf[i].val * Convert.ToSingle(nrst[i].ratio);
                        nrst[i].dtm = numinf[i].dtm.AddHours(add_hours);
                    }
                    catch (Exception e)
                    {
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine(DateTime.Now.ToString() + e.ToString());
                            sw.Close();
                        }
                        catch { }
                        continue;
                    }
                }
                for (int j = 0; j < sNum; j++)
                {
                    try
                    {
                        if (strinf[j].val == null)
                        {
                            srst[j].val = "0";
                            srst[j].dtm = DateTime.Now;
                        }
                        else
                        {
                            srst[j].val = strinf[j].val;
                            srst[j].dtm = strinf[j].dtm.AddHours(add_hours);
                        }
                    }
                    catch (Exception e)
                    {
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine(DateTime.Now.ToString() + e.ToString());
                            sw.Close();
                        }
                        catch { }
                        continue;
                    }
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                try
                {
                    sw = File.AppendText(logfile);
                    sw.WriteLine(DateTime.Now.ToString() + e.ToString());
                    sw.Close();
                }
                catch { }
                return false;
            }
            try
            {
                sw = File.AppendText(logfile);
                sw.WriteLine(DateTime.Now.ToString()+"\tUpdate Value!");
                sw.Close();
            }
            catch { }
            return true;
        }
Пример #21
0
        public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            dataType.Clear();
            for (int i = 0; i < nrst.Length; i++)
            {
                string[] arry = nrst[i].srcId.Split('_');
                dataType.Add(arry[0]+int.Parse(arry[1]).ToString("d4"), nrst[i].datatype);

                if (nrst[i].srcId.StartsWith("0"))
                {
                    if (startCoilAddr > int.Parse(arry[1])) startCoilAddr = int.Parse(arry[1]);
                    numCoil++;
                }
                if (nrst[i].srcId.StartsWith("1"))
                {
                    int itemp = int.Parse(arry[1]);
                    if (startInputAddr > itemp) startInputAddr = itemp;
                    numInput++;
                }
                if (nrst[i].srcId.StartsWith("3"))
                {
                    int itemp = int.Parse(arry[1]);
                    if (startInputRegAddr > itemp) startInputRegAddr = itemp;

                    switch (nrst[i].datatype)
                    {
                        case 1:
                        case 5:
                            numInputReg += 1;
                            break;
                        case 2:
                        case 3:
                        case 6:
                        case 7:
                        case 9:
                        case 10:
                            numInputReg += 2;
                            break;
                        case 4:
                        case 8:
                            numInputReg += 4;
                            break;
                    }
                }
                if (nrst[i].srcId.StartsWith("4"))
                {
                    int itemp = int.Parse(arry[1]);
                    if (startHoldRegAddr > itemp) startHoldRegAddr = itemp;

                    switch (nrst[i].datatype)
                    {
                        case 1:
                        case 5:
                            numHoldReg += 1;
                            break;
                        case 2:
                        case 3:
                        case 6:
                        case 7:
                        case 9:
                        case 10:
                            numHoldReg += 2;
                            break;
                        case 4:
                        case 8:
                            numHoldReg += 4;
                            break;
                    }
                }
            }
        }
Пример #22
0
 public bool GetRtValue(int nNum, numInf[] nrst, int sNum, strInf[] srst)
 {
     if (0 == DateTime.Now.Second % 20 && flag)
     {
         for (int i = 0; i < fileName.Length; ++i)
         {
             if (DownLoad(i))
             {
                 GetFileData(i);
                 cfg.SetVal("Data", "LastTime", string.Join(";", lastDT));
             }
         }
         try
         {
             for (int i = 0; i < nrst.Length; ++i)
             {
                 int idx = nrst[i].sn;
                 float.TryParse(unit[fno[idx]][rno[idx]][cno[idx]], out nrst[i].val);
                 nrst[i].dtm=DateTime.Now;
             }
         }
         catch (Exception ex)
         {
             err.WrtMsg(ex.Message);
         }
         flag = false;
         return true;
     }
     else
     {
         flag = (0 != DateTime.Now.Second % 20);
         return false;
     }
 }
Пример #23
0
        public byte[] PutData(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            int nlen = 10 * nNum;
            byte[] numbyt = new byte[nlen];

            int numidx = 0;
            foreach (numInf nr in nrst)
            {
                Buffer.BlockCopy(BitConverter.GetBytes((short)nr.sn), 0, numbyt, numidx, 2);
                Buffer.BlockCopy(BitConverter.GetBytes((int)(nr.dtm - new DateTime(1970, 1, 1)).TotalSeconds), 0, numbyt, numidx + 2, 4);
                Buffer.BlockCopy(BitConverter.GetBytes(nr.val), 0, numbyt, numidx + 6, 4);
                numidx += 10;
            }

            int slen = 0;
            slen = 8 * sNum;
            byte[][] bval = new byte[sNum][];
            int i = 0;
            foreach (strInf sr in srst)
            {
                bval[i] = Encoding.Default.GetBytes(sr.val);
                slen += bval[i++].Length;
            }
            byte[] strbyt = new byte[slen];

            int stridx = 0;
            i = 0;
            foreach (strInf sr in srst)
            {
                Buffer.BlockCopy(BitConverter.GetBytes((short)sr.sn), 0, strbyt, stridx, 2);
                Buffer.BlockCopy(BitConverter.GetBytes((int)(sr.dtm - new DateTime(1970, 1, 1)).TotalSeconds), 0, strbyt, stridx + 2, 4);
                Buffer.BlockCopy(BitConverter.GetBytes((short)bval[i].Length), 0, strbyt, stridx + 6, 2);
                Buffer.BlockCopy(bval[i], 0, strbyt, stridx + 8, bval[i].Length);
                stridx += 8 + bval[i++].Length;
            }

            byte[] data = new byte[4 + nlen + slen];
            Buffer.BlockCopy(BitConverter.GetBytes((short)nNum), 0, data, 0, 2);
            Buffer.BlockCopy(BitConverter.GetBytes((short)sNum), 0, data, 2, 2);
            Buffer.BlockCopy(numbyt, 0, data, 4, nlen);
            Buffer.BlockCopy(strbyt, 0, data, 4 + nlen, slen);
            Compress(ref data);

            _packSize = 8 + data.Length + 2;
            _pack = new byte[_packSize];
            Buffer.BlockCopy(_head, 0, _pack, 0, 2);
            Buffer.BlockCopy(BitConverter.GetBytes(_packSize), 0, _pack, 2, 4);
            _pack[6] = frmMain.bufMod;
            Buffer.BlockCopy(data, 0, _pack, 8, data.Length);
            Buffer.BlockCopy(BitConverter.GetBytes(CRC16(_pack, 8, _packSize - 10)), 0, _pack, _packSize - 2, 2);

            return _pack;
        }
Пример #24
0
        public void InitPt(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            fno = new int[nNum + sNum];
            rno = new int[nNum + sNum];
            cno = new int[nNum + sNum];

            string[] tmp;
            foreach (numInf nr in nrst)
            {
                tmp = nr.srcId.Split('_');
                int.TryParse(tmp[0], out fno[nr.sn]);
                int.TryParse(tmp[1], out rno[nr.sn]);
                int.TryParse(tmp[2], out cno[nr.sn]);
            }
            foreach (strInf sr in srst)
            {
                tmp = sr.srcId.Split('_');
                int.TryParse(tmp[0], out fno[sr.sn]);
                int.TryParse(tmp[1], out rno[sr.sn]);
                int.TryParse(tmp[2], out cno[sr.sn]);
            }
        }
Пример #25
0
        /// <summary>
        /// 对二进制串解报
        /// </summary>
        public void UnpackReceive(byte[] bytetemp, int startAddr, int len)
        {
            try
            {
                //if (tvar is RTU)
                if (m_config_Modbus.m_ModbusType == "RTU")
                {
                    if (bytetemp[2] + 5 == bytetemp.Length)
                    {
                        RTU vtemp = new RTU(bytetemp, len, startAddr,m_type);

                        if ((vtemp.Responseread != null) && (vtemp.Responseread.ByteNum != 0))
                        {

                            Console.WriteLine("RX: FC:{0} ", vtemp.Responseread.FC);
                            try
                            {
                                sw = File.AppendText(logfile);
                                sw.WriteLine(DateTime.Now.ToString() + " RX: FC:{0} ", vtemp.Responseread.FC);
                                sw.Close();
                            }
                            catch { }

                            var datas = vtemp.GetData();
                            foreach (var data in datas)
                            {
                                //if (data.Addr == 0) continue;
                                Console.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                    "data:" + data.Data.ToString());
                                try
                                {
                                    sw = File.AppendText(logfile);
                                    sw.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                        "data:" + data.Data.ToString());
                                    sw.Close();
                                }
                                catch { }

                                numInf numtemp = new numInf();
                                if (find.TryGetValue(data.Addr, out numtemp))
                                {
                                    numtemp.val = Convert.ToSingle(data.Data);
                                    numtemp.dtm = DateTime.Now;

                                    find.Remove(data.Addr);
                                    find.Add(data.Addr, numtemp);
                                }
                                else
                                {
                                    numtemp.val = Convert.ToSingle(data.Data);
                                    numtemp.dtm = DateTime.Now;
                                    find.Add(data.Addr, numtemp);
                                }
                            }
                            Console.WriteLine("\n");
                            try
                            {
                                sw = File.AppendText(logfile);
                                sw.WriteLine("\r\n");
                                sw.Close();
                            }
                            catch { }
                        }//end if ((vtemp.Responseread != null) && (vtemp.Responseread.ByteNum != 0))
                    }//end if (bytetemp[2] + 5 == bytetemp.Length)
                }//end if (tvar is RTU)

                //if (tvar is ASCII)
                if (m_config_Modbus.m_ModbusType == "ASCII")
                {
                    ASCII vtemp = new ASCII(bytetemp, len, startAddr, m_type);
                    if ((vtemp.AscRtu.Responseread != null) && (vtemp.AscRtu.Responseread.ByteNum != 0))
                    {

                        Console.WriteLine("RX: FC:{0} ", vtemp.AscRtu.Responseread.FC);
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine(DateTime.Now.ToString() + " RX: FC:{0} ", vtemp.AscRtu.Responseread.FC);
                            sw.Close();
                        }
                        catch { }

                        var datas = vtemp.AscRtu.GetData();
                        foreach (var data in datas)
                        {
                            //if (data.Addr == 0) continue;
                            Console.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                "data:" + data.Data.ToString());
                            try
                            {
                                sw = File.AppendText(logfile);
                                sw.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                    "data:" + data.Data.ToString());
                                sw.Close();
                            }
                            catch { }

                            numInf numtemp = new numInf();
                            if (find.TryGetValue(data.Addr, out numtemp))
                            {
                                numtemp.val = Convert.ToSingle(data.Data);
                                numtemp.dtm = DateTime.Now;

                                find.Remove(data.Addr);
                                find.Add(data.Addr, numtemp);
                            }
                            else
                            {
                                numtemp.val = Convert.ToSingle(data.Data);
                                numtemp.dtm = DateTime.Now;
                                find.Add(data.Addr, numtemp);
                            }
                        }
                        Console.WriteLine("\n");
                        try
                        {
                            sw = File.AppendText(logfile);
                            sw.WriteLine("\r\n");
                            sw.Close();
                        }
                        catch { }
                    }

                }//if (tvar is ASCII)
            }// end try
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
                //异常处理
                throw ex;
            }
        }
Пример #26
0
        public bool GetData(int nNum, numInf[] nrst, int sNum, strInf[] srst)
        {
            byte[] tmp = null;
            if (null == (tmp = Ring[iget])) return false;
            Ring[iget++] = null;
            iget %= MAX_LEN;

            int _size = tmp.Length;
            frmMain.bufMod = tmp[6];
            byte[] data = new byte[_size - 8];
            Buffer.BlockCopy(tmp, 8, data, 0, _size - 10);
            Uncompress(ref data);

            try
            {
                int idx = 4;
                for (int i = 0; i < nrst.Length; ++i)
                {
                    nrst[i].sn = BitConverter.ToInt16(data, idx);
                    nrst[i].dtm = new DateTime(1970, 1, 1).AddSeconds((BitConverter.ToInt32(data, idx + 2)));
                    nrst[i].val = BitConverter.ToSingle(data, idx + 6);
                    idx += 10;
                }

                int strlen = 0;
                for (int i = 0; i < srst.Length; ++i)
                {
                    srst[i].sn = BitConverter.ToInt16(data, idx);
                    srst[i].dtm = new DateTime(1970, 1, 1).AddSeconds((BitConverter.ToInt32(data, idx + 2)));
                    strlen = BitConverter.ToUInt16(data, idx + 6);
                    srst[i].val = Encoding.Default.GetString(data, idx + 8, strlen);
                    idx += 8 + strlen;
                }
            }
            catch (Exception ex)
            {
                err.WrtMsg(ex.Message);
                return false;
            }

            return true;
        }
Пример #27
0
        /// <summary>
        /// 后台线程提交数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.ProgressPercentage == -1)
            {
                byte[] sendbuffer = e.UserState as byte[];
                Console.WriteLine("TX: " + BitConverter.ToString(sendbuffer, 0).Replace("-", " "));
                try
                {
                    sw = File.AppendText(logfile);
                    sw.WriteLine(DateTime.Now.ToString() + " TX: " + BitConverter.ToString(sendbuffer, 0).Replace("-", " "));
                    sw.Close();
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }

            else if (e.ProgressPercentage > 0)
            {
                byte[] receive = new byte[e.ProgressPercentage];
                Array.Copy(e.UserState as byte[], receive, e.ProgressPercentage);

                Console.WriteLine("RX: " + BitConverter.ToString(receive, 0).Replace("-", " "));
                try
                {
                    sw = File.AppendText(logfile);
                    sw.WriteLine(DateTime.Now.ToString() + " RX: " + BitConverter.ToString(receive, 0).Replace("-", " "));
                    sw.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }

                try
                {
                    byte[] btemp = new byte[2] { receive[5], receive[4] };
                    int bufferlen = BitConverter.ToInt16(btemp, 0) + 6;
                    if (bufferlen == receive.Length)//报文长度正确
                    {
                        TCP tcptemp = new TCP(receive, m_len, m_startAddr, dataType);

                        if ((tcptemp.Responseread != null) && (tcptemp.Responseread.ByteNum != 0))
                        {

                            Console.WriteLine("RX: FC:{0} ", tcptemp.Responseread.FC);
                            try
                            {
                                sw = File.AppendText(logfile);
                                sw.WriteLine(DateTime.Now.ToString() + " RX: FC:{0} ", tcptemp.Responseread.FC);
                                sw.Close();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.ToString());
                            }

                            var datas = tcptemp.GetData();
                            foreach (var data in datas)
                            {
                                //if (data.Addr == 0) continue;
                                Console.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                    "data:" + data.Data.ToString());
                                try
                                {
                                    sw = File.AppendText(logfile);
                                    sw.WriteLine("RX: " + "addr:" + data.Addr.ToString() + " " +
                                                        "data:" + data.Data.ToString());
                                    sw.Close();
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex.ToString());
                                }

                                numInf numtemp = new numInf();
                                if (find.TryGetValue(data.Addr, out numtemp))
                                {
                                    numtemp.val = Convert.ToSingle(data.Data);
                                    numtemp.dtm = DateTime.Now;

                                    find.Remove(data.Addr);
                                    find.Add(data.Addr, numtemp);
                                }
                                else
                                {
                                    numtemp.val = Convert.ToSingle(data.Data);
                                    numtemp.dtm = DateTime.Now;
                                    find.Add(data.Addr, numtemp);
                                }
                            }
                            sendFlag = true;
                            Console.WriteLine("\n");
                            try
                            {
                                sw = File.AppendText(logfile);
                                sw.WriteLine("\r\n");
                                sw.Close();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.ToString());
                            }
                        }//end if ((tcptemp.Responseread != null) && (tcptemp.Responseread.ByteNum != 0))
                    }//end if (bufferlen == buffer.Length)
                }// end try
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    //System.Diagnostics.Debug.WriteLine(ex.ToString());
                }
            }
        }