This commit is contained in:
backuppc
2026-01-23 17:33:10 +09:00
parent 3b2c1a43a7
commit a04a0505d0
12 changed files with 889 additions and 1000 deletions

View File

@@ -15,7 +15,8 @@ namespace AGVEmulator
public UInt16 system0 = 0;
public UInt16 system1 = 0;
public UInt16 error = 0;
public byte signal = 0;
public byte signal1 = 0;
public byte signal2 = 0;
public char sts_bunki = 'S';
public char sts_speed = 'L';
public char sts_dir = 'F';
@@ -57,16 +58,22 @@ namespace AGVEmulator
/// </summary>
cross_ctrl_comm_error,
}
public enum esignal
public enum esignal2
{
cart_detect1 = 0,
cart_detect2,
}
public enum esignal1
{
front_gate_out = 0,
rear_sensor_out,
mark_sensor_1,
mark_sensor_2,
front_left_sensor,
front_right_sensor,
front_center_sensor,
charger_align_sensor,
lift_up,
lift_down,
magnet_on
}
public enum esystemflag0
{
@@ -119,7 +126,8 @@ namespace AGVEmulator
system0,
system1,
error,
signal,
signal1,
signal2,
}
public enum estsvaluetype
{
@@ -266,11 +274,17 @@ namespace AGVEmulator
if (SetBit(ref error, idx, value))
ValueChanged?.Invoke(this, new ValueChangedArgs(idx, value, evaluetype.error));
}
public void SetAGV(DevAGV.esignal flag, bool value)
public void SetAGV(DevAGV.esignal1 flag, bool value)
{
var idx = (int)flag;
if (SetBit(ref signal, idx, value))
ValueChanged?.Invoke(this, new ValueChangedArgs(idx, value, evaluetype.signal));
if (SetBit(ref signal1, idx, value))
ValueChanged?.Invoke(this, new ValueChangedArgs(idx, value, evaluetype.signal1));
}
public void SetAGV(DevAGV.esignal2 flag, bool value)
{
var idx = (int)flag;
if (SetBit(ref signal2, idx, value))
ValueChanged?.Invoke(this, new ValueChangedArgs(idx, value, evaluetype.signal2));
}
public void SetSTS(estsvaluetype target, char value)
@@ -311,6 +325,29 @@ namespace AGVEmulator
switch (frame.cmd)
{
case "CLF"://마그넷 * 리프트
var cmd2 = frame.data.Substring(0, 2);
switch(cmd2)
{
case "ON":
SetAGV(esignal1.magnet_on, true);
break;
case "UP":
SetAGV(esignal1.lift_down, false);
SetAGV(esignal1.lift_up, true);
break;
case "DN":
SetAGV(esignal1.lift_up, false);
SetAGV(esignal1.lift_down, true);
break;
case "ST":
break;
case "OF":
SetAGV(esignal1.magnet_on, false);
break;
}
break;
case "CRN": //기동명령
//sts_dir = frame.data[0];
SetSTS(estsvaluetype.direction, frame.data[0]);
@@ -472,11 +509,12 @@ namespace AGVEmulator
barr[20] = (byte)this.sts_bunki;
barr[21] = (byte)this.sts_dir;
barr[22] = (byte)this.sts_sensor;
//bufarr = System.Text.Encoding.Default.GetBytes(p.sensor.ToString().PadLeft(2, '0'));
//Array.Copy(bufarr, 0, barr, 22, bufarr.Length);
bufarr = System.Text.Encoding.Default.GetBytes(signal.ToString("X2").PadLeft(2, '0'));
bufarr = System.Text.Encoding.Default.GetBytes(signal1.ToString("X2").PadLeft(2, '0'));
Array.Copy(bufarr, 0, barr, 23, bufarr.Length);
//barr[22] = (byte)'5';
bufarr = System.Text.Encoding.Default.GetBytes(signal2.ToString("X2").PadLeft(2, '0'));
Array.Copy(bufarr, 0, barr, 25, bufarr.Length);
barr[barr.Length - 3] = (byte)'*';
barr[barr.Length - 2] = (byte)'*';