From df8afa9c7c70e32e3172c9b64acba303af70654d Mon Sep 17 00:00:00 2001 From: zwarenelle Date: Mon, 25 Mar 2024 22:12:43 +0100 Subject: [PATCH] add c++ code for conversion --- .vscode/settings.json | 57 +++++++++ src/Client/Ultrasonic/Makefile | 91 +++++++++++++++ src/Client/Ultrasonic/Ultrasonic | Bin 0 -> 34848 bytes src/Client/Ultrasonic/Ultrasonic.cpp | 80 +++++++++++++ src/Client/Ultrasonic/Ultrasonic.d | 166 +++++++++++++++++++++++++++ src/Client/Ultrasonic/Ultrasonic.h | 11 ++ 6 files changed, 405 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 src/Client/Ultrasonic/Makefile create mode 100755 src/Client/Ultrasonic/Ultrasonic create mode 100644 src/Client/Ultrasonic/Ultrasonic.cpp create mode 100644 src/Client/Ultrasonic/Ultrasonic.d create mode 100644 src/Client/Ultrasonic/Ultrasonic.h diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b787814 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,57 @@ +{ + "files.associations": { + "array": "cpp", + "string": "cpp", + "string_view": "cpp", + "ranges": "cpp", + "iostream": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "map": "cpp", + "set": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "cinttypes": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/src/Client/Ultrasonic/Makefile b/src/Client/Ultrasonic/Makefile new file mode 100644 index 0000000..3d829be --- /dev/null +++ b/src/Client/Ultrasonic/Makefile @@ -0,0 +1,91 @@ +# +# 'make' build executable file 'main' +# 'make clean' removes all .o and executable files +# + +# define the Cpp compiler to use +CXX = g++ + +# define any compile-time flags +CXXFLAGS := -std=c++17 -Wall -Wextra -g -pthread -MD + +# define library paths in addition to /usr/lib +# if I wanted to include libraries not in /usr/lib I'd specify +# their path using -Lpath, something like: +LFLAGS = + +# define output directory +OUTPUT := output + +# define source directory +SRC := src + +# define include directory +INCLUDE := include + +# define lib directory +LIB := lib + +ifeq ($(OS),Windows_NT) +MAIN := main.exe +SOURCEDIRS := $(SRC) +INCLUDEDIRS := $(INCLUDE) +LIBDIRS := $(LIB) +FIXPATH = $(subst /,\,$1) +RM := del /q /f +MD := mkdir +else +MAIN := main +SOURCEDIRS := $(shell find $(SRC) -type d) +INCLUDEDIRS := $(shell find $(INCLUDE) -type d) +LIBDIRS := $(shell find $(LIB) -type d) +FIXPATH = $1 +RM = rm -f +MD := mkdir -p +endif + +# define any directories containing header files other than /usr/include +INCLUDES := $(patsubst %,-I%, $(INCLUDEDIRS:%/=%)) + +# define the C libs +LIBS := $(patsubst %,-L%, $(LIBDIRS:%/=%)) + +# define the C source files +SOURCES := $(wildcard $(patsubst %,%/*.cpp, $(SOURCEDIRS))) + +# define the C object files +OBJECTS := $(SOURCES:.cpp=.o) + +# +# The following part of the makefile is generic; it can be used to +# build any executable just by changing the definitions above and by +# deleting dependencies appended to the file from 'make depend' +# + +OUTPUTMAIN := $(call FIXPATH,$(OUTPUT)/$(MAIN)) + +all: $(OUTPUT) $(MAIN) + @echo Executing 'all' complete! + +$(OUTPUT): + $(MD) $(OUTPUT) + +$(MAIN): $(OBJECTS) + $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(OUTPUTMAIN) $(OBJECTS) $(LFLAGS) $(LIBS) + +# this is a suffix replacement rule for building .o's from .c's +# it uses automatic variables $<: the name of the prerequisite of +# the rule(a .c file) and $@: the name of the target of the rule (a .o file) +# (see the gnu make manual section about automatic variables) +.cpp.o: + $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ + +.PHONY: clean +clean: + $(RM) $(OUTPUTMAIN) + $(RM) $(call FIXPATH,$(OBJECTS)) + @echo Cleanup complete! + +run: all + ./$(OUTPUTMAIN) + @echo Executing 'run: all' complete! \ No newline at end of file diff --git a/src/Client/Ultrasonic/Ultrasonic b/src/Client/Ultrasonic/Ultrasonic new file mode 100755 index 0000000000000000000000000000000000000000..19b04afcbe4b2f1f05d6e094de0b51c17047875c GIT binary patch literal 34848 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 literal 0 HcmV?d00001 diff --git a/src/Client/Ultrasonic/Ultrasonic.cpp b/src/Client/Ultrasonic/Ultrasonic.cpp new file mode 100644 index 0000000..9b8a6f5 --- /dev/null +++ b/src/Client/Ultrasonic/Ultrasonic.cpp @@ -0,0 +1,80 @@ +#include "Ultrasonic.h" + +int main() { + // Open the serial port. Change device path as needed (currently set to an standard FTDI USB-UART cable type device) + int serial_port = open("/dev/ttyUSB0", O_RDWR); + + // Create new termios struct, we call it 'tty' for convention + struct termios tty; + + // Read in existing settings, and handle any error + if(tcgetattr(serial_port, &tty) != 0) { + printf("Error %i from tcgetattr: %s\n", errno, strerror(errno)); + return 1; + } + + tty.c_cflag &= ~PARENB; // Clear parity bit, disabling parity (most common) + tty.c_cflag &= ~CSTOPB; // Clear stop field, only one stop bit used in communication (most common) + tty.c_cflag &= ~CSIZE; // Clear all bits that set the data size + tty.c_cflag |= CS8; // 8 bits per byte (most common) + tty.c_cflag &= ~CRTSCTS; // Disable RTS/CTS hardware flow control (most common) + tty.c_cflag |= CREAD | CLOCAL; // Turn on READ & ignore ctrl lines (CLOCAL = 1) + + tty.c_lflag &= ~ICANON; + tty.c_lflag &= ~ECHO; // Disable echo + tty.c_lflag &= ~ECHOE; // Disable erasure + tty.c_lflag &= ~ECHONL; // Disable new-line echo + tty.c_lflag &= ~ISIG; // Disable interpretation of INTR, QUIT and SUSP + tty.c_iflag &= ~(IXON | IXOFF | IXANY); // Turn off s/w flow ctrl + tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL); // Disable any special handling of received bytes + + tty.c_oflag &= ~OPOST; // Prevent special interpretation of output bytes (e.g. newline chars) + tty.c_oflag &= ~ONLCR; // Prevent conversion of newline to carriage return/line feed + // tty.c_oflag &= ~OXTABS; // Prevent conversion of tabs to spaces (NOT PRESENT ON LINUX) + // tty.c_oflag &= ~ONOEOT; // Prevent removal of C-d chars (0x004) in output (NOT PRESENT ON LINUX) + + tty.c_cc[VTIME] = 10; // Wait for up to 1s (10 deciseconds), returning as soon as any data is received. + tty.c_cc[VMIN] = 0; + + // Set in/out baud rate to be 9600 + cfsetispeed(&tty, B9600); + cfsetospeed(&tty, B9600); + + // Save tty settings, also checking for error + if (tcsetattr(serial_port, TCSANOW, &tty) != 0) { + printf("Error %i from tcsetattr: %s\n", errno, strerror(errno)); + return 1; + } + + // Write to serial port + unsigned char msg[] = { 0x22, 0x00, 0x00, 0x22 }; + write(serial_port, msg, sizeof(msg)); + + // Allocate memory for read buffer, set size according to your needs + char read_buf [256]; + + // Normally you wouldn't do this memset() call, but since we will just receive + // ASCII data for this example, we'll set everything to 0 so we can + // call printf() easily. + memset(&read_buf, '\0', sizeof(read_buf)); + + // Read bytes. The behaviour of read() (e.g. does it block?, + // how long does it block for?) depends on the configuration + // settings above, specifically VMIN and VTIME + int num_bytes = read(serial_port, &read_buf, sizeof(read_buf)); + + // n is the number of bytes read. n may be 0 if no bytes were received, and can also be -1 to signal an error. + if (num_bytes < 0) { + printf("Error reading: %s", strerror(errno)); + return 1; + } + + + for (int i = 0; i < num_bytes; ++i) + std::cout << read_buf[i]; + std::cout << std::endl; + // printf("Read %i bytes. Received message: %s", num_bytes, read_buf); + + close(serial_port); + return 0; // success +}; \ No newline at end of file diff --git a/src/Client/Ultrasonic/Ultrasonic.d b/src/Client/Ultrasonic/Ultrasonic.d new file mode 100644 index 0000000..4060c79 --- /dev/null +++ b/src/Client/Ultrasonic/Ultrasonic.d @@ -0,0 +1,166 @@ +Ultrasonic: Ultrasonic.cpp /usr/include/stdc-predef.h Ultrasonic.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/10/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/10/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h /usr/include/c++/10/iostream \ + /usr/include/x86_64-linux-gnu/c++/10/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/os_defines.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/cpu_defines.h \ + /usr/include/c++/10/pstl/pstl_config.h /usr/include/c++/10/ostream \ + /usr/include/c++/10/ios /usr/include/c++/10/iosfwd \ + /usr/include/c++/10/bits/stringfwd.h \ + /usr/include/c++/10/bits/memoryfwd.h /usr/include/c++/10/bits/postypes.h \ + /usr/include/c++/10/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/c++/10/exception /usr/include/c++/10/bits/exception.h \ + /usr/include/c++/10/bits/exception_ptr.h \ + /usr/include/c++/10/bits/exception_defines.h \ + /usr/include/c++/10/bits/cxxabi_init_exception.h \ + /usr/include/c++/10/typeinfo /usr/include/c++/10/bits/hash_bytes.h \ + /usr/include/c++/10/new /usr/include/c++/10/bits/nested_exception.h \ + /usr/include/c++/10/bits/move.h /usr/include/c++/10/type_traits \ + /usr/include/c++/10/bits/char_traits.h \ + /usr/include/c++/10/bits/stl_algobase.h \ + /usr/include/c++/10/bits/functexcept.h \ + /usr/include/c++/10/bits/cpp_type_traits.h \ + /usr/include/c++/10/ext/type_traits.h \ + /usr/include/c++/10/ext/numeric_traits.h \ + /usr/include/c++/10/bits/stl_pair.h \ + /usr/include/c++/10/bits/stl_iterator_base_types.h \ + /usr/include/c++/10/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/10/bits/concept_check.h \ + /usr/include/c++/10/debug/assertions.h \ + /usr/include/c++/10/bits/stl_iterator.h \ + /usr/include/c++/10/bits/ptr_traits.h /usr/include/c++/10/debug/debug.h \ + /usr/include/c++/10/bits/predefined_ops.h /usr/include/c++/10/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/10/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/c++/10/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/c++locale.h \ + /usr/include/c++/10/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/10/cctype \ + /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/c++/10/bits/ios_base.h /usr/include/c++/10/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/atomic_word.h \ + /usr/include/c++/10/bits/locale_classes.h /usr/include/c++/10/string \ + /usr/include/c++/10/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/c++allocator.h \ + /usr/include/c++/10/ext/new_allocator.h \ + /usr/include/c++/10/bits/ostream_insert.h \ + /usr/include/c++/10/bits/cxxabi_forced.h \ + /usr/include/c++/10/bits/stl_function.h \ + /usr/include/c++/10/backward/binders.h \ + /usr/include/c++/10/bits/range_access.h \ + /usr/include/c++/10/initializer_list \ + /usr/include/c++/10/bits/iterator_concepts.h \ + /usr/include/c++/10/concepts /usr/include/c++/10/bits/range_cmp.h \ + /usr/include/c++/10/bits/basic_string.h \ + /usr/include/c++/10/ext/alloc_traits.h \ + /usr/include/c++/10/bits/alloc_traits.h \ + /usr/include/c++/10/bits/stl_construct.h /usr/include/c++/10/string_view \ + /usr/include/c++/10/bits/functional_hash.h \ + /usr/include/c++/10/bits/string_view.tcc \ + /usr/include/c++/10/ext/string_conversions.h /usr/include/c++/10/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/alloca.h /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/c++/10/bits/std_abs.h /usr/include/c++/10/cstdio \ + /usr/include/c++/10/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/10/bits/charconv.h \ + /usr/include/c++/10/bits/basic_string.tcc \ + /usr/include/c++/10/bits/locale_classes.tcc \ + /usr/include/c++/10/system_error \ + /usr/include/x86_64-linux-gnu/c++/10/bits/error_constants.h \ + /usr/include/c++/10/stdexcept /usr/include/c++/10/streambuf \ + /usr/include/c++/10/bits/streambuf.tcc \ + /usr/include/c++/10/bits/basic_ios.h \ + /usr/include/c++/10/bits/locale_facets.h /usr/include/c++/10/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/ctype_base.h \ + /usr/include/c++/10/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/10/bits/ctype_inline.h \ + /usr/include/c++/10/bits/locale_facets.tcc \ + /usr/include/c++/10/bits/basic_ios.tcc \ + /usr/include/c++/10/bits/ostream.tcc /usr/include/c++/10/istream \ + /usr/include/c++/10/bits/istream.tcc /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/linux/falloc.h /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/termios.h /usr/include/x86_64-linux-gnu/bits/termios.h \ + /usr/include/x86_64-linux-gnu/bits/termios-struct.h \ + /usr/include/x86_64-linux-gnu/bits/termios-c_cc.h \ + /usr/include/x86_64-linux-gnu/bits/termios-c_iflag.h \ + /usr/include/x86_64-linux-gnu/bits/termios-c_oflag.h \ + /usr/include/x86_64-linux-gnu/bits/termios-baud.h \ + /usr/include/x86_64-linux-gnu/bits/termios-c_cflag.h \ + /usr/include/x86_64-linux-gnu/bits/termios-c_lflag.h \ + /usr/include/x86_64-linux-gnu/bits/termios-tcflow.h \ + /usr/include/x86_64-linux-gnu/bits/termios-misc.h \ + /usr/include/x86_64-linux-gnu/sys/ttydefaults.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h diff --git a/src/Client/Ultrasonic/Ultrasonic.h b/src/Client/Ultrasonic/Ultrasonic.h new file mode 100644 index 0000000..176078c --- /dev/null +++ b/src/Client/Ultrasonic/Ultrasonic.h @@ -0,0 +1,11 @@ +// C library headers +#include +#include +#include + +// Linux headers +#include // Contains file controls like O_RDWR +#include // Error integer and strerror() function +#include // Contains POSIX terminal control definitions +#include // write(), read(), close() +