コード例 #1
0
 public DeviceSerialDataTransport(SerialPortDataTransportSettings settings, EncodingDecorator deviceEncoding, ILogger logger) :
     base(new MonitoredCachedChannelFactory <Device>(
              new Codec <Device>(deviceEncoding)),
          settings,
          logger)
 {
 }
コード例 #2
0
 public GpsSerialDataTransport(SerialPortDataTransportSettings option, ILogger logger) :
     base(new MonitoredCachedChannelFactory <Gps>(
              new Codec <Gps>(Gps.Encoding.CreateBuilder().Build())),
          option,
          logger)
 {
 }
 protected SerialPortTransportConfigurationViewModel(SerialPortDataTransport <T> dataTransport) : base(dataTransport)
 {
     serialPortDataTransportSettings = (SerialPortDataTransportSettings)dataTransport.Settings;
     PortName    = serialPortDataTransportSettings.PortName;
     BaudRate    = serialPortDataTransportSettings.BaudRate;
     Parity      = serialPortDataTransportSettings.Parity;
     StopBits    = serialPortDataTransportSettings.StopBits;
     DataBits    = serialPortDataTransportSettings.DataBits;
     ReadTimeout = serialPortDataTransportSettings.ReadTimeout;
 }
コード例 #4
0
        public static IServiceCollection AddSerialPortTransport <T>(
            this IServiceCollection serviceCollection,
            Codec <T> codec,
            SerialPortDataTransportSettings settings) where T : IPacket, new()
        {
            var monitoredCachedChannelFactory = new MonitoredCachedChannelFactory <T>(codec);

            return(serviceCollection
                   .AddSingleton(codec)
                   .AddSingleton(monitoredCachedChannelFactory)
                   .AddSingleton(new SerialPortDataTransport <T>(monitoredCachedChannelFactory,
                                                                 settings)));
        }
コード例 #5
0
        private static void Main(string[] args)
        {
            // var serial = new SerialPort("com2", 115200);
            // serial.Open();
            // var reader = new BinaryReader(serial.BaseStream);
            // var writer = new BinaryWriter(serial.BaseStream);
            // var b = new byte[] { 0xaa, 0xaa, 0x00, 0x64, 0x04, 0x04 };

            var gpsSerial = new SerialPort("com3", 115200);

            gpsSerial.Open();
            var gpsReader   = new BinaryReader(gpsSerial.BaseStream);
            var gpsWriter   = new BinaryWriter(gpsSerial.BaseStream);
            var gpsTestData = "$GNGNS,014035.00,4332.69262,S,17235.48549,E,RR,13,0.9,25.63,11.24,,*70\r\n";

            var configurationRoot = new ConfigurationBuilder()
                                    .SetBasePath(Directory.GetCurrentDirectory())
                                    .AddJsonFile("AppConfig.Json").Build();
            // var option = new SerialPortDataTransportOption();
            // configurationRoot.GetSection(nameof(DeviceSerialDataTransport)).Bind(option);
            var gpsOption = new SerialPortDataTransportSettings();

            configurationRoot.GetSection(nameof(GpsSerialDataTransport)).Bind(gpsOption);

            // var encoding = _devicePacketEncodingBuilders.Build();
            // _dataTransport = new DeviceSerialDataTransport(
            //     new OptionsWrapper<SerialPortDataTransportOption>(option),
            //     encoding);
            // _dataTransport.Open();

            _gpsDataTransport = new GpsSerialDataTransport(gpsOption);
            _gpsDataTransport.Open();
            _gpsDataTransport.Channels[0].DataReceived += (sender, arg) =>
            {
                lock (_o)
                {
                    _list.Add(
                        $" {_gpsDataTransport.Channels[0].ToMonitoredChannel().DataReceivedCount}, {_gpsDataTransport.Channels[0].ToMonitoredChannel().LastPacketTime}");
                    _list.Add($" {_gpsDataTransport.Channels[0].ToCachedChannel().Packet.Count}");
                    _list.Add(arg.Data.ToString());
                    _list.Add("\r\n");
                }
            };
            // _dataTransport.Channels[0].DataReceived += Channel_DataReceived;
            // var packet = new Device() { Content = new Data() { Content = new Fault { } } };
            while (true)
            {
                //writer.Write(b);
                // if (serial.BytesToRead > 0)
                // {
                //Console.WriteLine(reader.ReadBytes(serial.BytesToRead).ToHexString());
                //writer.Write(reader.ReadBytes(serial.BytesToRead));
                gpsWriter.Write(gpsTestData);;
                // }
                lock (_o)
                    while (_list.Count > _index)
                    {
                        Console.WriteLine(_list[_index++]);
                    }

                // (_dataTransport.Channels[0]).Transmit(packet);
                Thread.Sleep(10);
            }
        }