@page "/init"
@using MasaBlazorApp3.Pojo.Config;
@using MasaBlazorApp3.Pojo.Vo;
@using MasaBlazorApp3.Util;
@using Microsoft.Extensions.Options;
@using Newtonsoft.Json;
@using log4net;
    
    加载程序必要连接中,请稍等。。。
    @msg
    @errMsg
@code {
    @inject Radzen.DialogService dialogService;
    @inject IOptions setting;
    @inject NotificationService _message;
    @inject PortUtil PortUtil;
    @inject FingerprintUtil FingerprintUtil;
    @inject GlobalStateService globalStateService;
    @inject IOptions portSetting;
    string msg;
    string errMsg;
    private readonly ILog logger = LogManager.GetLogger(typeof(InitPage));
    protected override async Task OnInitializedAsync()
    {
        base.OnInitializedAsync();
    }
    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        base.OnAfterRender(firstRender);
        if (firstRender)
        {
            await Task.Delay(15);
            msg = "开始连接指纹模块";
            InvokeAsync(StateHasChanged);
            try
            {
                bool flag=await FingerprintUtil.ConnectionMain();
                if (flag)
                {
                    msg = "指纹模块连接成功";
                }
                else
                {
                    msg = "指纹模块连接失败";
                }
                InvokeAsync(StateHasChanged);
            } catch (Exception e)
            {
                msg = "指纹模块连接失败";
                errMsg += "【指纹模块连接失败】";
                InvokeAsync(StateHasChanged);
            }
            await Task.Delay(500);
            msg = "开始连接抽屉串口";
            InvokeAsync(StateHasChanged);
            try
            {
                PortUtil.drawerSerial.Open();
                logger.Info($"抽屉串口打开结果【{PortUtil.drawerSerial.IsOpen}】");
                msg = "抽屉串口连接成功";
                InvokeAsync(StateHasChanged);
            } catch (Exception e)
            {
                msg = "抽屉串口连接失败";
                errMsg += "【抽屉串口连接失败】";
                InvokeAsync(StateHasChanged);
            }
            await Task.Delay(500);
            msg = "开始连接CanBus模块";
            InvokeAsync(StateHasChanged);
            try
            {
                PortUtil.canBusSerial.Open();
                logger.Info($"CanBus模块打开结果【{PortUtil.canBusSerial.IsOpen}】");
                msg = "CanBus模块连接成功";
                InvokeAsync(StateHasChanged);
            } catch (Exception e)
            {
                msg = "CanBus模块连接失败";
                errMsg += "【CanBus模块连接失败】";
                InvokeAsync(StateHasChanged);
            }
            await Task.Delay(500);
            msg = "开始连接条码扫描模块";
            InvokeAsync(StateHasChanged);
            try
            {
                PortUtil.scanCodeSerial.Open();
                logger.Info($"条码扫描模块打开结果【{PortUtil.scanCodeSerial.IsOpen}】");
                msg = "条码扫描模块连接成功";
                InvokeAsync(StateHasChanged);
            } catch (Exception e)
            {
                msg = "条码扫描模块连接失败";
                errMsg += "【条码扫描模块连接失败】";
                InvokeAsync(StateHasChanged);
            }
            if (portSetting.Value.fridgePortExist)
            {
                try
                {
                    PortUtil.fridgeSerial.Open();
                    logger.Info($"冰箱串口打开结果【{PortUtil.fridgeSerial.IsOpen}】");
                    msg = "冰箱串口连接成功";
                    InvokeAsync(StateHasChanged);
                }
                catch (Exception)
                {
                    msg = "冰箱串口打开失败";
                    errMsg += "【冰箱串口打开失败】";
                    InvokeAsync(StateHasChanged);
                }
            }
            globalStateService.isInit = true;
            dialogService.Close();
        }
    }
}