//示例: $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()); }
// 批量数据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); }
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) }); }
// 批量数据主板下行 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("无对应站点包序号!"); } }
// 批量数据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()); }
// 批量数据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()); }
public string BuildQuery_Flash(string sid, EStationType stationType, ETrans trans, DateTime beginTime, DateTime endTime, EChannelType ctype) { throw new NotImplementedException(); }
public String BuildQuery_Batch(string sid, ETrans trans, DateTime beginTime, EChannelType ctype) { return(""); }
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) }); } //} }
public string BuildQuery_Batch(string sid, ETrans trans, DateTime beginTime, EChannelType ctype) { throw new NotImplementedException(); }
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); } }
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; } }
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); }