agv 정보 전송 수정
This commit is contained in:
31
ReadMe.MD
31
ReadMe.MD
@@ -74,8 +74,8 @@ public enum DeviceAlias : byte
|
||||
[STX][LEN][ID][CMD][DATA][CRC16][ETX]
|
||||
```
|
||||
- **STX (Start of Text)**: 0x02
|
||||
- **ID (Client ID)**: 데이터 길이 (1바이트) : 디바이스식별코드(=DeviceType)
|
||||
- **LEN (Length)**: 데이터 길이 (1바이트) = {CMD+DATA}
|
||||
- **ID (Client ID)**: 데이터 길이 (1바이트) : 디바이스식별코드(=DeviceType)
|
||||
- **CMD (Command)**: 명령어 코드 (1바이트)
|
||||
- **DATA**: 명령어에 따른 데이터 (가변 길이)
|
||||
- **CRC16**: 데이터 무결성 검사 (2바이트)
|
||||
@@ -99,20 +99,20 @@ public enum DeviceAlias : byte
|
||||
3. **AGV**
|
||||
- H -> E | Move : cmd(100) : 대상태그까지 이동(자동이동)
|
||||
- Target[1] = {DeviceType}
|
||||
- TagID[4] = 0000
|
||||
- H -> E | Move : cmd(107) : 대상별칭까지 이동(자동이동)
|
||||
- Target[1] = {DeviceType}
|
||||
- TagID[4] = 0000
|
||||
- TagID[4] = "0000"
|
||||
|
||||
- H -> E | Stop : cmd(101) : 멈춤
|
||||
- H -> E | Reset : cmd(102) : 오류 소거
|
||||
- H -> E | Charge On: cmd(103) : 충전실행(충전기 이동 후 자동 충전 진행)
|
||||
|
||||
- H -> E | SetCurrent : cmd(103) : 현재위치설정
|
||||
- Target[1] = {DeviceType}
|
||||
- Action[1] : 0=Charge Off, 1=Charge On
|
||||
- TagID[4] = "0000"
|
||||
|
||||
- H -> E | MoveManual : cmd(104) : 메뉴얼이동
|
||||
- Target[1] = {DeviceType}
|
||||
- Direction[1] : 0=Backward, 1=Forward, 2=TurnLeft, 3=TurnRight
|
||||
- Speed[1] : 0=Slow, 1=Normal, 2=Fast
|
||||
- Runtime[1] : 0 second
|
||||
|
||||
- H -> E | MarkStop : cmd(105) : 마크센서스톱
|
||||
- Target[1] = {DeviceType}
|
||||
|
||||
@@ -120,6 +120,21 @@ public enum DeviceAlias : byte
|
||||
- Target[1] = {DeviceType}
|
||||
- Action[1] : 0=STOP, 1=UP, 2=DOWN
|
||||
|
||||
- H -> E | Move : cmd(107) : 대상별칭까지 이동(자동이동)
|
||||
- Target[1] = {DeviceType}
|
||||
- AliasName[n] = ".....
|
||||
|
||||
- H -> E | MoveAuto : cmd(108) : 자동이동
|
||||
- Target[1] = {DeviceType}
|
||||
- MotDirection[1] : 0=Backward, 1=Forward
|
||||
- MagnetDirection[1] : 0=Straight,1=Left, 2=Right
|
||||
- Speed[1] : 0=Slow, 1=Normal, 2=Fast
|
||||
|
||||
- H -> E | Charge On: cmd(109) : 충전실행(충전기 이동 후 자동 충전 진행)
|
||||
- Target[1] = {DeviceType}
|
||||
- Action[1] : 0=Charge Off, 1=Charge On
|
||||
|
||||
|
||||
- E -> H | Move Complete : cmd(1) : 목적지이동완료 후 전송
|
||||
- TagID[4] : "0000"
|
||||
- E -> H | TagID Received : cmd(2) : 태그값 인식시 전송
|
||||
|
||||
@@ -11,11 +11,14 @@ namespace ENIGProtocol
|
||||
{
|
||||
Goto = 100,
|
||||
Stop = 101,
|
||||
Reset,
|
||||
SetCurrent,
|
||||
Manual,
|
||||
MarkStop,
|
||||
LiftControl
|
||||
Reset = 102,
|
||||
SetCurrent = 103,
|
||||
Manual = 104,
|
||||
MarkStop = 105,
|
||||
LiftControl = 106,
|
||||
GotoAlias = 107,
|
||||
AutoMove=108,
|
||||
ChargeControl=109,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -34,5 +37,7 @@ namespace ENIGProtocol
|
||||
PredictFix,
|
||||
TurnTimeout,
|
||||
TurnError,
|
||||
EmptyNode,
|
||||
Goto,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,14 +178,16 @@ namespace ENIG
|
||||
OnDataReceived?.Invoke(this, new DataEventArgs { ReceivedPacket = packet });
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
catch(Exception ex)
|
||||
{
|
||||
RaiseMessage(ex.Message, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 데이터 수신 처리 메서드 (시리얼 포트에서 데이터를 받았을 때 호출)
|
||||
private List<byte> buffer = new List<byte>();
|
||||
private int ProtocolParseError = 0;
|
||||
public void ProcessReceivedData(byte[] data)
|
||||
{
|
||||
buffer.AddRange(data);
|
||||
@@ -216,7 +218,12 @@ namespace ENIG
|
||||
byte[] packetData = buffer.Take(expectedLength).ToArray();
|
||||
buffer.RemoveRange(0, expectedLength);
|
||||
|
||||
ParsePacket(packetData);
|
||||
var parseOK = ParsePacket(packetData);
|
||||
if(parseOK==false) //분석이 실패되었다면 해당 데이터는 삭제한다.
|
||||
{
|
||||
ProtocolParseError += 1;
|
||||
if (ProtocolParseError > 3) buffer.Clear();
|
||||
} else ProtocolParseError = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include=".gitignore" />
|
||||
<None Include="ReadMe.MD" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -56,8 +56,8 @@ public enum DeviceType : byte
|
||||
[STX][LEN][ID][CMD][DATA][CRC16][ETX]
|
||||
```
|
||||
- **STX (Start of Text)**: 0x02
|
||||
- **LEN (Length)**: 데이터 길이 (1바이트) = {ID+CMD+DATA}
|
||||
- **ID (Client ID)**: 데이터 길이 (1바이트) : 디바이스식별코드(=DeviceType)
|
||||
- **LEN (Length)**: 데이터 길이 (1바이트) = {CMD+DATA}
|
||||
- **CMD (Command)**: 명령어 코드 (1바이트)
|
||||
- **DATA**: 명령어에 따른 데이터 (가변 길이)
|
||||
- **CRC16**: 데이터 무결성 검사 (2바이트)
|
||||
@@ -81,10 +81,10 @@ public enum DeviceType : byte
|
||||
3. **AGV**
|
||||
- H -> E | Move : cmd(100) : 대상태그까지 이동(자동이동)
|
||||
- Target[1] = {DeviceType}
|
||||
- TagID[4] = 0000
|
||||
- TagID[4] = "0000"
|
||||
- H -> E | Move : cmd(107) : 대상별칭까지 이동(자동이동)
|
||||
- Target[1] = {DeviceType}
|
||||
- TagID[4] = 0000
|
||||
- AliasName[n] = "....."
|
||||
- H -> E | Stop : cmd(101) : 멈춤
|
||||
- H -> E | Reset : cmd(102) : 오류 소거
|
||||
- H -> E | Charge On: cmd(103) : 충전실행(충전기 이동 후 자동 충전 진행)
|
||||
@@ -107,15 +107,16 @@ public enum DeviceType : byte
|
||||
- E -> H | TagID Received : cmd(2) : 태그값 인식시 전송
|
||||
- TagID[4] : "0000"
|
||||
|
||||
- E -> H | Status : cmd(3) - 총 13바이트
|
||||
- E -> H | Status : cmd(3) - 총 12바이트
|
||||
- Mode[1] : 0=manual, 1=auto
|
||||
- RunSt[1] : 0=stop, 1=run, 2=error
|
||||
- Diection[1] : 0=straight, 1=left, 2=right, 3=markstop
|
||||
MotDirection[1] : 0:Forward, 1:Backward, 0xFF:unknown
|
||||
- MagDiection[1] : 0=straight, 1=left, 2=right , 0xFF:unknown
|
||||
- Inposition[1] : 0=off, 1=on : 목적위치에 도달완료 시 설정 이동 이동시 OFF됨
|
||||
- ChargeSt[1] : 0=off, 1=on
|
||||
- CartSt[1] : 0=off, 1=on, 2=unknown
|
||||
- LiftSt[1] : 0=down , 1=up, 2=unknown
|
||||
- LastTag[6] : "000000" (ASCII 6바이트)
|
||||
- LastTag[4] : "0000" (ASCII 4바이트)
|
||||
|
||||
4. **Door**
|
||||
- H -> E | cmd(1): 출입문 열기
|
||||
|
||||
Reference in New Issue
Block a user