public AsyncSerial Connect(int port, int baud = 2400, Parity parity = Parity.None, int dataBits = 8, StopBits stopBits = StopBits.One, string newLine = "\r") { if (ports.ContainsKey(port)) { AsyncSerial serial = ports[port]; if (!(serial.Baud == baud && serial.Parity == parity && serial.DataBits == dataBits && serial.StopBits == stopBits && serial.NewLine == newLine)) { serial.Close(); serial = new AsyncSerial("COM" + port, baud, parity, dataBits, stopBits, newLine); ports[port] = serial; } } else { var serial = new AsyncSerial("COM" + port, baud, parity, dataBits, stopBits, newLine); serial.OnIncomingLine += new IncomingLineHandler(serial_OnIncomingLine); ports.Add(port, serial); } return(ports[port]); }
public AsyncSerial Connect(int port, int baud = 2400, Parity parity = Parity.None, int dataBits = 8, StopBits stopBits = StopBits.One, string newLine = "\r") { if (ports.ContainsKey(port)) { AsyncSerial serial = ports[port]; if (!(serial.Baud == baud && serial.Parity == parity && serial.DataBits == dataBits && serial.StopBits == stopBits && serial.NewLine == newLine)) { serial.Close(); serial = new AsyncSerial("COM" + port, baud, parity, dataBits, stopBits, newLine); ports[port] = serial; } } else { var serial = new AsyncSerial("COM" + port, baud, parity, dataBits, stopBits, newLine); serial.OnIncomingLine += new IncomingLineHandler(serial_OnIncomingLine); ports.Add(port, serial); } return ports[port]; }
static void listener_RequestReceived(object sender, RequestEventArgs e) { IHttpClientContext context = (IHttpClientContext)sender; IHttpRequest request = e.Request; IHttpResponse response = request.CreateResponse(context); StreamWriter writer = new StreamWriter(response.Body); response.AddHeader("Content-type", "text/plain"); response.AddHeader("Access-Control-Allow-Methods", "*"); response.AddHeader("Access-Control-Allow-Origin", "*"); string endpoint = (request.UriParts.Length > 0? request.UriParts[0] : ""); int to = 0; int.TryParse((request.UriParts.Length > 1 ? request.UriParts[1] : ""), out to); string id = ""; AsyncSerial toSerial = null; if (to != 0) { if (request.QueryString.Contains("baud") || request.QueryString.Contains("parity") || request.QueryString.Contains("dataBits") || request.QueryString.Contains("stopBits") || request.QueryString.Contains("newLine")) { // TODO toSerial = bus.Connect(to); } else { toSerial = bus.Connect(to); } } switch (endpoint) { case "": writer.Write("SerialServe is running! Check out the documentation on GitHub."); writer.Flush(); response.Send(); break; case "list": writer.Write("[" + string.Join(",", bus.Ports) + "]"); writer.Flush(); response.Send(); break; case "write": try { toSerial.Write(request.QueryString["toWrite"].ToString()); writer.Write("{\"success\":true}"); writer.Flush(); response.Send(); } catch { response.Status = System.Net.HttpStatusCode.BadRequest; writer.Write("{\"error\":\"Could not write to the requested port.\"}"); writer.Flush(); response.Send(); } break; case "enable": case "disable": try { if (endpoint == "enable") { toSerial.DtsEnable(); } else { toSerial.DtsDisable(); } writer.Write("{\"success\":true}"); writer.Flush(); response.Send(); } catch { response.Status = System.Net.HttpStatusCode.BadRequest; writer.Write("{\"error\":\"Could not change the state of the requested port.\"}"); writer.Flush(); response.Send(); } break; case "read": if (!longpollConnections.ContainsKey(to)) { longpollConnections[to] = new AssociativeArray <string, List <IHttpResponse> >(); } if (!longpollConnections[to].ContainsKey(id)) { longpollConnections[to][id] = new List <IHttpResponse>(); } longpollConnections[to][id].Add(response); break; default: response.Status = System.Net.HttpStatusCode.NotFound; writer.Write("Not found!"); writer.Flush(); response.Send(); break; } }