static void Main(string[] args) { inputSimulator = new InputSimulator(); var boxes = SerialPortDetector.GetSerialPortBoxes(); Console.WriteLine("Ready"); foreach (var box in boxes) { box.OnButtonChange += Box_OnButtonChange; } Console.ReadLine(); foreach (var box in boxes) { box.Stop(); } }
public SerialPort GetSerialPort() { SerialPort port = null; if (String.IsNullOrEmpty(SerialPortName)) { Console.WriteLine("Serial port not specified. Detecting."); var detector = new SerialPortDetector(); port = detector.Detect(); SerialPortName = port.PortName; } else { Console.WriteLine("Serial port specified"); port = new SerialPort(SerialPortName, SerialBaudRate); } return(port); }
public static void Main(string[] args) { var arguments = new Arguments(args); IsVerbose = arguments.Contains("v"); var userId = GetConfigValue(arguments, "UserId"); var pass = GetConfigValue(arguments, "Password"); var host = GetConfigValue(arguments, "Host"); var deviceName = GetConfigValue(arguments, "DeviceName"); var serialPortName = GetConfigValue(arguments, "SerialPort"); var serialBaudRate = Convert.ToInt32(GetConfigValue(arguments, "SerialBaudRate")); var topicPrefix = "/" + userId; var useTopicPrefix = Convert.ToBoolean(ConfigurationSettings.AppSettings["UseTopicPrefix"]); SerialPort port = null; if (String.IsNullOrEmpty(serialPortName)) { Console.WriteLine("Serial port not specified. Detecting."); var detector = new SerialPortDetector(); port = detector.Detect(); serialPortName = port.PortName; } else { Console.WriteLine("Serial port specified"); port = new SerialPort(serialPortName, serialBaudRate); } Console.WriteLine("Device name: " + GetConfigValue(arguments, "DeviceName")); Console.WriteLine("Port name: " + serialPortName); var deviceTopic = "/" + deviceName; if (useTopicPrefix) { deviceTopic = topicPrefix + deviceTopic; } Console.WriteLine(deviceTopic + "/[Key]"); if (port == null) { Console.WriteLine("Error: Device port not found."); } else { Console.WriteLine("Serial port: " + port.PortName); Client = new SerialClient(port); try { Client.Open(); Console.WriteLine(Client.Read()); var isRunning = true; var mqttClient = new MqttClient(host); var clientId = Guid.NewGuid().ToString(); mqttClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived; mqttClient.Connect(clientId, userId, pass); var subscribeTopics = GetSubscribeTopics(arguments); foreach (var topic in subscribeTopics) { mqttClient.Subscribe(new string[] { topic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); } while (isRunning) { var output = ""; /*while (!output.Contains(";;")) * { * // Thread.Sleep(1); * output += Client.Read (); * }*/ //Console.WriteLine("----- Serial output"); //Console.WriteLine(output); //Console.WriteLine("-----"); var topics = new List <string>(); //Publish (arguments, mqttClient, output, topics); //Thread.Sleep(10); } Client.Close(); } catch (IOException ex) { Console.WriteLine("Error: Please ensure device is connected to port '" + serialPortName + "' and not already in use.\n\n" + ex.Message); } } }
public void Run() { DevicesDirectory = Path.GetFullPath(DevicesDirectory); Console.WriteLine("Devices directory:"); Console.WriteLine(DevicesDirectory); Console.WriteLine("Device Name: " + DeviceName); Console.WriteLine("MQTT Host: " + MqttHost); Console.WriteLine("MQTT Username: "******"MQTT Port: " + MqttPort); LoadDeviceList(); SerialPort port = null; if (String.IsNullOrEmpty(SerialPortName)) { Console.WriteLine("Serial port not specified. Detecting."); var detector = new SerialPortDetector(); port = detector.Detect(); SerialPortName = port.PortName; } else { Console.WriteLine("Serial port specified"); port = new SerialPort(SerialPortName, SerialBaudRate); } Console.WriteLine("Device name: " + DeviceName); Console.WriteLine("Serial port name: " + SerialPortName); if (port == null) { Console.WriteLine("Error: Device port not found."); } else { Console.WriteLine("Serial port: " + port.PortName); Client = new SerialClient(port); EnsurePortIsOpen(); SetupMQTT(); // Wait until the first line arrives Client.ReadLine(); var isRunning = true; while (isRunning) { try { RunLoop(); Thread.Sleep(10); } catch (Exception ex) { Console.WriteLine("An error occurred:"); Console.WriteLine(ex.ToString()); Console.WriteLine(); Console.WriteLine("Waiting for 30 seconds then retrying"); SendErrorEmail(ex, DeviceName, SmtpServer, EmailAddress); Thread.Sleep(30 * 1000); Run(); } } } }