public override void InitPlugin() { var portName = Configuration["portName"]; if (string.IsNullOrEmpty(portName)) { throw new Exception("noolite portName is required"); } Logger.LogInformation("Use {PortName} serial port", portName); device = new MTRFXXAdapter(portName); device.Connect += OnConnect; device.Disconnect += OnDisconnect; device.ReceiveData += OnReceiveData; device.ReceiveMicroclimateData += OnReceiveMicroclimateData; device.Error += OnError; wrapper = new AdapterWrapper(false, device, Logger); wrapperF = new AdapterWrapper(true, device, Logger); #region register handlers foreach (var plugin in Context.GetAllPlugins()) { var pluginType = plugin.GetType(); foreach (var mi in plugin .FindMethods <CommandAttribute, CommandDelegate>()) { Logger.LogInformation( "register noolite command handler: {Method} ({PluginType})", mi.Method.Method.Name, pluginType.FullName); cmdHandlers.Add(mi.Method); } foreach (var mi in plugin .FindMethods <MicroclimateAttribute, MicroclimateDelegate>()) { Logger.LogInformation( "register noolite microclimate handler: {Method} ({PluginType})", mi.Method.Method.Name, pluginType.FullName); microclimateHandlers.Add(mi.Method); } } #endregion }
static void Invoke(CommonArgs args, Action <MTRFXXAdapter, byte> action, Action <MTRFXXAdapter, byte> actionF) { using (var adapter = new MTRFXXAdapter(args.Port.ParsedValue)) { adapter.Open(); adapter.ExitServiceMode(); Thread.Sleep(50); if (args.ModeF.HasValue()) { actionF(adapter, args.Channel.ParsedValue); } else { action(adapter, args.Channel.ParsedValue); } Thread.Sleep(100); } }
public AdapterWrapper(bool fMode, MTRFXXAdapter device, ILogger logger) { this.fMode = fMode; this.device = device; this.logger = logger; }
static void Main(string[] args) { foreach (var name in SerialPort.GetPortNames()) { Console.WriteLine(name); } return; //using (var adapter = new MTRFXXAdapter("/dev/tty.usbserial-AI04XT35")) using (var adapter = new MTRFXXAdapter("/dev/tty.usbserial-AL00HDFI")) { adapter.Connect += AdapterOnConnect; adapter.Disconnect += AdapterOnDisconnect; adapter.ReceiveData += AdapterOnReceiveData; adapter.ReceiveMicroclimateData += AdapterOnReceiveMicroclimateData; adapter.Error += AdapterOnError; // Console.WriteLine("open"); // adapter.Open(); // Console.ReadKey(); // // Console.WriteLine("exit service mode"); // adapter.ExitServiceMode(); // Console.ReadKey(); // // Console.WriteLine("close"); // adapter.Close(); // Console.ReadKey(); Console.WriteLine("open"); adapter.Open(); Console.ReadKey(); Console.WriteLine("exit service mode"); adapter.ExitServiceMode(); Console.ReadKey(); // Console.WriteLine("bind"); // adapter.BindF(13); // // Console.ReadKey(); // Console.WriteLine("bind"); // adapter.Bind(Mode.NooLiteF, 13); // // Console.ReadKey(); // // Console.WriteLine("unbind"); // adapter.Unbind(Mode.NooLiteF, 13); // // Console.ReadKey(); // Console.WriteLine("on"); // adapter.OnF(13, 1594); // // Console.ReadKey(); // // Console.WriteLine("off"); // adapter.OffF(13, 1594); // // Console.ReadKey(); // // Console.WriteLine("on"); // adapter.OnF(13, 2405); // // Console.ReadKey(); // // Console.WriteLine("off"); // adapter.OffF(13, 2405); // // Console.ReadKey(); Console.WriteLine("bind: start"); adapter.On(64); Console.ReadKey(); Console.WriteLine("bind: stop"); adapter.BindStop(); } }