コード例 #1
0
        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();
        }
コード例 #2
0
        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;
                    }
                }
            }
        }
コード例 #3
0
        /// <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();
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: Hanson0/M6620_id_check
 /// <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();
 }
コード例 #6
0
        public void TestMethod1()
        {
            SerialPortFactory gf = new SerialPortFactory();

            Assert.IsTrue(gf.FactoryId != Guid.Empty);
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: Hanson0/WF-R10X-RWD1-HZ-
 /// <summary>
 /// 应用程序关闭前触发事件
 /// 执行程序的善后操作
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void Application_ApplicationExit(object sender, EventArgs e)
 {
     SerialPortFactory.GetSerialPort().Close();
 }
コード例 #8
0
 public static IConnection CreateConnection(string connectionString)
 {
     return(connectionString.StartsWith(TcpConnectionFactory.Proto)
         ? (IConnection)TcpConnectionFactory.CreateFromString(connectionString)
         : new SerialPortConnection(SerialPortFactory.CreateFromConnectionString(connectionString)));
 }
コード例 #9
0
        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();
        }