34 public const string RobotPing =
"p";
35 public const string RobotReset =
"r";
36 public const string RobotStartWithoutWatchdog =
"u";
37 public const string RobotStartWithWatchdog =
"W";
38 public const string RobotGetBattery =
"v";
39 public const string RobotGetBusyState =
"b";
40 public const string RobotMove =
"M";
41 public const string RobotTurn =
"T";
42 public const string RobotGetVersion =
"V";
43 public const string RobotPowerOff =
"z";
50 private string receivedHeader = null;
51 private string receivedData = null;
53 public delegate
void CommandReceivedEvent(
string header,
string data, byte[] buffer);
54 public CommandReceivedEvent commandReceivedEvent = null;
56 public double timeout = 100;
64 CommunicationLostWithRobot,
65 CommunicationLostWithServer
71 this.commandReceivedEvent += callback;
76 if (commandManager != null) commandManager.
Close();
81 string[] msgs = msg.Split(
':');
83 if (msgs.Length >= 1) receivedHeader = msgs[0];
84 else receivedHeader = null;
86 if (msgs.Length >= 2) receivedData = msgs[1];
87 else receivedData = null;
89 this.commandReceivedEvent?.Invoke(receivedHeader, receivedData, buffer);
92 public bool Open(
string hostname)
97 public bool Open(
string hostname,
int port)
99 if (commandManager != null)
return commandManager.
Open(hostname, port);
105 if (commandManager != null) commandManager.
Close();
110 return header +
":" + data;
113 private void SplitCommand(
string cmd, out
string header, out
string data)
115 string[] cmdParts = cmd.Split(
':');
117 if (cmdParts.Length > 0) header = cmdParts[0];
120 if (cmdParts.Length > 1) data = cmdParts[1];
136 else if (answer.Length == 0) status =
CommandStatus.CommunicationLostWithServer;
154 return DecodeStatus(localStatus, answer);
167 return DecodeStatus(localStatus, answer);
180 return DecodeStatus(localStatus, answer);
193 return DecodeStatus(localStatus, answer);
206 return DecodeStatus(localStatus, answer);
219 return DecodeStatus(localStatus, answer);
232 return DecodeStatus(localStatus, answer);
245 return DecodeStatus(localStatus, answer);
281 return DecodeStatus(localStatus, answer);
300 string[] msg = answer.Split(
':');
325 return DecodeStatus(localStatus, answer);
338 return DecodeStatus(localStatus, answer);
351 return DecodeStatus(localStatus, answer);
364 return DecodeStatus(localStatus, answer);
377 return DecodeStatus(localStatus, answer);
390 return DecodeStatus(localStatus, answer);
403 return DecodeStatus(localStatus, answer);
416 return DecodeStatus(localStatus, answer);
const string HeaderMtsDmbOrder
const string HeaderStmImage
CommandStatus RobotGetVersion(out string version)
CommandStatus RobotStartWithoutWatchdog()
const int defaultPort
Default server port number
CommandStatus CameraArenaInfirm()
bool Open(string hostname)
Open the specified hostname server, using default port number.
const string RobotGetBattery
Command Manager. Use for timeout managment during reception of data Used as intermediate layer betwee...
const string HeaderStmBat
const string RobotGetVersion
const string DataCamComputePosition
void OnCommandReceived(string msg, byte[] buffer)
const string RobotPowerOff
CommandStatus RobotGetBattery()
CommandStatus RobotStartWithWatchdog()
CommandManagerStatus SendCommand(string cmd, out string answer, double timeout)
Sends a command to TCP server
bool Open(string hostname, int port)
const string HeaderStmAck
void SplitCommand(string cmd, out string header, out string data)
const string RobotStartWithoutWatchdog
const string HeaderStmMes
CommandStatus RobotPing()
const string DataCamInfirm
CommandStatus CameraComputePosition()
CommandStatus CameraStopComputePosition()
CommandStatus CameraArenaConfirm()
const string DataComClose
CommandStatus CameraAskArena()
const string HeaderStmNoAck
CommandStatus RobotReset()
CommandStatus CameraClose()
const string HeaderStmPos
DestijlCommandManager(CommandReceivedEvent callback)
const string DataCamArenaConfirm
CommandStatus RobotTurn(int angle)
string CreateCommand(string header, string data)
CommandStatus CameraOpen()
const string HeaderMtsCamera
CommandStatus RobotPowerOff()
const string DataCamClose
const string DataCamAskArena
const string HeaderMtsMessage
const string HeaderMtsComDmb
Static class for TCP client
CommandStatus RobotCloseCom()
CommandStatus RobotMove(int distance)
CommandManagerStatus
Available status when sending command
const string DataCamStopComputePosition
CommandStatus RobotOpenCom()
CommandStatus DecodeStatus(CommandManager.CommandManagerStatus localStatus, string answer)
bool Open(string hostname)
const string HeaderStmLostDmb
const string RobotStartWithWatchdog
void Close()
Close connection to server