private DataItem getCYWriteDataAskItem(byte[] buffer) { IdentityCode identityCode = MyDataConvert.get数据表示符(buffer); DataItem item = null; switch (identityCode) { case IdentityCode.设置服务器信息: item = new DataItem_C104(buffer); break; case IdentityCode.设置上传周期: item = new DataItem_C105(buffer); break; case IdentityCode.设置切断报警参数: item = new DataItem_C103(buffer); break; case IdentityCode.修正表数据: item = new DataItem_C102(buffer); break; case IdentityCode.设置公称流量: item = new DataItem_C101(buffer); break; case IdentityCode.换表: item = new DataItem_C107(buffer); break; } return(item); }
private void btn_c105_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.txt_xx.Text) || string.IsNullOrEmpty(this.txt_yy.Text) || string.IsNullOrEmpty(this.txt_zz.Text)) { MessageBox.Show("上传周期不能为空"); return; } ReportCycleType type = (ReportCycleType)(Convert.ToInt32(this.combox_SBtype.SelectedValue)); int xx = int.Parse(this.txt_xx.Text.Trim()); int yy = int.Parse(this.txt_yy.Text.Trim()); int zz = int.Parse(this.txt_zz.Text.Trim()); DataItem item = new DataItem_C105(00, type, xx, yy, zz); CYWriteDataCmdSend(item); }
/// <summary> /// 设置上传周期 /// </summary> /// <param name="info"></param> /// <param name="meter"></param> /// <returns></returns> public string SetUploadCycle(IoT_SetUploadCycle info, IoT_UploadCycleMeter meter) { string result = ""; try { MongoDBHelper <Task> mongo_task = new MongoDBHelper <Task>(); Task task = new Task(); task.MeterMac = meter.MeterNo.Trim(); task.TaskDate = QuShi.getDate(); task.TaskID = Guid.NewGuid().ToString(); //用于和指令进行进行关联 task.TaskState = TaskState.Waitting; task.TaskType = TaskType.TaskType_设置上传周期; // //写任务 mongo_task.Insert(CollectionNameDefine.TaskCollectionName, task); meter.TaskID = task.TaskID; /*上传周期模式: * 00:以月为周期,在每个月的XX日YY时ZZ分上传数据; * 01:以XX天为周期,在每XX天的YY时ZZ分上传数据,起点为每月的01日00时00分; * 02:以YY时为周期,在每YY小时的ZZ分上传数据,起点为每天的00时00分; * 03:以燃气表启动开始计时,以XX日YY时ZZ分上传数据 */ ReportCycleType cycleType = ReportCycleType.时周期; if (info.ReportType == "00") { cycleType = ReportCycleType.月周期; } else if (info.ReportType == "01") { cycleType = ReportCycleType.天周期; } else if (info.ReportType == "02") { cycleType = ReportCycleType.时周期; } else if (info.ReportType == "03") { cycleType = ReportCycleType.周期采集; } /*周期参数, * DD 天 范围:00-31 * HH 小时 范围:00-23 * MM 分钟 范围:00-59*/ int DD = 1; int HH = 23; int MM = 59; try { DD = Convert.ToInt32(info.Par.Substring(0, 2)); HH = Convert.ToInt32(info.Par.Substring(2, 2)); MM = Convert.ToInt32(info.Par.Substring(4, 2)); } catch { } //2.设置上传周期 DataItem_C105 item_C105 = new DataItem_C105(Convert.ToByte(new Random().Next(0, 255)), cycleType, DD, HH, MM); item_C105.type = (ReportCycleType)Convert.ToByte(info.ReportType); item_C105.XX = Convert.ToUInt16(info.Par.Substring(0, 2)); item_C105.YY = Convert.ToUInt16(info.Par.Substring(2, 2)); item_C105.ZZ = Convert.ToUInt16(info.Par.Substring(4, 2)); Command cmd = new Command(); cmd.TaskID = task.TaskID; cmd.Identification = ((UInt16)item_C105.IdentityCode).ToString("X2"); cmd.ControlCode = (byte)ControlCode.CYWriteData;//设置参数 cmd.DataLength = Convert.ToByte(item_C105.Length); cmd.DataCommand = MyDataConvert.BytesToHexStr(item_C105.GetBytes()); cmd.Order = 2; CommandDA.Insert(cmd); } catch (Exception e) { result = e.Message; } return(result); }