private async Task Run() { //ListAvailiblePorts(); var spf = new SerialPortFactory(); var serialPort = spf.Create("COM3", baudRate: 115200); var of = new ObservableFactory(); var linesObservable = of.GetLinesObservable(serialPort); linesObservable.Subscribe(Console.WriteLine); var sw = Stopwatch.StartNew(); while (sw.Elapsed.TotalMinutes < 1 && !serialPort.IsOpen) { try { serialPort.Open(); } catch (IOException IoException) when(IoException.Message.EndsWith("does not exist.")) { //we ignore this error and try again } await Task.Delay(TimeSpan.FromMilliseconds(300)); } await linesObservable.ToTask(); }
private async void OnSerialDeviceDiscovered(string id) { if (id.Contains("UART0")) { // LoRa device. _loraSerialDevice = SerialPortFactory.GetInstance().Create(SerialDeviceType.LoRa); await _loraSerialDevice.Create(id); if (false == _loraSerialDevice.IsConfigured) { _loraSerialDevice.Configure(9600, 500, 500); if (_loraSerialDevice.IsConfigured) { _loraSerialDevice.OnSerialDataEvent += OnLoraDataReceived; } } } else { _bleSerialDevice = SerialPortFactory.GetInstance().Create(SerialDeviceType.BTLe); await _bleSerialDevice.Create(id); if (false == _bleSerialDevice.IsConfigured) { _bleSerialDevice.Configure(9600, 3000, 500); if (_bleSerialDevice.IsConfigured) { _bleSerialDevice.OnSerialDataEvent += OnBleDataReceived; _bleSerialDevice.OnSerialDeviceConnected += OnBLEDeviceConnected; _bleSerialDevice.OnSerialDeviceDisconnected += OnBLEDeviceDisconnected; } } } }
/// <summary> /// 构造函数 /// </summary> /// <param name="frmMain"></param> public ReadWriteIdHandle(FormMain frmMain) { ReadWriteIdHandleInfo.ReadConfig(); checkDeviceInterval = ReadWriteIdHandleInfo.CheckDeviceInterval; this.frmMain = frmMain; flagDisplayUart = true; sp = SerialPortFactory.GetSerialPort(); sp.DataReceived += Sp_DataReceived; SpOpen(); }
private void Configure() { if (_bleCommandReader.IsInitialized == false) { _bleCommandReader.MoveNext(); } if (_bleCommandReader.Current != null) { if (_bleCommandReader.Current.NeedFormatting) { if (_bleCommandReader.Current is ConnectCommand) { if (_bleCommandReader.Previous != null && _bleCommandReader.Previous is DiscoveryCommand) { connectAddrCount++; if (connectAddrCount <= (_bleCommandReader.Previous as DiscoveryCommand).Addresses.Count) { pendingOperation = connectAddrCount != (_bleCommandReader.Previous as DiscoveryCommand).Addresses.Count; _bleCommandReader.Current.FormatString = _bleCommandReader.Previous.ParsedResponses.Count > 0 ? (_bleCommandReader.Previous as DiscoveryCommand).Addresses[connectAddrCount - 1] : ""; } else { _bleCommandReader.Reset(); connectAddrCount = 0; pendingOperation = false; _retries = 0; _bleCommandReader.MoveNext(); Configure(); return; } } else { _bleCommandReader.Reset(); pendingOperation = false; connectAddrCount = 0; _retries = 0; _bleCommandReader.MoveNext(); Configure(); return; } } } _retries++; _bleCommandReader.Current.ClearResponses(); // We are interested in fresh responses. SerialPortFactory.GetInstance().Create(SerialDeviceType.BTLe).Send(_bleCommandReader.Current.CommandString); // Send the command to system. _timer = ThreadPoolTimer.CreateTimer(new TimerElapsedHandler(OnTimerElapsed), System.TimeSpan.FromMilliseconds(_bleCommandReader.Current.TimeOut)); } }
/// <summary> /// 应用程序关闭前触发事件 /// 执行程序的善后操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Application_ApplicationExit(object sender, EventArgs e) { //Bartender_8_01.GetBartender().CloseBartender(); SerialPortFactory.GetSerialPort().Close(); }
public void TestMethod1() { SerialPortFactory gf = new SerialPortFactory(); Assert.IsTrue(gf.FactoryId != Guid.Empty); }
/// <summary> /// 应用程序关闭前触发事件 /// 执行程序的善后操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Application_ApplicationExit(object sender, EventArgs e) { SerialPortFactory.GetSerialPort().Close(); }
public static IConnection CreateConnection(string connectionString) { return(connectionString.StartsWith(TcpConnectionFactory.Proto) ? (IConnection)TcpConnectionFactory.CreateFromString(connectionString) : new SerialPortConnection(SerialPortFactory.CreateFromConnectionString(connectionString))); }
static async Task Main(string[] args) { var connectionString = "COM3"; var p = SerialPortFactory.CreateFromConnectionString(connectionString); var cmd = ForwardingStatus.Query(ForwardingReason.Unconditional); p.Open(); var stream = p.BaseStream; stream.ReadTimeout = 5000; stream.WriteTimeout = 5000; var states = new List <ForwardingStatus>(); await foreach (var line in cmd.Execute(p.BaseStream)) { states.Add(ForwardingStatus.Parse(line)); } foreach (var state in states) { Console.WriteLine($"Active: {state.Status}, Class: {state.Class}, Number: {state.Number}, NumberType: {state.NumberType}"); } var desired = states.FirstOrDefault(s => s.Class == ForwardingClass.Voice); if (desired != null) { Console.WriteLine("Match"); Console.WriteLine( $"Active: {desired.Status}, Class: {desired.Class}, Number: {desired.Number}, NumberType: {desired.NumberType}"); } //return ForwardingStatus.Parse(res[0]).Number; Console.WriteLine("Done"); Console.ReadKey(); //using (var helper = new ATHelper("COM3")) //{ // helper.ForwardTo("+3162732927"); //} //foreach (var line in SMSCommand.SetMode(SMSMode.Text).Execute(stream)) //{ // Console.WriteLine("Set SMS mode response: {0}", line); //} //foreach (var line in new SMSCommand("+31627329279", "Test").Execute(stream)) //{ // Console.WriteLine("Send SMS response: {0}", line); //} //var fwdCmd = ForwardingStatus.Set(ForwardingReason.Unconditional, ForwardingMode.Registration, // "+31186848697", ForwardingPhoneNumberType.WithInternationalAccessCode, // ForwardingClass.Voice); //var fwdCmd = ForwardingStatus.Set(ForwardingReason.Unconditional, ForwardingMode.Erasure, // "+31186848697", ForwardingPhoneNumberType.WithInternationalAccessCode, // ForwardingClass.Voice); //foreach (var line in fwdCmd.Execute(stream)) //{ // Console.WriteLine(line); //} //var cmd = ForwardingStatus.Query(ForwardingReason.Unconditional); //using (var port = new SerialPort("COM3") //{ // ReadTimeout = 2000, // WriteTimeout = 2000, // BaudRate = 115200, // DataBits = 8, // StopBits = StopBits.One, // Parity = Parity.None, // Handshake = Handshake.RequestToSend //}) //{ // using (var helper = new ATHelper(port)) // { // //helper.ForwardTo("+31620491671"); // helper.ForwardTo(""); // Console.WriteLine("Number is: " + helper.GetForwardedPhoneNumber()); // } //} //Console.Write("Done"); //Console.ReadKey(); //return; // try // { // using (var port = new SerialPort("COM3") // { // ReadTimeout = 2000, // WriteTimeout = 2000, // BaudRate = 115200, // DataBits = 8, // StopBits = StopBits.One, // Parity = Parity.None, // Handshake = Handshake.RequestToSend // }) // { // port.Open(); // var stream = port.BaseStream; // var reader = new StreamReader(stream); // var writer = new StreamWriter(stream) { AutoFlush = true }; // writer.NewLine = "\n"; // string command = "ATE1"; // //string command = "AT+CCFC=0,2"; // Console.WriteLine($"Writing {command}"); // writer.Write(command + "\r\n"); // //writer.Write((char) 0x0d); // //writer.Write((char) 0x0a); // Console.WriteLine("Beginning read"); // int c; // while ((c = reader.Read()) != -1) // { // Console.WriteLine(c); // } // port.Close(); // } // } // catch (Exception e) // { // Console.ForegroundColor = ConsoleColor.Red; // Console.WriteLine(e.Message); // Console.ForegroundColor = ConsoleColor.Gray; // } //Console.WriteLine("Done"); //Console.ReadLine(); }