private void lbxPlanId_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { List<Plan> lp = td.ListPlan; Plan p1 = new Plan(); foreach(Plan p in lp) { for (int i = 21; i <= 30;i++ ) { if (!(p.ucId == i) && !lbxPlanId.Items.Contains(Convert.ToByte(i))) { p1.ucId = Convert.ToByte(i); p1.ucScheduleId = 1; p1.usMonthFlag = 0; p1.ucWeekFlag = 0; p1.ulDayFlag = 0; break; } } break; } if (p1.ucId <= 30 && p1.ucId >=21) { lbxPlanId.Items.Add(p1.ucId); lp.Add(p1); } }
/// <summary> /// 返回所有的时基表数据 /// </summary> /// <returns></returns> public static List<Plan> GetPlan() { TscData td = (TscData)Application.Current.Properties[Define.TSC_DATA]; byte[] byt = Udp.recvUdp(td.Node.sIpAddress, Define.GBT_PORT, Define.GET_PLAN); if (!CheckGBT(byt, "时基")) { return null; } List<Plan> listPlan = new List<Plan>(); //取得) byte[] planArray = new byte[Convert.ToInt32(byt[3])*9]; Array.Copy(byt, 4, planArray, 0, Convert.ToInt32(byt[3])*9); byte[,] twoArray = ByteUtils.oneArray2TwoArray(planArray, Convert.ToInt32(byt[3]), 9); Plan plan; for (int i = 0; i < Convert.ToInt32(byt[3]); i++) { plan = new Plan(); plan.ucId = twoArray[i, 0]; plan.usMonthFlag = (ushort)((twoArray[i, 1] << 8) + twoArray[i, 2]);//<<是移位符 21930; plan.ucWeekFlag = twoArray[i, 3]; plan.ulDayFlag = (uint)((twoArray[i, 4] << 24) + (twoArray[i, 5] << 16) + (twoArray[i, 6] << 8) + twoArray[i, 7]); plan.ucScheduleId = twoArray[i, 8]; listPlan.Add(plan); } return listPlan; }
private void calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { SelectedDatesCollection sdc = calendar.SelectedDates; List<Plan> lp = t.ListPlan; Plan pt = new Plan(); foreach (Plan p in lp) { if(p.ucId == sldPlanId.Value) { p.ucId = Convert.ToByte(sldPlanId.Value); p.ucWeekFlag = 0xfe; uint d = 0; ushort m = 0; p.ucScheduleId = Convert.ToByte(cbxScheduleId.SelectedItem); foreach (DateTime dt in sdc) { int month = dt.Month; int day = dt.Day; d = (uint)((1 << day) | d); m = (ushort)((1 << month) | m); p.usMonthFlag = m; p.ulDayFlag = d; } } else { if (p.ucId >= 1 && p.ucId <= 20) { pt.ucId = Convert.ToByte(sldPlanId.Value); pt.ucWeekFlag = 0xfe; uint d = 0; ushort m = 0; pt.ucScheduleId = Convert.ToByte(cbxScheduleId.SelectedItem); foreach (DateTime dt in sdc) { int month = dt.Month; int day = dt.Day; d = (uint)((1 << day) | d); m = (ushort)((1 << month) | m); pt.usMonthFlag = m; pt.ulDayFlag = d; } } break; } } if(pt.ucId == Convert.ToByte(sldPlanId.Value)) { lp.Add(pt); } }
private void lbxPlanId_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { List<Plan> lp = t.ListPlan; Plan pt = new Plan(); foreach(Plan p in lp) { for(byte i=31; i<=40;i++) { if (!lbxPlanId.Items.Contains(i) && !(p.ucId == i)) { pt.ucId = i; pt.ucScheduleId = Convert.ToByte(cbxScheduleId.SelectedItem); pt.ucWeekFlag = 254; pt.ulDayFlag = 4294967294; pt.usMonthFlag = 0; break; } } break; } if(pt.ucId >=31 && pt.ucId <= 40) { lbxPlanId.Items.Add(pt.ucId); lp.Add(pt); } }
/// <summary> /// 将Plan时基转换成byte[] /// </summary> /// <param name="p"></param> /// <returns></returns> public static byte[] Plan2ByteArray(Plan p) { byte[] b = new byte[Define.PLAN_BYTE_SIZE]; b[0] = p.ucId; //byte[] bm = new byte[2]; byte[] bmonth = System.BitConverter.GetBytes(p.usMonthFlag); b[1] = bmonth[1]; b[2] = bmonth[0]; b[3] = p.ucWeekFlag; byte[] bday = System.BitConverter.GetBytes(p.ulDayFlag); b[4] = bday[3]; b[5] = bday[2]; b[6] = bday[1]; b[7] = bday[0]; b[8] = p.ucScheduleId; return b; }