private void serialPort_MessageReceived(object sender, MessageReceivedEventArgs args) { var message = BitConverter.ToString(args.Data); _logger.LogInfoMessage($"Serial port data arrived => {message}"); MessageReceived?.Invoke(this, args.Data); }
private async void Desktop_Startup(object sender, ControlledApplicationLifetimeStartupEventArgs e) { var version = Assembly.GetEntryAssembly()?.GetName().Version; _logger.LogInfoMessage($"App startup begin. version:{version}"); var settings = _settingsManager.GetAppSettings(); _logger.LogInfoMessage($"App starting with user settings => :\n{JsonConvert.SerializeObject(settings, Formatting.Indented)}"); _logger.LogInfoMessage("Connect to UGCS"); await _ugcsConnection.ConnectAsync(settings.UGCSHost, settings.UGCSPort, settings.UGCSLogin, settings.UGCSPassword); if (_ugcsConnection.ConnectionStatus == UgcsConnectionStatus.Connected) { _logger.LogInfoMessage("Connected to UGCS"); _logger.LogInfoMessage("Initialize VehicleManager"); await _vehiclesManager.Initialize(); _logger.LogInfoMessage("VehicleManager initialized"); } else { _logger.LogError("Not connected to UGCS"); } _logger.LogInfoMessage("Initialize PTZ transport"); // TODO //await _ptzTransport.Initialize(); _ptzTransport.Initialize(); _logger.LogInfoMessage("PTZ transport initialized"); _logger.LogInfoMessage("App startup end"); }
private void transport_MessageReceived(object sender, byte[] messageData) { var pelcoMessage = PelcoDEMessage.FromBytes(messageData); _logger.LogInfoMessage($"Pelco message received => {pelcoMessage?.ToString() ?? "<null>"}"); if (pelcoMessage == null) { return; } var settings = _settingsManager.GetAppSettings(); var responseType = _responseDecoder.GetResponseType(pelcoMessage); _logger.LogInfoMessage($"Pelco response type => {responseType?.ToString() ?? "<null>"}"); switch (responseType) { case null: return; case PelcoDEMessageType.SetPanCompleteResponse: _panTaskCompletionSource?.TrySetResult(true); return; case PelcoDEMessageType.RequestPanResponse: { var panAngleToCoordinatesFactor = settings.PTZPanAngleToCoordinateFactor; var angle = PelcoResponseDecoder.GetUInt16(pelcoMessage) / panAngleToCoordinatesFactor / 100; _logger.LogDebugMessage($"Pelco RequestPanResponse received => angle: {angle}"); _panRequestCTS.Dispose(); _requestPanTaskCompletionSource?.TrySetResult(angle); return; } case PelcoDEMessageType.RequestTiltResponse: { var tiltAngleToCoordinatesFactor = settings.PTZTiltAngleToCoordinateFactor; var angle = PelcoResponseDecoder.GetUInt16(pelcoMessage) / tiltAngleToCoordinatesFactor / 100; _logger.LogDebugMessage($"Pelco RequestTiltResponse received => angle: {angle}"); _tiltRequestCTS.Dispose(); _requestTiltTaskCompletionSource?.TrySetResult(angle); return; } } }
public async Task <List <Vehicle> > GetVehiclesAsync() { _logger.LogInfoMessage("GetVehiclesAsync requested"); var objRequestTask = Task <List <DomainObjectWrapper> > .Factory.StartNew(() => _connection.GetObjectList <Vehicle>()); try { var responseObjects = await objRequestTask; _logger.LogInfoMessage($"GetVehiclesAsync got {responseObjects.Count} response objects"); return(responseObjects.Select(x => x.Vehicle).ToList()); } catch (Exception e) { _logger.LogException(e); throw; } }
static async Task Main(string[] args) { setupLogConfig(); _logger.LogInfoMessage($"App started => args:{args.ToJson()}"); Terminal.WriteLine("UGCS DroneTracker - PTZ Probe tool", ConsoleColor.Yellow); // create a new instance of the class that we want to parse the arguments into var options = new Options(); // if everything went out fine the ParseArguments method will return true ArgumentParser.Current.ParseArguments(args, options); _logger.LogInfoMessage($"Options parsed => options:\n{options.ToJson()}"); _transport = options.TransportType == PTZDeviceTransportType.Udp ? (IPTZDeviceMessagesTransport) new UdpPTZMessagesTransport(options.PTZUdpHost, options.PTZUdpPort) : new SerialPortPTZMessagesTransport(options.PTZSerialPortName, options.PTZSerialPortSpeed); logInfo("Initialize transport..."); try { // TODO // await _transport.Initialize(); _transport.Initialize(); logOk("Transport initialized"); } catch (Exception e) { _logger.LogException(e); Terminal.WriteLine("Transport initialize error! Check logs to details.", ConsoleColor.Red); Terminal.WriteLine("Press enter to exit..."); Terminal.ReadLine(); Environment.Exit(1); } logInfo("Create PTZ device controller"); _settingsManager = new ApplicationSettingsManager(null); _defaultCoreOptions = _settingsManager.GetAppSettings(); _requestBuilder = new PelcoRequestBuilder(_defaultCoreOptions.PelcoCodesMapping); _responseDecoder = new PelcoResponseDecoder(_defaultCoreOptions.PelcoCodesMapping); _controller = new PelcoDeviceController(_transport, _settingsManager, _requestBuilder, _responseDecoder); logInfo("PTZ device controller created"); await requestCurrentPan(options); await requestCurrentTilt(options); _transport.MessageSending += _transport_MessageSending; _transport.MessageReceived += _transport_MessageReceived; await requestMaxPan(options); await requestMaxTilt(options); logInfo("Try to set pan by 0x71 opCode"); if (_maxPan.HasValue) { await requestSetPan(options, (ushort)(_maxPan.Value / 2)); await requestSetPan(options, (ushort)(_maxPan.Value)); await requestSetPan(options, 0); await requestSetPan(options, (ushort)(_initialPan * 100)); } else { await requestSetPan(options, 9000); await requestSetPan(options, 18000); await requestSetPan(options, 0); await requestSetPan(options, (ushort)(_initialPan * 100)); } logInfo("Try to set pan by 0x4B opCode"); byte pelcoSetPanCode = 0x4b; if (_maxPan.HasValue) { await requestSetPan(options, (ushort)(_maxPan.Value / 2), pelcoSetPanCode); await requestSetPan(options, (ushort)(_maxPan.Value), pelcoSetPanCode); await requestSetPan(options, 0, pelcoSetPanCode); await requestSetPan(options, (ushort)(_initialPan * 100), pelcoSetPanCode); } else { await requestSetPan(options, 9000, pelcoSetPanCode); await requestSetPan(options, 0, pelcoSetPanCode); await requestSetPan(options, (ushort)(_initialPan * 100), pelcoSetPanCode); } logInfo("Try to set tilt by 0x73 opCode"); if (_maxTilt.HasValue) { await requestSetTilt(options, (ushort)(_maxTilt.Value / 2)); await requestSetTilt(options, (ushort)(_maxTilt.Value)); await requestSetTilt(options, 0); await requestSetTilt(options, (ushort)(_initialTilt * 100)); } else { await requestSetTilt(options, 4500); await requestSetTilt(options, 0); await requestSetTilt(options, (ushort)(_initialTilt * 100)); } byte pelcoSetTiltCode = 0x4d; logInfo("Try to set tilt by 0x4D opCode"); if (_maxTilt.HasValue) { await requestSetTilt(options, (ushort)(_maxTilt.Value / 2), pelcoSetTiltCode); await requestSetTilt(options, (ushort)(_maxTilt.Value), pelcoSetTiltCode); await requestSetTilt(options, 0, pelcoSetTiltCode); await requestSetTilt(options, (ushort)(_initialTilt * 100), pelcoSetTiltCode); } else { await requestSetTilt(options, 4500, pelcoSetTiltCode); await requestSetTilt(options, 0, pelcoSetTiltCode); await requestSetTilt(options, (ushort)(_initialPan * 100), pelcoSetTiltCode); } _logger.LogInfoMessage($"Done. Waiting user to exit."); Terminal.WriteLine(); Terminal.WriteLine("Done.", ConsoleColor.Yellow); Terminal.WriteLine("Press enter to exit...", ConsoleColor.Yellow); _transport.Teardown(); Terminal.ReadLine(); }
private void _udpClient_ClientStopped(object sender, AsyncNet.Udp.Client.Events.UdpClientStoppedEventArgs e) { _logger.LogInfoMessage("UDP client stopped"); OnConnectionStatusChanged(isConnected: false); }