Files
shgxtzcjhoudaosaomadayinwpf/RIZO_Application.Modules.Base/ViewModels/ScanControlViewModel.cs

62 lines
2.0 KiB
C#

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<SystemLogEvent>().Publish($"串口扫码枪初始化……串口:{comName}波特率:{baudRate}");
_scanHelper = new ComScanHelper(comName, baudRate);
if(_scanHelper == null)
{
Debug.WriteLine("串口打开异常!");
return;
}
_scanHelper.DataReceived += HandleMessage;
await _scanHelper.OpenAsync();
_eventAggregator.GetEvent<SystemLogEvent>().Publish($"串口扫码初始化完成");
}
// 定义事件处理方法
public void HandleMessage(string labelCode)
{
// 打印接收到的消息信息
_eventAggregator.GetEvent<SystemLogEvent>().Publish($"收到串口信息:{labelCode}");
_eventAggregator.GetEvent<ScanEvent>().Publish(labelCode);
}
}
}