Ejemplo n.º 1
0
        //示例: $00010K01yymmddhh#13
        public String BuildQuery(string sid, EStationType stationType, ETrans trans, DateTime beginTime, EChannelType ctype)
        {
            //  拼接发送指令的字符串
            StringBuilder sb = new StringBuilder();

            sb.Append(ProtocolMaps.ChannelProtocolStartCharMap.FindValue(ctype));
            sb.Append(String.Format("{0:D4}", Int32.Parse(sid.Trim())));
            sb.Append("0K");
            //  type : 01:01为水位 02为雨量
            sb.Append(ProtocolHelpers.StationType2ProtoStr(stationType));

            switch (trans)
            {
            case ETrans.ByHour:
                sb.Append(beginTime.ToString("yyMMddHH"));
                break;

            case ETrans.ByDay:
                sb.Append(beginTime.ToString("yyMMdd"));
                sb.Append("88");
                break;

            default:
                throw new Exception("传输格式错误");
            }
            sb.Append('\r');
            return(sb.ToString());
        }
Ejemplo n.º 2
0
        //  批量数据Flash下行
        public String BuildQuery_Flash(string sid, EStationType stationType, ETrans trans, DateTime beginTime, DateTime endTime, EChannelType ctype)
        {
            String result       = String.Empty;
            String dataProtocol = Manager.XmlStationData.Instance.GetProtocolBySId(sid);

            //RG30
            if (dataProtocol == "RG30")
            {
                Down = new Data.RG30.DownParser();
            }
            //时差法
            if (dataProtocol == "TDXY")
            {
                Down = new Data.TDXY.DownParser();
            }
            //中游局协议
            if (dataProtocol == "ZYJBX")
            {
                Down = new Data.ZYJBX.DownParser();
            }
            if (dataProtocol == "SM100H")
            {
                Down = new Data.SM100H.DownParser();
            }
            result = Down.BuildQuery_Flash(sid, stationType, trans, beginTime, endTime, ctype);
            return(result);
        }
Ejemplo n.º 3
0
        private void btnStartTrans_Click(object sender, EventArgs e)
        {
            var station = (this.cmbStation as CStationComboBox).GetStation();

            if (station == null)
            {
                return;
            }

            string sid = station.StationID;

            var stype = station.StationType;

            station.StationType = radioRain.Checked ? EStationType.ERainFall : EStationType.EHydrology;
            ETrans trans = this.radioHour.Checked ? ETrans.ByHour : ETrans.ByDay;

            // 写入系统日志
            string logMsg = String.Format("--------U盘批量传输    目标站点({0:D4})--------- ", int.Parse(sid));

            CSystemInfoMgr.Instance.AddInfo(logMsg);
            this.listView1.Items.Add(logMsg);

            string qry = CPortDataMgr.Instance.SendUDiskMsg(station, trans, this.dtp_StartTime.Value, this.m_channelType);

            this.listView1.Items.Add(new ListViewItem()
            {
                Text = String.Format("[{0}]  发送数据:  {1}", this.m_channelType.ToString(), qry)
            });
        }
Ejemplo n.º 4
0
        //  批量数据主板下行
        public String BuildQuery_Batch(string sid, ETrans trans, DateTime beginTime, EChannelType ctype)
        {
            try
            {
                //获取packageNum和recvtime
                CEntityPackage package    = UpParser.cEntityPackage[sid];
                String         packageNum = package.PackageNum;
                DateTime       recvtime   = package.time;

                StringBuilder sb = new StringBuilder();
                sb.Append(ProtocolMaps.ChannelProtocolStartCharMap.FindValue(ctype));
                sb.Append(String.Format("{0:D4}", Int32.Parse(sid.Trim())));
                sb.Append("0G");
                sb.Append(" 29");
                int dayRound  = Int32.Parse(packageNum.Substring(0, 2));
                int hourRound = Int32.Parse(packageNum.Substring(2, 2));
                switch (trans)
                {
                case ETrans.ByHour:
                {
                    int dayRoundTrans = dayRound + beginTime.Day - recvtime.Day;
                    sb.Append(String.Format("{0:D2}", dayRoundTrans));
                    int hourRoundTrans = hourRound - recvtime.Hour + beginTime.Hour;
                    sb.Append(String.Format("{0:D2}", hourRoundTrans));
                }
                break;

                case ETrans.ByDay:
                {
                    int dayRoundTrans = dayRound + beginTime.Day - recvtime.Day;
                    dayRoundTrans = (dayRoundTrans <= 0) ? dayRoundTrans + 5 : dayRoundTrans;
                    sb.Append((dayRoundTrans == dayRound) ? "00" : String.Format("{0:D2}", dayRoundTrans));
                    sb.Append("00");
                }
                break;

                default:
                    throw new Exception("传输格式错误");
                }

                ///// 20190410-SYJ-Add
                //sb.Append(String.Format("{0:D2}", beginTime.Day));
                //sb.Append(String.Format("{0:D2}", beginTime.Hour));
                sb.Append('\r');

                return(sb.ToString());
            }
            catch (Exception e)
            {
                return("无对应站点包序号!");
            }
        }
Ejemplo n.º 5
0
        //  批量数据UBatch下行
        public String BuildQuery_UBatch(string sid, EStationType stationType, ETrans trans, DateTime beginTime, EChannelType ctype)
        {
            //  构建发送指令的字符串
            StringBuilder sb = new StringBuilder();

            sb.Append(ProtocolMaps.ChannelProtocolStartCharMap.FindValue(ctype));
            sb.Append(String.Format("{0:D4}", Int32.Parse(sid.Trim())));
            sb.Append("0K");

            //   stationtype :  01为水位 02为雨量
            sb.Append(ProtocolHelpers.StationType2ProtoStr_1(stationType));

            //  时间
            sb.Append(beginTime.ToString("yyMMddHH"));

            sb.Append('\r');
            return(sb.ToString());
        }
Ejemplo n.º 6
0
        //  批量数据Flash下行
        public String BuildQuery_Flash(string sid, EStationType stationType, ETrans trans, DateTime beginTime, DateTime endTime, EChannelType ctype)
        {
            //  构建发送指令的字符串
            StringBuilder sb = new StringBuilder();

            sb.Append(ProtocolMaps.ChannelProtocolStartCharMap.FindValue(ctype));
            sb.Append(String.Format("{0:D4}", Int32.Parse(sid.Trim())));
            sb.Append("0K");

            //   stationtype :  01为水位 02为雨量
            sb.Append(ProtocolHelpers.StationType2ProtoStr_1(stationType));

            //  dayOrHour : 03为按小时传 02为按天传
            //              按小时传  时间格式:   yyMMddHH
            //              按天传   时间格式:   yyMMdd
            //              按一天整点传  时间格式:  yyMMddHH
            sb.Append(ProtocolMaps.TransMap.FindValue(trans));
            switch (trans)
            {
            case ETrans.ByHour:
                sb.Append(beginTime.ToString("yyMMddHH"));
                sb.Append(endTime.ToString("yyMMddHH"));
                break;

            case ETrans.ByDay:
                sb.Append(beginTime.ToString("yyMMdd"));
                sb.Append(endTime.ToString("yyMMdd"));
                break;

            case ETrans.ByDayHour:
                sb.Append(beginTime.ToString("yyMMddHH"));
                sb.Append(endTime.ToString("yyMMddHH"));
                break;

            default:
                throw new Exception("传输格式错误");
            }

            sb.Append('\r');
            return(sb.ToString());
        }
Ejemplo n.º 7
0
 public string BuildQuery_Flash(string sid, EStationType stationType, ETrans trans, DateTime beginTime, DateTime endTime, EChannelType ctype)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 8
0
 public String BuildQuery_Batch(string sid, ETrans trans, DateTime beginTime, EChannelType ctype)
 {
     return("");
 }
Ejemplo n.º 9
0
        private void btnStartTrans_Click(object sender, EventArgs e)
        {
            var station = (this.cmbStation as CStationComboBox).GetStation();

            if (station == null)
            {
                return;
            }

            string sid = station.StationID;

            var      stype     = station.StationType;
            ETrans   trans     = this.radioHour.Checked ? ETrans.ByHour : ETrans.ByDay;
            DateTime beginTime = new DateTime();
            DateTime endTime   = new DateTime();

            if (radioSD.Checked)
            {
                DateTime tmp = this.dtp_StartTime.Value;
                beginTime = new DateTime(tmp.Year, tmp.Month, tmp.Day, tmp.Hour, 0, 0);
                string logMsg = String.Format("--------批量传输    目标站点({0:D4})--------- ", int.Parse(sid));
                // 写入系统日志
                CSystemInfoMgr.Instance.AddInfo(logMsg);
                this.listView1.Items.Add(logMsg);
                string qry = CPortDataMgr.Instance.SendSDMsg(station, beginTime, this.m_channelType);
                this.listView1.Items.Add(new ListViewItem()
                {
                    Text = String.Format("[{0}]  发送数据:  {1}", this.m_channelType.ToString(), qry)
                });
            }
            else
            {
                if (this.radioHour.Checked == true)
                {
                    DateTime tmp   = this.dtp_StartTime.Value;
                    DateTime tmp_1 = this.dtp_EndTime.Value;
                    if (tmp_1.Day != tmp.Day || tmp_1.Year != tmp.Year || tmp_1.Month != tmp.Month)
                    {
                        MessageBox.Show("按小时查询不能跨日");
                        return;
                    }
                    beginTime = new DateTime(tmp.Year, tmp.Month, tmp.Day, tmp.Hour, 0, 0);
                    endTime   = this.dtp_EndTime.Value;
                }
                else if (this.radioDay.Checked == true)
                {
                    DateTime tmp   = this.dtp_StartTime.Value;
                    DateTime tmp_1 = this.dtp_EndTime.Value;
                    if (tmp_1.Year != tmp.Year || tmp_1.Month != tmp.Month)
                    {
                        MessageBox.Show("按日查询不能跨月");
                        return;
                    }
                    beginTime = new DateTime(tmp.Year, tmp.Month, tmp.Day, 8, 0, 0);
                    endTime   = new DateTime(tmp_1.Year, tmp_1.Month, tmp_1.Day, 8, 0, 0);
                }

                //DateTime beginTime = this.dtp_StartTime.Value;
                //DateTime endTime = this.dtp_EndTime.Value;
                if (beginTime > endTime)
                {
                    MessageBox.Show("起始时间不能大于结束时间!");
                    return;
                }
                //if (radioBoard.Checked)
                //{
                //    //station.StationType = radioRain.Checked ? EStationType.ERainFall : EStationType.EHydrology;
                //    string logMsg = String.Format("--------批量传输    目标站点({0:D4})--------- ", int.Parse(sid));
                //    // 写入系统日志
                //    CSystemInfoMgr.Instance.AddInfo(logMsg);
                //    this.listView1.Items.Add(logMsg);
                //    string qry = CPortDataMgr.Instance.SendBoardMsg(station, trans, beginTime, this.m_channelType);

                //    this.listView1.Items.Add(new ListViewItem()
                //    {
                //        Text = String.Format("[{0}]  发送数据:  {1}", this.m_channelType.ToString(), qry)
                //    });
                //}
                //else
                //{
                station.StationType = radioRain.Checked ? EStationType.ERainFall : EStationType.EHydrology;
                string logMsg = String.Format("--------批量传输    目标站点({0:D4})--------- ", int.Parse(sid));
                // 写入系统日志
                CSystemInfoMgr.Instance.AddInfo(logMsg);
                this.listView1.Items.Add(logMsg);
                string qry = CPortDataMgr.Instance.SendFlashMsg(station, trans, beginTime, endTime, this.m_channelType);

                this.listView1.Items.Add(new ListViewItem()
                {
                    Text = String.Format("[{0}]  发送数据:  {1}", this.m_channelType.ToString(), qry)
                });
            }
            //}
        }
Ejemplo n.º 10
0
 public string BuildQuery_Batch(string sid, ETrans trans, DateTime beginTime, EChannelType ctype)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
        private void SendBatchMsg(BatchRequest request)
        {
            this.batchMsg = null;
            this.batchMsg = new BatchMsg()
            {
            };
            this.batchList = new List <BatchData>();
            EStationType stype = request.ReportType == true ? EStationType.ERainFall : EStationType.EHydrology;
            ETrans       trans = request.TransType == true ? ETrans.ByDay : ETrans.ByHour;
            DateTime     st    = Convert.ToDateTime(request.StartTime);
            DateTime     et    = Convert.ToDateTime(request.EndTime);
            DateTime     beginTime;
            DateTime     endTime;

            if (trans == ETrans.ByHour)
            {
                beginTime = new DateTime(
                    year: st.Year,
                    month: st.Month,
                    day: st.Day,
                    hour: st.Hour,
                    minute: 0,
                    second: 0

                    );
                endTime = new DateTime(
                    year: et.Year,
                    month: et.Month,
                    day: et.Day,
                    hour: et.Hour,
                    minute: 0,
                    second: 0

                    );
            }
            else
            {
                beginTime = new DateTime(
                    year: st.Year,
                    month: st.Month,
                    day: st.Day,
                    hour: 8,
                    minute: 0,
                    second: 0

                    );
                endTime = new DateTime(
                    year: st.Year,
                    month: et.Month,
                    day: et.Day,
                    hour: 8,
                    minute: 0,
                    second: 0

                    );
            }

            string query = string.Empty;
            var    gprs  = CPortDataMgr.Instance.FindGprsByUserid(request.Gprsid);

            if (gprs != null)
            {
                uint dtuID = 0;
                if (gprs.FindByID(request.Gprsid, out dtuID))
                {
                    query = gprs.FlashBatch.BuildQuery(request.StationId, stype, trans, beginTime, endTime, EChannelType.GPRS);
                    gprs.SendDataTwiceForBatchTrans(dtuID, query);
                }
            }
            else
            {
                batchMsg = new BatchMsg()
                {
                    NotOL = true
                };
                BatchData error = new BatchData();
                error.StationId = request.StationId;
                error.NotOL     = true;
                this.batchList.Add(error);
                BatchData endInfo = new BatchData();
                endInfo.StationId = endInfo.StationId;
                endInfo.End       = true;
                this.batchList.Add(endInfo);
            }
        }
Ejemplo n.º 12
0
        private void SendBatchReport(BatchRequest request)
        {
            BatchList = null;
            BatchList = new BatchList()
            {
                StationId = request.StationId, TType = request.TransType == true ? BatchList.Types.transType.Byday : BatchList.Types.transType.Byhour, IsOL = true
            };
            EStationType stype = request.ReportType == true ? EStationType.ERainFall : EStationType.EHydrology;
            ETrans       trans = request.TransType == true ? ETrans.ByDay : ETrans.ByHour;
            DateTime     st    = Convert.ToDateTime(request.StartTime);
            DateTime     et    = Convert.ToDateTime(request.EndTime);
            DateTime     beginTime;
            DateTime     endTime;

            if (trans == ETrans.ByHour)
            {
                beginTime = new DateTime(
                    year: st.Year,
                    month: st.Month,
                    day: st.Day,
                    hour: st.Hour,
                    minute: 0,
                    second: 0

                    );
                endTime = new DateTime(
                    year: et.Year,
                    month: et.Month,
                    day: et.Day,
                    hour: et.Hour,
                    minute: 0,
                    second: 0

                    );
            }
            else
            {
                beginTime = new DateTime(
                    year: st.Year,
                    month: st.Month,
                    day: st.Day,
                    hour: 8,
                    minute: 0,
                    second: 0

                    );
                endTime = new DateTime(
                    year: st.Year,
                    month: et.Month,
                    day: et.Day,
                    hour: 8,
                    minute: 0,
                    second: 0

                    );
            }

            string query = string.Empty;
            var    gprs  = CPortDataMgr.Instance.FindGprsByUserid(request.Gprsid);

            if (gprs != null)
            {
                uint dtuID = 0;
                if (gprs.FindByID(request.Gprsid, out dtuID))
                {
                    query = gprs.FlashBatch.BuildQuery(request.StationId, stype, trans, beginTime, endTime, EChannelType.GPRS);
                    gprs.SendDataTwiceForBatchTrans(dtuID, query);
                }
            }
            else
            {
                BatchList.IsOL = false;
            }
        }
Ejemplo n.º 13
0
        public string BuildQuery_Flash(string sid, EStationType stationType, ETrans trans, DateTime beginTime, DateTime endTime, EChannelType ctype)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("\u0001");                                          //  添加首字符
            sb.Append(String.Format("{0:D10}", Int32.Parse(sid.Trim()))); //  添加遥测站地址
            sb.Append(String.Format("{0:D2}", "00"));                     //  添加中心站地址
            sb.Append(String.Format("{0:D4}", "1234"));                   //  添加密码
            sb.Append("\u0002");                                          //  添加单包起始和结束符
            sb.Append("0000");                                            //  添加下行流水号
            sb.Append(timeToString());                                    // 添加发报时间
            int length = 16;                                              //  指令的长度
            //截取时间段的str
            string year  = beginTime.Year.ToString().Substring(2, 2);
            string month = beginTime.Month.ToString();

            if (month.Length < 2)
            {
                month = "0" + month;
            }
            string day = beginTime.Day.ToString();

            if (day.Length < 2)
            {
                day = "0" + day;
            }
            string hour = beginTime.Hour.ToString();

            if (hour.Length < 2)
            {
                hour = "0" + hour;
            }
            string strtMsg = year + month + day + hour;

            year  = endTime.Year.ToString().Substring(2, 2);
            month = endTime.Month.ToString();
            if (month.Length < 2)
            {
                month = "0" + month;
            }
            day = endTime.Day.ToString();
            if (day.Length < 2)
            {
                day = "0" + day;
            }
            hour = endTime.Hour.ToString();
            if (hour.Length < 2)
            {
                hour = "0" + hour;
            }
            string endMsg = year + month + day + hour;

            string msg = strtMsg + endMsg;

            //条件判定 暂时不需要
            if (true)
            {
                sb.Insert(17, "38");//  添加功能码(查询遥测站时段数据)
                sb.Append(msg);
                sb.Append(CSpecialChars.BALNK_CHAR);

                sb.Append("DRN05");
                sb.Append(CSpecialChars.BALNK_CHAR);
                sb.Append("DRP");
                length += 26;
            }
            sb.Insert(19, String.Format("{0:D1}", 8));      //  添加报文标识
            sb.Insert(20, String.Format("{0:X3}", length)); //  添加报文长度
            sb.Append("\u0005");                            //  添加结束符
            string dataMsg = sb.ToString();
            string crcMsg  = CRC.ToCRC16(dataMsg, false);
            string resut   = dataMsg + crcMsg;

            return(resut);
        }