public async Task ScanAsync(CancellationToken token) { if (!_isConnected) { throw new InvalidOperationException("Not connected to MQTT."); } Log?.Invoke(this, new LogArgs("Scanning...")); _mqttClient.UseApplicationMessageReceivedHandler(e => { var args = new ScanResultArgs(Encoding.UTF8.GetString(e.ApplicationMessage.Payload)); ScanResultFound?.Invoke(this, args); }); await _mqttClient.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("locomotives/discovery").Build()); while (!token.IsCancellationRequested && _isConnected) { await Task.Delay(10); } Log?.Invoke(this, new LogArgs("Disconnecting...")); await _mqttClient.DisconnectAsync(); }
public async void StartScanning() { _scanner = new MobileBarcodeScanner(); ScanStatusChanged?.Invoke(this, new ScanStatusEventArgs { ScanStatus = "Starting Scan" }); var result = await _scanner.Scan(); if (result != null) { ScanStatusChanged?.Invoke(this, new ScanStatusEventArgs { ScanStatus = "Scan Result Received" }); ScanResultFound?.Invoke(this, new ScanResultEventArgs { ScannedText = result.Text }); } else { ScanStatusChanged?.Invoke(this, new ScanStatusEventArgs { ScanStatus = "Scan Cancelled" }); } }
void ReceivedScanData(object sender, Scanner.DataEventArgs e) { if (e.P0 != null && e.P0.Result == ScannerResults.Success) { var resultData = e.P0.GetScanData(); var firstResult = resultData.FirstOrDefault(); if (firstResult != null) { ScanResultFound?.Invoke(sender, new ScanResultEventArgs { ScannedText = firstResult.Data }); } StopScanning(); } }