using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using TouchSocket.Core; using WCS.BLL.Config; using WCS.DAL.Db; using WCS.DAL.DbModels; namespace WCS.BLL.HardWare { public class MXL4ShelfModule { #region 协议 /// /// 复位命令 /// public byte[] ResetData = { 0xBE, 0x52, 0x54, 0x41, 0x52, 0x54, 0x0A, 0xED }; /// /// 发送任务ID 0x01改为实际发送的任务ID /// public byte[] SendTaskIdData = { 0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 发送料号信息 /// public byte[] SendMatCodeData = { 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 发送名称信息 /// public byte[] SendMatNameData = { 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 发送规格信息 /// public byte[] SendMatSpecData = { 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 发送批次信息 /// public byte[] SendMatBatchData = { 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 发送数量信息 /// public byte[] SendMatQtyData = { 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 进入出库模式 /// public byte[] GoInOutstoreModeData = { 0xA2, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }; /// /// 待机模式 无库存显示信息 /// public byte[] StandbyNoInfoDisplayData = { 0xA4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; #endregion public int ModuleId { get; set; } public string ModuleCode { get; set; } public int BoardId { get; set; } public bool IsEnable { get; set; } public Mode CurrentMode { get; set; } public bool IsNeedRefresh { get; set; } = true; /// /// 是否已发送自检命令 /// public bool IsSelfCheck { get; set; } = false; public List CurrentOutSns { get; set; } public List CurrentStockTakingSns { get; set; } public void SetCurrentMode(Mode currentMode) { CurrentMode = currentMode; } #region 液晶标签存在的协议 /// /// 复位 /// /// public void Reset(TCPClient tcpClient) { tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, ResetData)); } public void StandbyNoInfoDisplay(TCPClient tcpClient) { tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, StandbyNoInfoDisplayData)); } /// /// 进入出库模式 /// /// public void GoInOutstoreMode(TCPClient tcpClient) { tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoInOutstoreModeData)); } //发送任务ID public void SendTaskId(int taskID, TCPClient tcpClient) { var taskIDData = Convert.ToByte(taskID); SendTaskIdData[1] = taskIDData; tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, SendTaskIdData)); } //发送料号 public void SendMatCode(string matCode, TCPClient tcpClient) { tcpClient.SendThenReturnList(tcpClient.GenerateMessageList(BoardId, SendMatCodeData, matCode)); } //发送名称 public void SendMatName(string matName, TCPClient tcpClient) { tcpClient.SendThenReturnList(tcpClient.GenerateMessageList(BoardId, SendMatNameData, matName)); } //发送规格 public void SendMatSpec(string matSpec, TCPClient tcpClient) { tcpClient.SendThenReturnList(tcpClient.GenerateMessageList(BoardId, SendMatSpecData, matSpec)); } //发送批次 public void SendMatBatch(string matBatch, TCPClient tcpClient) { tcpClient.SendThenReturnList(tcpClient.GenerateMessageList(BoardId, SendMatBatchData, matBatch)); } //发送数量 public void SendMatQty(int matQty, TCPClient tcpClient) { var boardIdData = BitConverter.GetBytes(unchecked((short)matQty)); // 检查是否需要交换字节 if (BitConverter.IsLittleEndian) { // 如果是小端序系统,则交换字节 byte temp = boardIdData[0]; boardIdData[0] = boardIdData[1]; boardIdData[1] = temp; } SendMatQtyData[1] = boardIdData[0]; SendMatQtyData[2] = boardIdData[1]; tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, SendMatQtyData)); } #endregion } }