프로토콜 조정

This commit is contained in:
backuppc
2025-11-14 15:03:51 +09:00
parent 028e9ab35f
commit 97b2a3076f
14 changed files with 612 additions and 251 deletions

View File

@@ -173,7 +173,7 @@ namespace Project.Device
*/
try
{
byte[] data = new byte[13]; // 총 13바이트 데이터
byte[] data = new byte[12]; // 총 12바이트 데이터
// Mode
data[0] = (byte)(VAR.BOOL[eVarBool.FLAG_AUTORUN] ? 1 : 0);
@@ -186,47 +186,56 @@ namespace Project.Device
else
data[1] = 0; // stop
// Direction
if (PUB.AGV.system1.stop_by_front_detect)
data[2] = 3; // markstop
else if (VAR.BOOL[eVarBool.FLAG_LEFT_RUN])
data[2] = 1; // left
else if (VAR.BOOL[eVarBool.FLAG_RIGHT_RUN])
data[2] = 2; // right
// Motor Direction
if (PUB.AGV.data.Direction == 'F')
data[2] = 0;
else if (PUB.AGV.data.Direction == 'B')
data[2] = 1;
else
data[2] = 0; // straight
data[2] = 0xff; //unknown
// Magnet Direction
if (PUB.AGV.data.Sts == 'L')
data[3] = 1; // left
else if (PUB.AGV.data.Sts == 'R')
data[3] = 2; // right
else if (PUB.AGV.data.Sts == 'S')
data[3] = 0; // straight
else
data[3] = 0xFF; //unknown
// Inposition
data[3] = (byte)(PUB.AGV.system1.agv_stop ? 1 : 0);
data[4] = (byte)(PUB.AGV.system1.agv_stop ? 1 : 0);
// ChargeSt
data[4] = (byte)((VAR.BOOL[eVarBool.FLAG_CHARGEONA] || VAR.BOOL[eVarBool.FLAG_CHARGEONM]) ? 1 : 0);
data[5] = (byte)((VAR.BOOL[eVarBool.FLAG_CHARGEONA] || VAR.BOOL[eVarBool.FLAG_CHARGEONM]) ? 1 : 0);
// CartSt
if (PUB.AGV.signal.cart_detect1 && PUB.AGV.signal.cart_detect2)
data[5] = 1; // 센서두개가 모두 감지되는 경우
data[6] = 1; // 센서두개가 모두 감지되는 경우
else if (PUB.AGV.signal.cart_detect1 == false && PUB.AGV.signal.cart_detect2 == false)
data[5] = 0; // 센서두개가 모두 감지되지 않는 경우
data[6] = 0; // 센서두개가 모두 감지되지 않는 경우
else
data[5] = 2; // 센서하나만 감지되는 경우
data[6] = 2; // 센서하나만 감지되는 경우
// LiftSt
if (PUB.AGV.signal.lift_up)
data[6] = 1; // 위로 올라가는 경우
data[7] = 1; // 위로 올라가는 경우
else if (PUB.AGV.signal.lift_down)
data[6] = 0; // 아래로 내려가는 경우
data[7] = 0; // 아래로 내려가는 경우
else
data[6] = 2; // unknown (기본값)
data[7] = 2; // unknown (기본값)
// LastTag
string lastTag = PUB.AGV.data.TagNo.ToString("000000") ?? "000000";
byte[] tagBytes = Encoding.ASCII.GetBytes(lastTag.PadRight(6, '0'));
Array.Copy(tagBytes, 0, data, 7, 6);
string lastTag = PUB.AGV.data.TagNo.ToString("0000") ?? "0000";
byte[] tagBytes = Encoding.ASCII.GetBytes(lastTag.PadRight(4, '0'));
Array.Copy(tagBytes, 0, data, 8, lastTag.Length);
// 데이터 전송
var cmd = (byte)ENIGProtocol.AGVCommandEH.Status;
var packet = proto.CreatePacket(PUB.setting.XBE_ID, cmd, data);
Send(packet);
if (Send(packet))
PUB.logxbee.AddI($"Send status {packet.Length} {packet.HexString()}");
LastStatusSendTime = DateTime.Now;
}
catch (Exception ex)