using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using MQTTnet.Client; using Prism.Events; using Prism.Regions; using RIZO_Application.Core; using RIZO_Application.Core.Mvvm; using RIZO_Application.Infrastructure.Model; using RIZO_Helper.Tools; namespace RIZO_Application.Modules.Base.ViewModels { public class ScanControlViewModel : RegionViewModelBase { private readonly IEventAggregator _eventAggregator; private ComScanHelper _scanHelper; public ScanControlViewModel( IRegionManager regionManager, IEventAggregator eventAggregator) : base(regionManager) { _eventAggregator = eventAggregator; Task.Run(StartComScan); } public async Task StartComScan() { string comName = "COM1"; int baudRate = 9600; if (SerialConfigs.Current != null) { comName = SerialConfigs.Current.ComName ?? string.Empty; baudRate = SerialConfigs.Current.BaudRate ?? 9600; } _eventAggregator.GetEvent().Publish($"串口扫码枪初始化……串口:{comName}波特率:{baudRate}"); _scanHelper = new ComScanHelper(comName, baudRate); if(_scanHelper == null) { Debug.WriteLine("串口打开异常!"); return; } _scanHelper.DataReceived += HandleMessage; await _scanHelper.OpenAsync(); _eventAggregator.GetEvent().Publish($"串口扫码初始化完成"); } // 定义事件处理方法 public void HandleMessage(string labelCode) { // 打印接收到的消息信息 _eventAggregator.GetEvent().Publish($"收到串口信息:{labelCode}"); _eventAggregator.GetEvent().Publish(labelCode); } } }