public DeviceSerialDataTransport(SerialPortDataTransportSettings settings, EncodingDecorator deviceEncoding, ILogger logger) : base(new MonitoredCachedChannelFactory <Device>( new Codec <Device>(deviceEncoding)), settings, logger) { }
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; }
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))); }
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); } }