示例#1
0
    public async Task ReadRtTagAsync()
    {
        try
        {
            if (!modbusClient.Connected)
            {
                modbusClient.Init();
            }

            foreach (var block in settings.ReadBlocks)
            {
                var data = await ReadBlockAsync(block);

                ParseBlock(block, data);
            }

            prevException              = null;
            processInfo.ScanDateTime   = DateTime.Now;
            processInfo.ScanCounter   += 1;
            processInfo.ScanRetry      = 0;
            processInfo.ScanLastErrror = "";

            await processInfo.SetValuesFromPropertiesAsync(new[] { nameof(processInfo.ScanCounter) });
        }
        catch (Exception e)
        {
            if (e.Message != prevException?.Message)
            {
                logger.LogError(e, "Scan Fail!");
                prevException = e;
                processInfo.ScanLastErrror = e.Message;
            }
            processInfo.ScanRetry  += 1;
            processInfo.ScanCounter = 0;
            modbusClient.Terminate();
        }
    }