using JSMachine.WMS.Infrastructure.Helper;
using JSMachine.WMS.PLC.ModbusImpl.Elevator.Enums;
using JSMachine.WMS.PLC.ModbusImpl.Elevator.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JSMachine.WMS.PLC.ModbusImpl.Elevator.ModbusIO.Read
{
public static class ElevatorStatusRead
{
///
/// 读取所有提升机状态
///
///
public static async Task> ReadAllElevatorStatus()
{
ElevatorPlcStatus elevatorStatusOne = await ReadElevatorStatus(1);
ElevatorPlcStatus elevatorStatusTwo = await ReadElevatorStatus(2);
elevatorStatusOne ??= new() { ElevatorNo = 1 };
elevatorStatusTwo ??= new() { ElevatorNo = 2 };
return [elevatorStatusOne, elevatorStatusTwo];
}
///
/// 读取指定提升机状态
///
///
///
public static async Task ReadElevatorStatus(int elevatorNo)
{
IModbusEngine modbusEngine = PLCManager.GetPLC(elevatorNo);
if (modbusEngine == null)
return null;
ushort[] data = await modbusEngine.ReadUshortsAsync(1, 0, 20);
if (data == null)
{
return null;
}
ElevatorPlcStatus elevatorStatus = new()
{
ElevatorNo = elevatorNo,
StockInPutdownChanelOne = data[2] == 1,
StockInPutdownChanelTwo = data[0] == 1,
StockInPickupChannelOne = data[7] == 1,
StockInPickupChannelTwo = data[5] == 1,
StockOutPutdownChanelOne = data[6] == 1,
StockOutPutdownChanelTwo = data[4] == 1,
StockOutPickupChanelOne = data[3] == 1,
StockOutPickupChanelTwo = data[1] == 1,
};
return elevatorStatus;
}
}
}