프로토콜 조정
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user