From fa221cf421df17bc063e1a771cf723cd2c3a706c Mon Sep 17 00:00:00 2001 From: Sam Hos Date: Mon, 7 Oct 2024 13:22:52 +0200 Subject: [PATCH] made more changes it compiles now --- .gitignore | 1 + src/C++/Driver/CMakeLists.txt | 4 ++-- src/C++/Driver/Makefile | 27 +++++++++++++++++++++++++++ src/C++/Driver/src/CKobuki.cpp | 14 +++++++------- src/C++/Driver/src/CKobuki.h | 8 +++++--- src/C++/Driver/src/KobukiParser.cpp | 3 +++ src/C++/Driver/src/main.cpp | 5 +++-- 7 files changed, 48 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 9e2042e..8d10e8c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ src/C++/Driver/vgcore.42611 src/Socket/a.out src/C++/Driver/cmake_install.cmake src/C++/Socket/a.out +src/C++/Driver/Makefile diff --git a/src/C++/Driver/CMakeLists.txt b/src/C++/Driver/CMakeLists.txt index e497aa3..8416ecb 100644 --- a/src/C++/Driver/CMakeLists.txt +++ b/src/C++/Driver/CMakeLists.txt @@ -5,10 +5,10 @@ project(kobuki_control) find_package( OpenCV REQUIRED ) set(SOURCE_FILES - src/CKobuki.cpp - src/CKobuki.h src/KobukiParser.cpp src/KobukiParser.h + src/CKobuki.cpp + src/CKobuki.h src/main.cpp) add_executable(kobuki_control ${SOURCE_FILES}) diff --git a/src/C++/Driver/Makefile b/src/C++/Driver/Makefile index ea53047..c8881dc 100644 --- a/src/C++/Driver/Makefile +++ b/src/C++/Driver/Makefile @@ -153,6 +153,30 @@ src/CKobuki.cpp.s: $(MAKE) $(MAKESILENT) -f CMakeFiles/kobuki_control.dir/build.make CMakeFiles/kobuki_control.dir/src/CKobuki.cpp.s .PHONY : src/CKobuki.cpp.s +src/KobukiParser.o: src/KobukiParser.cpp.o +.PHONY : src/KobukiParser.o + +# target to build an object file +src/KobukiParser.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/kobuki_control.dir/build.make CMakeFiles/kobuki_control.dir/src/KobukiParser.cpp.o +.PHONY : src/KobukiParser.cpp.o + +src/KobukiParser.i: src/KobukiParser.cpp.i +.PHONY : src/KobukiParser.i + +# target to preprocess a source file +src/KobukiParser.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/kobuki_control.dir/build.make CMakeFiles/kobuki_control.dir/src/KobukiParser.cpp.i +.PHONY : src/KobukiParser.cpp.i + +src/KobukiParser.s: src/KobukiParser.cpp.s +.PHONY : src/KobukiParser.s + +# target to generate assembly for a file +src/KobukiParser.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/kobuki_control.dir/build.make CMakeFiles/kobuki_control.dir/src/KobukiParser.cpp.s +.PHONY : src/KobukiParser.cpp.s + src/main.o: src/main.cpp.o .PHONY : src/main.o @@ -189,6 +213,9 @@ help: @echo "... src/CKobuki.o" @echo "... src/CKobuki.i" @echo "... src/CKobuki.s" + @echo "... src/KobukiParser.o" + @echo "... src/KobukiParser.i" + @echo "... src/KobukiParser.s" @echo "... src/main.o" @echo "... src/main.i" @echo "... src/main.s" diff --git a/src/C++/Driver/src/CKobuki.cpp b/src/C++/Driver/src/CKobuki.cpp index 7731f31..9b4687d 100755 --- a/src/C++/Driver/src/CKobuki.cpp +++ b/src/C++/Driver/src/CKobuki.cpp @@ -4,13 +4,12 @@ #include #include + // plot p; static std::vector vectorX; static std::vector vectorY; static std::vector vectorGyroTheta; -KobukiParser parser; - // obsluha tty pod unixom int set_interface_attribs2(int fd, int speed, int parity) { @@ -267,16 +266,17 @@ void CKobuki::setSound(int noteinHz, int duration) pocet = write(HCom, &message, 9); } -void CKobuki::startCommunication(char *portname, bool CommandsEnabled, - void *userDataL) +void CKobuki::startCommunication(char *portname, bool CommandsEnabled, void *userDataL) { connect(portname); enableCommands(CommandsEnabled); userData = userDataL; int pthread_result; - pthread_result = - pthread_create(&threadHandle, NULL, KobukiProcess, (void *)this); + pthread_result = pthread_create(&threadHandle, NULL, KobukiProcess, (void *)this); + if (pthread_result != 0) { + std::cerr << "Error creating thread: " << pthread_result << std::endl; + } } int CKobuki::measure() @@ -295,7 +295,7 @@ int CKobuki::measure() // citat if (ok == 0) { - loop(userData, data); + loop(userData, parser.data); } free(message); } diff --git a/src/C++/Driver/src/CKobuki.h b/src/C++/Driver/src/CKobuki.h index 963f20d..9a99197 100755 --- a/src/C++/Driver/src/CKobuki.h +++ b/src/C++/Driver/src/CKobuki.h @@ -30,12 +30,12 @@ #include #include #include - -#include "graph.h" #include "KobukiParser.h" +#include "graph.h" using namespace std; + // typedef struct // { @@ -125,6 +125,7 @@ typedef long(*src_callback_kobuki_data) (void *user_data, TKobukiData &Kobuki_da class CKobuki { public: + CKobuki() { stopVlakno = 0; std::cout << "kobuki instantiated" << std::endl; @@ -159,13 +160,14 @@ public: void doRotation(long double th); void goToXy(long double xx, long double yy); std::ofstream odometry_log; - TKobukiData data; private: + KobukiParser parser; + int HCom; pthread_t threadHandle; // handle to the thread int threadID; // thread id diff --git a/src/C++/Driver/src/KobukiParser.cpp b/src/C++/Driver/src/KobukiParser.cpp index a0cf0b0..c7ae3b5 100644 --- a/src/C++/Driver/src/KobukiParser.cpp +++ b/src/C++/Driver/src/KobukiParser.cpp @@ -1,7 +1,9 @@ #include "KobukiParser.h" +#include int KobukiParser::parseKobukiMessage(TKobukiData &output, unsigned char *data) { //check if the checksum is correct + std::cout << "Parsing message" << std::endl; int rtrnvalue = checkChecksum(data); if (rtrnvalue != 0) return -2; @@ -64,6 +66,7 @@ int KobukiParser::parseKobukiMessage(TKobukiData &output, unsigned char *data) { // break; default: checkedValue += length + 2; // Skip data block if nothing matches + std::cout << "Unknown header: " << header << std::endl; break; } } diff --git a/src/C++/Driver/src/main.cpp b/src/C++/Driver/src/main.cpp index 04e90f4..6d28577 100644 --- a/src/C++/Driver/src/main.cpp +++ b/src/C++/Driver/src/main.cpp @@ -9,6 +9,7 @@ using namespace std; CKobuki robot; int movement(); int checkCenterCliff(); + KobukiParser parser; int main() { @@ -17,14 +18,14 @@ int main() // thread mv(movement); // mv.join(); //only exit once thread one is done running - checkCenterCliff(); + // checkCenterCliff(); } int checkCenterCliff() { while (true) { - std::cout << "cliffsensordata:" << parser.data.CliffSensorCenter << std::endl; + std::cout << "cliffsensordata:" << parser.data.BumperCenter << std::endl; } }