Files
tj-tzhg/JJMediSys/SensorStatus.cs

293 lines
16 KiB
C#
Raw Permalink Normal View History

2025-11-26 17:20:53 +08:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static JJMediSys.AlertForm;
using static JJMediSys.SystemSet;
using static JJMediSys.TubeLabelTool;
namespace JJMediSys
{
public partial class SensorStatus : Form
{
SystemSet fm1;
//public SensorStatus(SystemSet form1)
//{
// InitializeComponent();
// fm1 = form1;
//}
public SensorStatus()
{
InitializeComponent();
fm1 = SystemSet.systemSet;
}
private void label30_Click(object sender, EventArgs e)
{
}
private void label48_Click(object sender, EventArgs e)
{
}
private void SensorStatus_Load(object sender, EventArgs e)
{
PreseData();
}
private void button1_Click(object sender, EventArgs e)
{
fm1.GetDeviceStatus();
PreseData();
}
public void PreseData()
{
try
{
DEVSTATUS dEVSTATUS = new DEVSTATUS();
dEVSTATUS = SystemSet.mTubeLabelTool.stat;
LabCommand.Text = dEVSTATUS.Command.ToString("X2");
LabTubeState.Text = dEVSTATUS.TubeState.ToString("X2");
LabPrintState.Text = dEVSTATUS.PrintState.ToString("X2");
LabStickState.Text = dEVSTATUS.StickState.ToString("X2");
LabBackPrintState.Text = dEVSTATUS.BackPrintState.ToString("X2");
LabTubeBugCode.Text = dEVSTATUS.TubeBugCode.ToString("X2");
LabPrintBugCode.Text = dEVSTATUS.PrintBugCode.ToString("X2");
LabStickBugCode.Text = dEVSTATUS.StickBugCode.ToString("X2");
LabBackPrintBugCode.Text = dEVSTATUS.BackPrintBugCode.ToString("X2");
LabCarCommand.Text = dEVSTATUS.CarCommand.ToString("X2");
LabCarUnitState.Text = dEVSTATUS.CarUnitState.ToString("X2");
LabCarMotorState.Text = dEVSTATUS.CarMotorState.ToString("X2");
LabCarOriginalSensor.Text = dEVSTATUS.CarOriginalSensor.ToString("X2");
LabCarPositionSensor.Text = dEVSTATUS.CarPositionSensor.ToString("X2");
LabPreSaveTubeSensor.Text = BitConverter.ToString(dEVSTATUS.PreSaveTubeSensor).Replace("-", " ");
LabCarLeftSensor.Text = dEVSTATUS.CarLeftSensor.ToString("X2");
LabCarMidSensor.Text = dEVSTATUS.CarMidSensor.ToString("X2");
LabCarRightSensor.Text = dEVSTATUS.CarRightSensor.ToString("X2");
LabFrontMagSensor.Text = BitConverter.ToString(dEVSTATUS.FrontMagSensor).Replace("-", " ");
LabRearMagSensor.Text = BitConverter.ToString(dEVSTATUS.RearMagSensor).Replace("-", " ");
LabStickCommand.Text = dEVSTATUS.StickCommand.ToString("X2");
LabStickUnitState.Text = dEVSTATUS.StickUnitState.ToString("X2");
LabRotateMotorState.Text = dEVSTATUS.RotateMotorState.ToString("X2");
LabLeftWallMotorState.Text = dEVSTATUS.LeftWallMotorState.ToString("X2");
LabRightWallMotorState.Text = dEVSTATUS.RightWallMotorState.ToString("X2");
LabLiftMotorState.Text = dEVSTATUS.LiftMotorState.ToString("X2");
LabLeftWallSensor.Text = dEVSTATUS.LeftWallSensor.ToString("X2");
LabRightWallSensor.Text = dEVSTATUS.RightWallSensor.ToString("X2");
LabLiftSensor.Text = dEVSTATUS.LiftSensor.ToString("X2");
//LabStickLeftTubeSensor.Text = dEVSTATUS.StickLeftTubeSensor.ToString("X2");
LabStickLeftTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickLeftTubeSensor).Replace("-", " ");
//LabStickRightTubeSensor.Text = dEVSTATUS.StickRightTubeSensor.ToString("X2");
LabStickRightTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickRightTubeSensor).Replace("-", " ");
// LabStickUpTubeSensor.Text = dEVSTATUS.StickUpTubeSensor.ToString("X2");
LabStickUpTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickUpTubeSensor).Replace("-", " ");
//LabStickDownTubeSensor.Text = dEVSTATUS.StickDownTubeSensor.ToString("X2");
LabStickDownTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickDownTubeSensor).Replace("-", " ");
LabPrintCommand.Text = dEVSTATUS.PrintCommand.ToString("X2");
LabPrintUnitState.Text = dEVSTATUS.PrintUnitState.ToString("X2");
LabCarryMotorState.Text = dEVSTATUS.CarryMotorState.ToString("X2");
LabRollMotorState.Text = dEVSTATUS.RollMotorState.ToString("X2");
LabPaperGapSensor.Text = dEVSTATUS.PaperGapSensor.ToString("X2");
LabPaperLessSensor.Text = dEVSTATUS.PaperLessSensor.ToString("X2");
LabPrintTemperatureSensor.Text = dEVSTATUS.PrintTemperatureSensor.ToString("X2");
LabBackPrintCommand.Text = dEVSTATUS.BackPrintCommand.ToString("X2");
LabBackPrintUnitState.Text = dEVSTATUS.BackPrintUnitState.ToString("X2");
LabBackPaperGapSensor.Text = dEVSTATUS.BackPaperGapSensor.ToString("X2");
LabBackPaperLessSensor.Text = dEVSTATUS.BackPaperLessSensor.ToString("X2");
LabBackPrintTemperatureSensor.Text = dEVSTATUS.BackPrintTemperatureSensor.ToString("X2");
LabTubeTakeBoxSensorState.Text = dEVSTATUS.TubeTakeBoxSensorState.ToString("X2");
LabSensorlnit.Text = dEVSTATUS.Sensorlnit.ToString("X2");
LabParameterSet.Text = dEVSTATUS.ParameterSet.ToString("X2");
LabTubeTakeBoxColorState.Text = dEVSTATUS.TubeTakeBoxColorState.ToString("X2");
LabBackUp.Text = BitConverter.ToString(dEVSTATUS.BackUp).Replace("-", " ");
PreseStatus(dEVSTATUS);
}
catch(Exception e)
{
}
}
public void PreseStatus(DEVSTATUS dEVSTATUS)
{
StatusDetail statusDetail = new StatusDetail();
statusDetail.TubeStat = new byte[7] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
statusDetail.BackUpSensorStat = new byte[8] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
statusDetail.TubeCar = fm1.TransCodemain(dEVSTATUS.TubeState.ToString("X2"));
statusDetail.MainPrinter = fm1.TransCodemain(dEVSTATUS.PrintState.ToString("X2"));
statusDetail.SecPrinter = fm1.TransCodemain(dEVSTATUS.BackPrintState.ToString("X2"));
statusDetail.Stick = fm1.TransCodemain(dEVSTATUS.StickState.ToString("X2"));
statusDetail.TubeCarErrorCode = dEVSTATUS.TubeBugCode.ToString("X2");
statusDetail.MainPrinterErrorCode = dEVSTATUS.PrintBugCode.ToString("X2");
statusDetail.SecPrinterErrorCode = dEVSTATUS.BackPrintBugCode.ToString("X2");
statusDetail.StickErrorCode = dEVSTATUS.StickBugCode.ToString("X2");
statusDetail.MainPrintPaper = dEVSTATUS.PaperLessSensor.ToString("X2") == "00" ? 0 : 1;
statusDetail.SecPrintPaper = dEVSTATUS.BackPaperLessSensor.ToString("X2") == "00" ? 0 : 1;
statusDetail.MainPrintHeard = dEVSTATUS.PrintUnitState.ToString("X2") == "01" ? 0 : 2;
statusDetail.SecPrintHeard = dEVSTATUS.BackPrintUnitState.ToString("X2") == "01" ? 0 : 2;
string ErrorInfo = "";
if (statusDetail.TubeCar == 1)
ErrorInfo = ErrorInfo + "选管单元忙\r\n";
else if (statusDetail.TubeCar == 2)
ErrorInfo = ErrorInfo + "选管单元故障\r\n";
if (statusDetail.MainPrinter == 1)
ErrorInfo = ErrorInfo + "主打印单元忙\r\n";
else if (statusDetail.MainPrinter == 2)
ErrorInfo = ErrorInfo + "主打印单元故障\r\n";
if (statusDetail.MainPrintHeard == 2)
ErrorInfo = ErrorInfo + "主打印单元,打印头未到位\r\n";
if (statusDetail.MainPrintPaper == 1)
ErrorInfo = ErrorInfo + "主打印单元,标签纸即将用完\r\n";
if (statusDetail.SecPrinter == 1)
ErrorInfo = ErrorInfo + "副打印单元忙\r\n";
else if (statusDetail.SecPrinter == 2)
ErrorInfo = ErrorInfo + "副打印单元故障\r\n";
if (statusDetail.SecPrintHeard == 2)
ErrorInfo = ErrorInfo + "副打印单元,打印头未到位\r\n";
if (statusDetail.SecPrintPaper == 1)
ErrorInfo = ErrorInfo + "副打印单元,标签纸即将用完\r\n";
if (statusDetail.Stick == 1)
ErrorInfo = ErrorInfo + "贴标单元忙\r\n";
else if (statusDetail.Stick == 2)
ErrorInfo = ErrorInfo + "贴标单元故障\r\n";
ErrorInfo = ErrorInfo + fm1.TranErrorCode("Car", statusDetail.TubeCarErrorCode);
ErrorInfo = ErrorInfo + fm1.TranErrorCode("MPrinter", statusDetail.MainPrinterErrorCode);
ErrorInfo = ErrorInfo + fm1.TranErrorCode("SPrinter", statusDetail.SecPrinterErrorCode);
ErrorInfo = ErrorInfo + fm1.TranErrorCode("Stick", statusDetail.StickErrorCode);
Buffer.BlockCopy(dEVSTATUS.PreSaveTubeSensor, 0, statusDetail.TubeStat, 0, 7);
if (statusDetail.TubeStat[0] == 0x00) { ErrorInfo = ErrorInfo + "1号管箱没有预存试管\r\n"; }
if (statusDetail.TubeStat[1] == 0x00) { ErrorInfo = ErrorInfo + "2号管箱没有预存试管\r\n"; }
if (statusDetail.TubeStat[2] == 0x00) { ErrorInfo = ErrorInfo + "3号管箱没有预存试管\r\n"; }
if (statusDetail.TubeStat[3] == 0x00) { ErrorInfo = ErrorInfo + "4号管箱没有预存试管\r\n"; }
if (statusDetail.TubeStat[4] == 0x00) { ErrorInfo = ErrorInfo + "5号管箱没有预存试管\r\n"; }
if (statusDetail.TubeStat[5] == 0x00) { ErrorInfo = ErrorInfo + "6号管箱没有预存试管\r\n"; }
if (statusDetail.TubeStat[6] == 0x00) { ErrorInfo = ErrorInfo + "7号管箱没有预存试管\r\n"; }
Buffer.BlockCopy(dEVSTATUS.BackUp, 0, statusDetail.BackUpSensorStat, 0, 8);
if (statusDetail.BackUpSensorStat[2] == 0x01)
{
ErrorInfo = ErrorInfo + "试管仓仓门打开\r\n";
}
if (statusDetail.BackUpSensorStat[3] == 0x01)
{
ErrorInfo = ErrorInfo + "标签打印仓门打开\r\n";
}
textErrorInfo.Text = ErrorInfo;
}
private void uiButton1_Click(object sender, EventArgs e)
{
fm1.GetDeviceStatus();
PreseData();
}
private void uiButton2_Click(object sender, EventArgs e)
{
string Input = TextStatStr.Text;
string[] hexValuesSplit = Input.Split(' ');
byte[] byteArray = new byte[hexValuesSplit.Length];
if (byteArray.Length != 74)
{
AlertForm.ShowAlert("数据非法 无法解析", AlertType.Error, 3);
return;
}
for (int i = 0; i < hexValuesSplit.Length; i++)
{
byteArray[i] = Convert.ToByte(hexValuesSplit[i], 16);
}
IntPtr ptr = Marshal.AllocHGlobal(100);//分配非托管内存空间
Marshal.Copy(byteArray, 3, ptr, byteArray.Length - 4);//将数组数组拷贝到非托管内存指针
DEVSTATUS dEVSTATUS = (DEVSTATUS)Marshal.PtrToStructure(ptr, typeof(DEVSTATUS));
Marshal.FreeHGlobal(ptr);//释放内存
LabCommand.Text = dEVSTATUS.Command.ToString("X2");
LabTubeState.Text = dEVSTATUS.TubeState.ToString("X2");
LabPrintState.Text = dEVSTATUS.PrintState.ToString("X2");
LabStickState.Text = dEVSTATUS.StickState.ToString("X2");
LabBackPrintState.Text = dEVSTATUS.BackPrintState.ToString("X2");
LabTubeBugCode.Text = dEVSTATUS.TubeBugCode.ToString("X2");
LabPrintBugCode.Text = dEVSTATUS.PrintBugCode.ToString("X2");
LabStickBugCode.Text = dEVSTATUS.StickBugCode.ToString("X2");
LabBackPrintBugCode.Text = dEVSTATUS.BackPrintBugCode.ToString("X2");
LabCarCommand.Text = dEVSTATUS.CarCommand.ToString("X2");
LabCarUnitState.Text = dEVSTATUS.CarUnitState.ToString("X2");
LabCarMotorState.Text = dEVSTATUS.CarMotorState.ToString("X2");
LabCarOriginalSensor.Text = dEVSTATUS.CarOriginalSensor.ToString("X2");
LabCarPositionSensor.Text = dEVSTATUS.CarPositionSensor.ToString("X2");
LabPreSaveTubeSensor.Text = BitConverter.ToString(dEVSTATUS.PreSaveTubeSensor).Replace("-", " ");
LabCarLeftSensor.Text = dEVSTATUS.CarLeftSensor.ToString("X2");
LabCarMidSensor.Text = dEVSTATUS.CarMidSensor.ToString("X2");
LabCarRightSensor.Text = dEVSTATUS.CarRightSensor.ToString("X2");
LabFrontMagSensor.Text = BitConverter.ToString(dEVSTATUS.FrontMagSensor).Replace("-", " ");
LabRearMagSensor.Text = BitConverter.ToString(dEVSTATUS.RearMagSensor).Replace("-", " ");
LabStickCommand.Text = dEVSTATUS.StickCommand.ToString("X2");
LabStickUnitState.Text = dEVSTATUS.StickUnitState.ToString("X2");
LabRotateMotorState.Text = dEVSTATUS.RotateMotorState.ToString("X2");
LabLeftWallMotorState.Text = dEVSTATUS.LeftWallMotorState.ToString("X2");
LabRightWallMotorState.Text = dEVSTATUS.RightWallMotorState.ToString("X2");
LabLiftMotorState.Text = dEVSTATUS.LiftMotorState.ToString("X2");
LabLeftWallSensor.Text = dEVSTATUS.LeftWallSensor.ToString("X2");
LabRightWallSensor.Text = dEVSTATUS.RightWallSensor.ToString("X2");
LabLiftSensor.Text = dEVSTATUS.LiftSensor.ToString("X2");
//LabStickLeftTubeSensor.Text = dEVSTATUS.StickLeftTubeSensor.ToString("X2");
LabStickLeftTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickLeftTubeSensor).Replace("-", " ");
//LabStickRightTubeSensor.Text = dEVSTATUS.StickRightTubeSensor.ToString("X2");
LabStickRightTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickRightTubeSensor).Replace("-", " ");
// LabStickUpTubeSensor.Text = dEVSTATUS.StickUpTubeSensor.ToString("X2");
LabStickUpTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickUpTubeSensor).Replace("-", " ");
//LabStickDownTubeSensor.Text = dEVSTATUS.StickDownTubeSensor.ToString("X2");
LabStickDownTubeSensor.Text = BitConverter.ToString(dEVSTATUS.StickDownTubeSensor).Replace("-", " ");
LabPrintCommand.Text = dEVSTATUS.PrintCommand.ToString("X2");
LabPrintUnitState.Text = dEVSTATUS.PrintUnitState.ToString("X2");
LabCarryMotorState.Text = dEVSTATUS.CarryMotorState.ToString("X2");
LabRollMotorState.Text = dEVSTATUS.RollMotorState.ToString("X2");
LabPaperGapSensor.Text = dEVSTATUS.PaperGapSensor.ToString("X2");
LabPaperLessSensor.Text = dEVSTATUS.PaperLessSensor.ToString("X2");
LabPrintTemperatureSensor.Text = dEVSTATUS.PrintTemperatureSensor.ToString("X2");
LabBackPrintCommand.Text = dEVSTATUS.BackPrintCommand.ToString("X2");
LabBackPrintUnitState.Text = dEVSTATUS.BackPrintUnitState.ToString("X2");
LabBackPaperGapSensor.Text = dEVSTATUS.BackPaperGapSensor.ToString("X2");
LabBackPaperLessSensor.Text = dEVSTATUS.BackPaperLessSensor.ToString("X2");
LabBackPrintTemperatureSensor.Text = dEVSTATUS.BackPrintTemperatureSensor.ToString("X2");
LabTubeTakeBoxSensorState.Text = dEVSTATUS.TubeTakeBoxSensorState.ToString("X2");
LabSensorlnit.Text = dEVSTATUS.Sensorlnit.ToString("X2");
LabParameterSet.Text = dEVSTATUS.ParameterSet.ToString("X2");
LabTubeTakeBoxColorState.Text = dEVSTATUS.TubeTakeBoxColorState.ToString("X2");
LabBackUp.Text = BitConverter.ToString(dEVSTATUS.BackUp).Replace("-", " ");
PreseStatus(dEVSTATUS);
}
private void PClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}