示例#1
0
        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]);
        }
示例#2
0
        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];
        }
示例#3
0
        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;
            }
        }