From b18e19bee517d70d36c00f5561a075d46b0c20bd Mon Sep 17 00:00:00 2001 From: masterm Date: Thu, 22 Feb 2007 23:37:00 +0000 Subject: +++ implemented command handler --- source/Concept/Framework/Concept.vcproj | 18 +++++++++ source/Concept/Framework/defines.h | 12 +++++- source/Concept/Framework/main.c | 21 +++++----- .../Concept/Framework/modules/executor/navigator.c | 2 - .../modules/interpreter/command_handler.c | 45 ++++++++++++++++++++++ .../modules/interpreter/command_handler.h | 43 +++++++++++++++++++++ source/Concept/Framework/robot.c | 2 + source/Concept/Framework/stdafx.h | 1 + 8 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 source/Concept/Framework/modules/interpreter/command_handler.c create mode 100644 source/Concept/Framework/modules/interpreter/command_handler.h diff --git a/source/Concept/Framework/Concept.vcproj b/source/Concept/Framework/Concept.vcproj index b06f1f4..cff37ad 100644 --- a/source/Concept/Framework/Concept.vcproj +++ b/source/Concept/Framework/Concept.vcproj @@ -453,6 +453,24 @@ + + + + + + + + + + AddModule(newCommandHandler); + newCommandHandler = NULL; + } + //Init Position Tracker for(uint8 i = IO_POSITION_TRACKER_START; i < IO_POSITION_TRACKER_END; i++) { @@ -168,7 +176,7 @@ int main() uint16 value = 0; int8 value2 = 0; - Keyboard* ourKeyboard = localRobot->GetModule(IO_KEYBOARD_MAIN); + Command_Handler* ourCommandHandler = localRobot->GetModule(IO_COMMAND_HANDLER_MAIN); uint32 i = 1; Navigator* ourNavigator = localRobot->GetModule(IO_NAVIGATOR_MAIN); Position_Tracker* ourPosition_Tracker = localRobot->GetModule(IO_POSITION_TRACKER_MAIN); @@ -194,7 +202,7 @@ int main() //msleep(50); - if(!(i % 20)) + if(ourCommandHandler->displayDistanceSensors && !(i % 20)) { ourDisplay->Clear(); @@ -215,13 +223,8 @@ int main() ourDisplay->Print(value); ourDisplay->Print(";"); } - - if(!(i % 20)) - { - //ourAktuator->Kick(); - } - uint8 someInput = ourKeyboard->GetInput(); + /*uint8 someInput = ourKeyboard->GetInput(); //ourDisplay->Print("Ready to accept...", 1, 2); switch(someInput) { @@ -262,7 +265,7 @@ int main() case 12: ourLogic->SetKeeper(true); // Reset Position_Tracker break; - } + }*/ //ourDisplay->Clear(); if(!(i % 20)) diff --git a/source/Concept/Framework/modules/executor/navigator.c b/source/Concept/Framework/modules/executor/navigator.c index 023bf79..7c4618a 100755 --- a/source/Concept/Framework/modules/executor/navigator.c +++ b/source/Concept/Framework/modules/executor/navigator.c @@ -234,8 +234,6 @@ void Navigator::CalculateEngines() //(parent->GetModule(IO_DISPLAY_MAIN))->Print(vBack,10,3); //(parent->GetModule(IO_DISPLAY_MAIN))->Print(vRight,10,4); - - // Transfer the values to the engines Engine* curEngine = parent->GetModule(IO_ENGINE_DRIVE_LEFT); curEngine->SetSpeed(vLeft); diff --git a/source/Concept/Framework/modules/interpreter/command_handler.c b/source/Concept/Framework/modules/interpreter/command_handler.c new file mode 100644 index 0000000..dcd97b2 --- /dev/null +++ b/source/Concept/Framework/modules/interpreter/command_handler.c @@ -0,0 +1,45 @@ +#include "command_handler.h" + +//----------------------------------------------------------------------------- +void Command_Handler::Update() +{ + Keyboard* ourKeyboard = parent->GetModule(IO_KEYBOARD_MAIN); + + uint8 curInput = ourKeyboard->GetInput(); + + + while(curInput != 0xEE && curInput != 0xFF) + { + if(curInput == 10) + { + ExecuteCommand(); + } + else if(curInput == 11) + { + if(this->currentCommandLength > 0) + { + this->currentCommandLength--; + this->buffer[currentCommandLength] = NULL; + } + } + else if(curInput >= 0 && curInput <= 9) + { + if(this->currentCommandLength < COMMAND_BUFFER_SIZE) + { + this->buffer[this->currentCommandLength] = '0' + curInput; + this->currentCommandLength++; + } + } + + curInput = ourKeyboard->GetInput(); + } +} + +//----------------------------------------------------------------------------- +void Command_Handler::ExecuteCommand() +{ + if(this->buffer[0] == '5') + { + this->displayDistanceSensors = true; + } +} diff --git a/source/Concept/Framework/modules/interpreter/command_handler.h b/source/Concept/Framework/modules/interpreter/command_handler.h new file mode 100644 index 0000000..102797a --- /dev/null +++ b/source/Concept/Framework/modules/interpreter/command_handler.h @@ -0,0 +1,43 @@ +#ifndef _COMMAND_HANDLER_H +#define _COMMAND_HANDLER_H + +#include "../../stdafx.h" + +class Command_Handler : public IO_Module +{ +public: + Command_Handler() + { + this->parent = NULL; + this->moduleId = 0; + this->currentCommandLength = 0; + this->displayDistanceSensors = false; + } + + Command_Handler(uint32 commandHandlerId) + { + this->parent = NULL; + this->moduleId = commandHandlerId; + this->currentCommandLength = 0; + this->displayDistanceSensors = false; + + for(uint8 i = 0; i < COMMAND_BUFFER_SIZE; i++) + { + buffer[i] = NULL; + } + } + +protected: + uint8 currentCommandLength; + char* buffer[COMMAND_BUFFER_SIZE]; + + void ExecuteCommand(); + +public: + void Update(); + + //Command variables + bool displayDistanceSensors; +}; + +#endif diff --git a/source/Concept/Framework/robot.c b/source/Concept/Framework/robot.c index a630d4a..7653c61 100755 --- a/source/Concept/Framework/robot.c +++ b/source/Concept/Framework/robot.c @@ -88,6 +88,8 @@ bool Robot::RemoveModule(IO_Module* oldModule) //----------------------------------------------------------------------------- void Robot::Update() { + GetModule(IO_COMMAND_HANDLER_MAIN)->Update(); + GetModule(IO_BALL_TRACKER_MAIN)->Update(); GetModule(IO_POSITION_TRACKER_MAIN)->Update(); diff --git a/source/Concept/Framework/stdafx.h b/source/Concept/Framework/stdafx.h index a4054e3..88d8c85 100644 --- a/source/Concept/Framework/stdafx.h +++ b/source/Concept/Framework/stdafx.h @@ -20,6 +20,7 @@ #include "distance_sensor.h" #include "ir_sensor.h" #include "mouse_sensor.h" +#include "command_handler.h" #include "position_tracker.h" #include "ball_tracker.h" #include "navigator.h" -- cgit v1.2.3