/// <summary> /// 开关 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PowerButton_Click(object sender, EventArgs e) { Button powerBtn = (Button)sender; int groupId = 0; int addressId = 0; HelperTool.GetControllerAddressId(powerBtn.Tag.ToString(), out groupId, out addressId); currentControllerItem = GetCurrentController(groupId, addressId); if (currentControllerItem == null) { return; } byte powerByte = 0x01; if (currentControllerItem.PowerState) { powerByte = 0x00; powerBtn.BackgroundImage = Properties.Resources.powerOff; } else { powerBtn.BackgroundImage = Properties.Resources.powerOn; } currentControllerItem.PowerState = !currentControllerItem.PowerState; byte[] txData = { (byte)currentControllerItem.GroupId, (byte)currentControllerItem.AddressId, 0x10, 0x10, 0x01, powerByte }; SerialPortHelper.SendData(serialPort, txData); }
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) { // 读取控制器信息 ComboBox comboBox = (ComboBox)sender; int groupId = 0; int addressId = 0; HelperTool.GetControllerAddressId(comboBox.Text, out groupId, out addressId); if (groupId == 0 || addressId == 0) { return; } ControllerItem selectedControllerItem = GetCurrentController(groupId, addressId); nameTextBox.Text = selectedControllerItem.Name; zoneTextBox.Text = selectedControllerItem.Zone; panel1.Visible = false; // 读取数据 ReadSelectedComData(groupId, addressId); }
/// <summary> /// Register entity controller. /// </summary> /// <param name="type">Type of entity.</param> /// <param name="controller">Controller name for entity.</param> /// <param name="area">Area name for entity.</param> public void RegisterController(Type type, string controller, string area = null) { if (type == null) { throw new ArgumentNullException("type"); } if (controller == null) { throw new ArgumentNullException("controller"); } if (area != null) { if (_Items.Count(t => t.Area == area.ToLower() && t.Controller == controller.ToLower()) > 0) { throw new ArgumentException("Detected the same route of entity."); } } else { if (_Items.Count(t => t.Controller == controller.ToLower()) > 0) { throw new ArgumentException("Detected the same route of entity."); } } ControllerItem item = new ControllerItem(); item.EntityType = type; item.Controller = controller.ToLower(); if (area != null) { item.Area = area.ToLower(); } _Items.Add(item); }
/// <summary> /// Constructor, initialize the UI /// </summary> public SettingsWindow() { InitializeComponent(); var controllers = Controllers.ListControllers(); var activeControllerName = HexLight.Properties.Settings.Default.Controller; // Populate the listbox cbDrivers.Items.Clear(); //cbDrivers.Items.Add(ControllerItem.NullController); //if (activeControllerName == null || activeControllerName == "") // cbDrivers.SelectedIndex = 0; foreach (var controllerType in controllers) { var item = new ControllerItem(controllerType); cbDrivers.Items.Add(item); if (controllerType.FullName == activeControllerName) { cbDrivers.SelectedItem = item; } } //TODO: Use ValueConverters and Bindings ? }
private void ReadControllerData(SerialPort serialPort, int controllerIndex) { if (controllerIndex < controllerItems.Count()) { controllerToRead = controllerItems[controllerToReadIndex]; SerialPortHelper.ReadAllData(serialPort, controllerToRead.GroupId, controllerToRead.AddressId); } }
private void load() { MessageBoxResult result = MessageBox.Show("¿Desea cargar los datos?", "", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result.Equals(MessageBoxResult.Yes)) { controller = new ControllerItem(); showItemsFromDatabase(); } }
public static string GenerateDocumentPath(ControllerItem controllerItem, ActionItem actionItem) { var path = $"{DocusaurusServiceCollection.Options.DocumentPath}/docs/{controllerItem.Name.ToLower()}_{actionItem.Path.Replace("/", "").ToLower()}.md"; if (path.Contains("{")) { var index = path.IndexOf("{"); path = path.Substring(0, index) + ".md"; } return(path); }
public static string GenerateDocumentName(ControllerItem controllerItem, ActionItem actionItem) { var name = $"{controllerItem.Name.ToLower()}_{actionItem.Path.Replace("/", "").ToLower()}"; if (name.Contains("{")) { var index = name.IndexOf("{"); name = name.Substring(0, index); } return(name); }
/// <summary> /// Unregister entity controller. /// </summary> /// <param name="type">Type of entity.</param> public void UnregisterController(Type type) { if (type == null) { throw new ArgumentNullException("type"); } ControllerItem item = _Items.SingleOrDefault(t => t.EntityType == type); if (item != null) { _Items.Remove(item); } }
private void RenderItem(ControllerItem i) { if (i is Button b) { RenderButton(b); } if (i is Stick s) { RenderStick(s); } if (i is Trigger t) { RenderTrigger(t); } }
private void RenderItem(ControllerItem i, int itemidx) { if (i is Button) { RenderButton(itemidx); } if (i is Stick) { RenderStick(itemidx); } if (i is Trigger) { RenderTrigger(itemidx); } }
/// <summary> /// 发送命令到设备 /// </summary> /// <param name="controllerItem"></param> private void SendSettingToDevice(ControllerItem controllerItem) { controllerItem.SortTimers(); // 起始地址 int startAddress = 0x20; List <byte> txData = new List <byte>() { (byte)controllerItem.GroupId, (byte)controllerItem.AddressId, 0x10, (byte)startAddress, 0x50 }; // 添加关断定时器数据 for (int i = 0; i < maxTimePointCount; i++) { if (i >= controllerItem.OffTimerCount) { txData.AddRange(new byte[] { 0xff, 0xff }); continue; } byte[] minutesBytes = BitConverter.GetBytes(controllerItem.OffTimersMinutes[i]); txData.AddRange(new byte[] { minutesBytes[0], minutesBytes[1] }); } // 添加打开定时器 for (int i = 0; i < maxTimePointCount; i++) { if (i >= controllerItem.OnTimerCount) { txData.AddRange(new byte[] { 0xff, 0xff, 0, 0, 0, 0, 0, 0 }); continue; } byte[] minutesBytes = BitConverter.GetBytes(controllerItem.OnTimersMinutes[i]); txData.AddRange(new byte[] { minutesBytes[0], minutesBytes[1] }); foreach (var item in controllerItem.OnTimersColorValues[i]) { txData.Add((byte)item); } } SerialPortHelper.SendData(serialPort, txData.ToArray()); }
private void LoadControllerItems() { var items = HelperTool.ReadControllersFromFile <ControllerItem>(); if (items != null) { controllersDataGridView.DataSource = items; } controllersDataGridView.Columns["GroupName"].Visible = false; if (items.Count() > 0) { currentControllerItem = items[0]; } }
public void Initialize() { string xmlFileContent = File.ReadAllText(options.XmlFilePath); Doc docsAssembly = Helpers.ParseXml(xmlFileContent); var controllers = Helpers.GetClasses(options.ProjectAssembly); List <ControllerItem> controllerItems = new List <ControllerItem>(); foreach (var controller in controllers) { ControllerItem controllerItem = new ControllerItem(controller); controllerItem.Description = docsAssembly.Members.Member.FirstOrDefault(x => x.Name == $"T:{controller.Namespace}.{controller.Name}").Summary; controllerItem.Description = controllerItem.Description.Trim().Replace("\n", ""); var actions = Helpers.GetMethods(controller); foreach (var action in actions) { ActionItem actionItem = new ActionItem(controllerItem, action); string actionXmlName = $"M:{controller.Namespace}.{controller.Name}.{action.Name}"; actionItem.Description = docsAssembly.Members.Member.FirstOrDefault(x => x.Name == actionXmlName)?.Summary; actionXmlName += "("; var parameters = Helpers.GetParameters(action); foreach (var parameter in parameters) { if (String.IsNullOrEmpty(actionItem.Description)) { actionXmlName += parameter.ParameterType + ","; } bool isVariable = parameter.ParameterType.BaseType == typeof(ValueType); ParameterItem parameterItem = new ParameterItem(parameter); if (!isVariable) { AppendSubProperties(ref parameterItem, parameter); } actionItem.Parameters.Add(parameterItem); } if (String.IsNullOrEmpty(actionItem.Description)) { actionXmlName = actionXmlName.TrimEnd(',') + ")"; actionItem.Description = docsAssembly.Members.Member.FirstOrDefault(x => x.Name == actionXmlName)?.Summary; } actionItem.Description = actionItem.Description?.Trim().Replace("\n", ""); controllerItem.Actions.Add(actionItem); } controllerItems.Add(controllerItem); } options.DocumentWriter.WriteDocument(controllerItems); }
private void AddButton_Click(object sender, EventArgs e) { AddControllerFrom addControllerFrom = new AddControllerFrom(); addControllerFrom.PassGroupAddressId = (int groupId, int addressId, string name, string zone) => { ControllerItem controllerItem = new ControllerItem() { Name = name, Zone = zone, GroupId = groupId, AddressId = addressId }; var items = HelperTool.ReadControllersFromFile <ControllerItem>().ToList(); foreach (var item in items) { if (item.GroupId == groupId && item.AddressId == addressId) { MessageBox.Show("已经添加,不能重复添加!"); return(false); } } items.Add(controllerItem); Stream stream = File.Open("controllers.dat", FileMode.Open); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(stream, items.ToArray()); stream.Close(); currentPageIndex = 0; controllerItems.Add(controllerItem); LoadControllerItems(controllerItems.ToArray(), 0); return(true); }; addControllerFrom.StartPosition = FormStartPosition.CenterParent; addControllerFrom.ShowDialog(); }
/// <summary> /// 导入配置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ImportButton_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "*.dat|*.dat"; if (openFileDialog.ShowDialog() == DialogResult.OK) { Stream stream = File.Open(openFileDialog.FileName, FileMode.Open); BinaryFormatter binaryFormatter = new BinaryFormatter(); ControllerItem controllerItem = binaryFormatter.Deserialize(stream) as ControllerItem; stream.Close(); // 发送到灯具 SendSettingToDevice(controllerItem); ReadSelectedComData(controllerItem.GroupId, controllerItem.AddressId); } }
public SettingControllerForm(SerialPort serialPort, ControllerItem controllerItem, ControllerItem[] controllerItems) { InitializeComponent(); refreshSettingDisplay = RefreshSettingDisplay; this.serialPort = serialPort; this.currentControllerItem = controllerItem; this.controllerItems = controllerItems; this.trackBars = new TrackBar[] { trackBar1, trackBar2, trackBar3, trackBar4, trackBar5 }; this.labels = new Label[] { label8, label9, label10, label11, label12 }; // 控制器列表 foreach (var item in HelperTool.ReadControllersFromFile <ControllerItem>().OrderBy(m => m.GroupId)) { comboBox1.Items.Add(item.GroupId + "," + item.AddressId); } comboBox1.Text = currentControllerItem.GroupId + "," + currentControllerItem.AddressId; }
/// <summary> /// 选择控制器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void controllersDataGridView_CurrentCellChanged(object sender, EventArgs e) { DataGridView dataGridView = (DataGridView)sender; var items = HelperTool.ReadControllersFromFile <ControllerItem>(); if (items == null || items.Count() == 0) { return; } if (dataGridView.CurrentRow == null) { return; } Console.WriteLine("选择了第 {0} 行!", dataGridView.CurrentRow.Index); currentControllerItem = items[dataGridView.CurrentRow.Index]; // 读取当前设备的设置 ReadCurrentControllerAllData(currentControllerItem); }
private void CreateTimePointList(ControllerItem item) { //if (item.OnTimersMinutes == null) //{ // CreateAddTimePointRow(timePanel, new Point(7, 20 + 0), rowHeight, "Add Time Point", 0, addTurnOnTimePointBtnTag); // return; //} //if (item.OffTimersMinutes == null) //{ // CreateAddTimePointRow(timePanel, new Point(299, 20 + 0), rowHeight, "Add Turn Off Time", 299, addTurnOffTimePointBtnTag); // return; //} timePanel.Controls.Clear(); turnOffTimerLabels.Clear(); turnOnTimerLabels.Clear(); // 创建打开定时器 for (int i = 0; i < item.OnTimersMinutes.Count; i++) { var onTimer = item.OnTimersMinutes[i]; CreateTimePointRow(timePanel, 10000, i, rowHeight, HelperTool.ConverMinutes2DateTime(onTimer), 0); } // 创建增加打开定时器按钮 CreateAddTimePointRow(timePanel, new Point(7, 20 + item.OnTimersMinutes.Count * rowHeight), rowHeight, "Add Time Point", 0, addTurnOnTimePointBtnTag); // 创建关闭定时器 for (int i = 0; i < item.OffTimersMinutes.Count; i++) { var offTimer = item.OffTimersMinutes[i]; CreateTimePointRow(timePanel, 20000, i, rowHeight, HelperTool.ConverMinutes2DateTime(offTimer), 299); } // 创建增加关闭定时器按钮 CreateAddTimePointRow(timePanel, new Point(299, 20 + item.OffTimersMinutes.Count * rowHeight), rowHeight, "Add Turn Off Time", 299, addTurnOffTimePointBtnTag); }
private void RenderItem(ControllerItem i) { if (i is Button b) { RenderButton(b); } if (i is RangeButton rb) { RenderRangeButton(rb); } if (i is Stick s) { RenderStick(s); } if (i is Trigger t) { RenderTrigger(t); } if (i is Detail d) { RenderDetail(d); } }
static void Main(string[] args) { int pilihan = 0; Item item = new Item(); MyContext _context = new MyContext(); Console.WriteLine("==========Item Data=========="); Console.WriteLine("1. Mangae Suppliers"); Console.WriteLine("2. Manage Items"); Console.WriteLine("3. Transaction"); Console.WriteLine("===================================="); Console.Write("Pilihanmu : "); pilihan = int.Parse(Console.ReadLine()); Console.WriteLine("===================================="); switch (pilihan) { case 1: ControllerSupplier bebas = new ControllerSupplier(); bebas.ManageSupplier(); break; case 2: ControllerItem namanyaapa = new ControllerItem(); namanyaapa.ManageItem(); break; case 3: controllerTransaction bingung = new controllerTransaction(); bingung.ManageTransaction(); break; default: Console.WriteLine("Your Choice is not found, try again see you later good bye."); break; } Console.Read(); }
/// <summary> /// 设置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SettingButton_Click(object sender, EventArgs e) { Button settingBtn = (Button)sender; int groupId = 0; int addressId = 0; HelperTool.GetControllerAddressId(settingBtn.Tag.ToString(), out groupId, out addressId); currentControllerItem = GetCurrentController(groupId, addressId); if (currentControllerItem == null) { return; } SettingControllerForm settingControllerForm = new SettingControllerForm(serialPort, currentControllerItem, controllerItems.ToArray()); settingControllerForm.saveSetting = () => { // 刷新控制器列表 Invoke(reLoadControllerItems); }; settingControllerForm.ShowDialog(); }
public ControllerData(ControllerItem controller, byte[] data) { Controller = controller; Data = data; }
private void SpawnControllerListenerTask() { Task.Run(() => { lock (m_lock) { try { m_controllerListener = new TcpListener(IPAddress.Any, m_settingsModel.ControllerPort); m_controllerListener.AllowNatTraversal(true); m_controllerListener.Start(); } catch { m_controllerListener = null; return; } } Program.SaveWriteLine("* Listening for controller clients on port: " + m_settingsModel.ControllerPort); while (m_running) { try { var client = m_controllerListener.AcceptTcpClient(new TimeSpan(1000)); var tokenBytes = new byte[TOKEN_SIZE]; var stream = client.GetStream(); var tokenSize = stream.Read(tokenBytes, 0, TOKEN_SIZE); if (tokenSize == TOKEN_SIZE) { var ascii = new ASCIIEncoding(); var token = ascii.GetString(tokenBytes); if (token == m_settingsModel.Token) { token = Guid.NewGuid().ToString(); if (token.Length < TOKEN_SIZE) for (int i = token.Length; i < TOKEN_SIZE; ++i) token += " "; else if (token.Length > TOKEN_SIZE) token = token.Substring(0, TOKEN_SIZE); lock (m_controllerClientsLock) { if (m_controllerClients.ContainsKey(token)) stream.WriteByte(0); else { var permissionsBytes = new byte[4]; stream.Read(permissionsBytes, 0, 4); m_controllerClients[token] = new ControllerItem(token, client, (ControllerPermissions)BitConverter.ToInt32(permissionsBytes, 0)); tokenBytes = ascii.GetBytes(token); stream.Write(tokenBytes, 0, tokenBytes.Length); Program.SaveWriteLine("* Controller connected: " + token); client.ReceiveTimeout = 1000; client.NoDelay = true; SpawnControllerReceiverTask(token); } } } } } catch { } Thread.Sleep(100); } lock (m_lock) { if (m_controllerListener != null) m_controllerListener.Stop(); m_controllerListener = null; } Program.SaveWriteLine("* Stop listening for controller clients"); }); }
private void ReadCurrentControllerAllData(ControllerItem controllerItem) { byte[] txData = { (byte)controllerItem.GroupId, (byte)controllerItem.AddressId, 0x03, 0x10, (byte)dataToRead }; SendData(txData, false); }
/// <summary> /// 解析数据 /// </summary> /// <param name="controllerItem"></param> /// <param name="rcDataLength"></param> /// <param name="reDatas"></param> private void ParseReData(ref ControllerItem controllerItem, int rcDataLength, byte[] reDatas) { if (rcDataLength == 0) { return; } if (isReadAll == false) { return; } receDataLength = receDataLength + rcDataLength; Console.WriteLine("接收数据长度:" + receDataLength); if (recData == null) { recData = new List <byte>(); } recData.AddRange(reDatas); if ((receDataLength + 1) == (headLength + dataToRead + checkCodeLength)) { receDataLength = -1; // 接收完毕,开始解析 int startIndex = 5; // 解析开关状态 controllerItem.PowerState = recData[startIndex] == 0 ? false : true; // 解析各路数据 controllerItem.LightsColorValues = new List <int>(); for (int i = 0; i < 6; i++) { startIndex = startIndex + 2; int prev = (recData[startIndex] << 8); int next = recData[startIndex - 1]; controllerItem.LightsColorValues.Add(prev | next); } startIndex = startIndex + 4; // 解析关闭定时器 controllerItem.OffTimerCount = 0; controllerItem.OffTimersMinutes = new List <int>(); for (int i = 0; i < 8; i++) { if (recData[startIndex + 1] == 255 || recData[startIndex] == 255) { startIndex = startIndex + 2; continue; } int prev = (recData[startIndex + 1] << 8); int next = recData[startIndex]; controllerItem.OffTimersMinutes.Add(prev | next); startIndex = startIndex + 2; controllerItem.OffTimerCount++; } // 解析打开定时器 controllerItem.OnTimerCount = 0; controllerItem.OnTimersMinutes = new List <int>(); controllerItem.OnTimersColorValues = new List <List <int> >(); for (int i = 0; i < 8; i++) { if (recData[startIndex + 1] == 255 || recData[startIndex] == 255) { startIndex = startIndex + 8; continue; } int prev = (recData[startIndex + 1] << 8); int next = recData[startIndex]; controllerItem.OnTimersMinutes.Add(prev | next); List <int> colorValues = new List <int>(); for (int j = 0; j < 6; j++) { colorValues.Add(recData[startIndex + 2]); startIndex = startIndex + 1; } controllerItem.OnTimersColorValues.Add(colorValues); controllerItem.OnTimerCount++; startIndex = startIndex + 2; } Console.WriteLine("解析完毕"); recData = null; //// 颜色条设置 Invoke(setTrackBar, currentControllerItem.LightsColorValues); //// 设置关闭定时器信息 Invoke(setOffTimerDataGridView, currentControllerItem.OffTimerCount, currentControllerItem.OffTimersMinutes); //// 设置打开定时器信息 Invoke(setOnTimerDataGridView, currentControllerItem.OnTimerCount, currentControllerItem.OnTimersMinutes, currentControllerItem.OnTimersColorValues); } }
private void DrawChart(ControllerItem item) { List <LineModel> lineModels = new List <LineModel>(); for (int i = 0; i < item.OnTimerCount; i++) { var model = new LineModel() { XAxis = item.OnTimersMinutes[i], IsTurnOn = true, ColorPercent = item.OnTimersColorValues[i] }; lineModels.Add(model); } for (int i = 0; i < item.OffTimerCount; i++) { var model = new LineModel() { XAxis = item.OffTimersMinutes[i], IsTurnOn = false, ColorPercent = new List <int>(channelNum) { 0, 0, 0, 0 } }; lineModels.Add(model); } lineModels.Sort((x, y) => x.XAxis.CompareTo(y.XAxis)); if (lineModels == null || lineModels.Count <= 0) { return; } timePointChart.Series.Clear(); for (int i = 0; i < channelNum; i++) { Series series = timePointChart.Series.Add("Channel" + i.ToString()); series.ChartType = SeriesChartType.Line; series.MarkerStyle = MarkerStyle.Circle; series.XAxisType = AxisType.Primary; series.Points.Add(new DataPoint(0, lineModels[lineModels.Count - 1].ColorPercent[i])); series.Points.Add(new DataPoint(lineModels[0].XAxis, lineModels[lineModels.Count - 1].ColorPercent[i])); for (int j = 0; j < lineModels.Count; j++) { var model = lineModels[j]; series.Points.Add(new DataPoint(model.XAxis, model.ColorPercent[i])); if (j + 1 < lineModels.Count) { series.Points.Add(new DataPoint(lineModels[j + 1].XAxis, model.ColorPercent[i])); } } series.Points.Add(new DataPoint(1439, lineModels[lineModels.Count - 1].ColorPercent[i])); } }