diff --git a/README.md b/README.md new file mode 100644 index 0000000..188a89b --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# BachelorThesis + +## About +This repository contains source codes for client-server network application capable to communicate with distance laser sensor DLS-C 15 via RS-232 interface, which was implemented as a part of bachelor thesis. + +## Author +Author: Jozef Simko + +School year: 3., Bachelor study, 2021/22 + +Study program: Computer Networks + +Organization: Technical University of Kosice (TUKE), Faculty of Electrical Engineering and Informatics (FEI) + +## Building +Implemented and tested on: +| Platform | OS | compiler | +|-----------------|---------------------------|-------------------------------------------------| +| Linux | Ubuntu 20.04.1 WLS2 | gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2) | +| Windows | Windows 10.0.19043 | gcc version 11.2.0 (MinGW-W64 x86_64-posix-seh) | +| Raspberry Pi | Linux raspberrypi 5.10.17 | gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) | + +#### LINUX +* CLIENT + - `gcc client.c -Wall -Werror -Wextra -o client` +* SERVER + - `gcc server.c rs232.c -Wall -Werroe -Wextra -o server` +#### WINDOWS +* CLIENT + - `gcc client.c -Wall -Wextra -lwsock32 -o client` +* SERVER + - `gcc server.c rs232.c -lwsock32 -Wall -Werror -Wextra -o server` + +## Launch +### Server +Server can be launched with 1 or 2 input parameters. The number of parameters determines what mode will be used - manual or automatic mode. + +**port** - specific number to identify communication processes of server + +**[config_file]** - configuration file with exact name of variables - check *config.cfg* file as example + +#### Manual mode +- server waits for input commands from client, sends them to laser sensor and returns results back to client + - `./server ` + +#### Automatic mode +- server loads variables from configuration file *config.txt*, starts measuring and sends results to client continuously. + - `./server [config_file]` + +### Client +Client has to be lauched with 2 input parameters. If server is in **manual mode**, the client always loads input commands from *commands.txt*. + +**IP address** - IP address of server the client tries to connect + +**port** - port number of server +- `./client ` + +## Demo +Demo program demonstrates how to create client-like program, which can connect to server in automatic mode and process resulting data. +#### Building +UNIX - `gcc demo.c -Wall -Werror -Wextra -o demo` + +WINDOWS - `gcc demo.c -Wall -Wextra -lwsock32 -o demo` + +#### Launch +No input parameters. + +Macros defines multiple variables: + +```c +#define IP_ADDRESS "192.168.0.101" // IP address of server +#define PORT 32500 // server port number +#define MAX_VALUE 1265 // upper limit to compare (depends on used units) +#define MIN_VALUE 1200 // lower limit to compare (depends on used units) +``` + +## References +[WinLibs GCC](https://winlibs.com) + +[RS-232 library](https://www.teuniz.net/RS-232/)