//write to the channel public bool WriteChannel(int[] colorChannel, string input, DmxDriver dmxControl) { int tempVal = 0; for (int i = 0; i < colorChannel.Length; i++) { if (int.TryParse(input, out tempVal)) { tempVal = Clamp(tempVal, 0, 255); dmxControl.ChangeValue(colorChannel[i], (byte)tempVal); } else if (input.ToLower() == "on") { dmxControl.ChangeValue(colorChannel[i], 255);//channel tempVal = 255; } else if (input.ToLower() == "off") { dmxControl.ChangeValue(colorChannel[i], 0); tempVal = 0; } else { Console.WriteLine("Invalid Input"); return(false); } } dmxControl.SendData(); return(true); }
private void Write(string[] args, DmxDriver dmxControl) { //arg 0 is base command, 1 is address, 2 is value int address = 0, value = 0; if (int.TryParse(args[1], out address)) { if (int.TryParse(args[2], out value)) { dmxControl.ChangeValue(address, (byte)value); } else if (args[2].ToLower() == "on") { dmxControl.ChangeValue(address, 255);//channel } else if (args[2].ToLower() == "off") { dmxControl.ChangeValue(address, 0); } else { Console.WriteLine("Invalid Input"); } } dmxControl.SendData(); }
private bool WriteAll(string input, DmxDriver dmxControl) { int tempVal = 0; for (int i = 1; i < 512; i++) { if (int.TryParse(input, out tempVal)) { tempVal = Clamp(tempVal, 0, 255); dmxControl.ChangeValue(i, (byte)tempVal); } else if (input.ToLower() == "on") { dmxControl.ChangeValue(i, 255);//channel tempVal = 255; } else if (input.ToLower() == "off") { dmxControl.ChangeValue(i, 0); tempVal = 0; } else { Console.WriteLine("Invalid Input"); return(false); } } dmxControl.SendData(); return(true); }
static void Main(string[] args) { // Random rand = new Random(); dmxControl = new DmxDriver(0); dmxControl.OpenPort(); CommandParser commandParser = new CommandParser(); //if port is closed, try to open every second while (!dmxControl.device.IsOpen) { dmxControl.OpenPort(); Thread.Sleep(TimeSpan.FromSeconds(1)); } // Pulse(); while (true) { commandParser.Parse(Console.ReadLine(), dmxControl); } }
public void Parse(string input, DmxDriver dmxControl) { string[] args = input.Split(' '); //to do, remove blanks //move all write commands to case write. cant currently write custom groups //make command to display range switch (args[0].ToLower()) { case "write": if (args.Length > 1) { switch (args[1].ToLower()) { case "1": // channel, NEED TO GET INT if (!FullCommand(args, 3)) { break; } Write(args, dmxControl); break; case "range": if (!FullCommand(args, 3)) { break; } WriteRange(args[2], dmxControl); break; case "all": if (!FullCommand(args, 3)) { break; } WriteAll(args[2], dmxControl); break; default: Console.WriteLine("Invalid Input"); break; } } else { Console.WriteLine("Invalid Input"); } break; case "set": if (args.Length > 1) { switch (args[1].ToLower()) { case "range": SetRange(args); break; case "group": SetChannel(args); break; default: Console.WriteLine("Invalid Input"); break; } } else { Console.WriteLine("Invalid Input"); } break; case "mode": if (!FullCommand(args, 2)) { break; } if (args[1].ToLower() == "inclusive" || args[1].ToLower() == "i") { mode = "Inclusive"; } else if (args[1].ToLower() == "exclusive" || args[1].ToLower() == "e") { mode = "Exclusive"; } break; case "range": Console.WriteLine("Range: " + rangeStart + "-" + rangeEnd); break; case "groups": ShowChannels(); break; case "clear": Console.Clear(); break; case "device": dmxControl.PrintDeviceData(); break; case "help": case "?": case "/h": HelpCommand(); break; case "quit": Environment.Exit(0); break; case "open": dmxControl.OpenPort(); Console.WriteLine("Port Opened"); break; case "close": dmxControl.ClosePort(); Console.WriteLine("Port Closed"); return; case "startcode": if (args.Length > 1) { int parsedCode = 0; if (int.TryParse(args[1], out parsedCode)) { dmxControl.StartCode = (byte)parsedCode; } else { Console.WriteLine("Invalid Input"); } } else { Console.WriteLine("Current Start Code: " + dmxControl.StartCode); } break; default: Console.WriteLine("Invalid Input"); return; } //UpdateData(); }