/// <summary> /// Accepts a command from an external thread. /// </summary> /// <param name="aCmd"></param> public void AcceptCmd(object aCmd) { lock (this.cmdInput) { // Possibly add to a Que structure for higher performance/less bottle neck this.currentCmd = (Command)aCmd; iCmdToService = true; } }
// Sets the command private void cmd(object obj) { Command newCmd = (Command)obj; if ( newCmd.Device == "LED" ) { lock (this) { this.iCmd = newCmd; } return; } }
public CommandEventArgs(Command command) { Command = command; this.ReturnString = "Returning this string"; }
private bool RGO_LED_ACTION(Devices.RGO_LED rgoled, Command cmd ) { // Need ability for controlled flashing of LED via a format found in cmd.Arguments switch (cmd.Action.ToLower()) { case "red": rgoled.Red(); return true; case "green": rgoled.Green(); return true; case "amber": rgoled.Amber(); return true; case "off": rgoled.Off(); return true; default: rgoled.Off(); return false; } }
private bool OUTPUT_RELAY_ACTION(Devices.OutputRelay outputrelay, Command cmd) { switch (cmd.Action.ToLower()) { case "on": outputrelay.On(); return true; case "off": outputrelay.Off(); return true; default: return false; } }
/// <summary> /// Starts the server. /// </summary> private void StartServer() { using (var server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { server.Bind(new IPEndPoint(IPAddress.Any, this.Port)); server.Listen(1); while (!cancel) { using (Socket connection = server.Accept()) { if (connection.Poll(-1, SelectMode.SelectRead)) { // Create buffer and receive raw bytes. byte[] bytes = new byte[connection.Available]; int count = connection.Receive(bytes); Byte[] bytesToSend; // Convert to string, will include HTTP headers. string rawData = new string(Encoding.UTF8.GetChars(bytes)); Command aCmd = new Command(rawData); bytesToSend = Encoding.UTF8.GetBytes("ACK"); this.serverDel(aCmd); connection.Send(bytesToSend, bytesToSend.Length, 0); } } } } }