From e66efbbe8df2dd4e7de0a1e9bd129cf92e00f92f Mon Sep 17 00:00:00 2001 From: vikle012 Date: Wed, 11 Sep 2019 13:57:14 +0200 Subject: Initializes repo. --- Kod/display/ClientServerApp/Server/Server.cpp | 418 ++++++++++++++++++++++++++ 1 file changed, 418 insertions(+) create mode 100644 Kod/display/ClientServerApp/Server/Server.cpp (limited to 'Kod/display/ClientServerApp/Server/Server.cpp') diff --git a/Kod/display/ClientServerApp/Server/Server.cpp b/Kod/display/ClientServerApp/Server/Server.cpp new file mode 100644 index 0000000..7a7dc23 --- /dev/null +++ b/Kod/display/ClientServerApp/Server/Server.cpp @@ -0,0 +1,418 @@ +//============================================================================ +// Name : Server.cpp +// Author : Erik Hellström, hellstrom@isy.liu.se, 2008-12-14 +// Modified : Emil Larsson, lime@isy.liu.se, 2012-01-13 +// +// Description : The server sends data on request from the client. Will +// loop until an error occurs or the client requests shutdown. +// +//============================================================================ + +#include +#include +#include +#include "ComConduit.h" +#include "WriteABuffer.h" +#include "ReadABuffer.h" + +// +// Show the command-line usage +// +void Usage(char* argv[]) { + + printf("\nUsage: %s \n\n",argv[0]); + printf(" -P= Selects the COM port, ex: -Pcom1.\n"); + printf("\n\n"); +} + + +// +// Module main function +// +int main(int argc, char* argv[]) { + + + // Conduit object + ComConduit Link; + // Key + KeyType key[KEY_LEN] = COM_KEY; + // Work variables + int i; + char c,*ptr; + wchar_t data[COMSTR_LEN]; + wchar_t* ptrData = &data[0]; + + // Data that will be saved to the buffer + wchar_t dataFromLCD[COMSTR_LEN]; + wchar_t* ptrDataFromLCD = &dataFromLCD[0]; + + FlagType ret; + unsigned char portnum; + char port[] = "COM1"; + // LPCWSTR port[] = "COM1"; + int counter=1; + + + DCB dcb; + COMMTIMEOUTS CommTimeouts; + HANDLE hCom; + + WaitResult wr; + + // Initialize data + portnum = '0'; + + // + // Parse the command-line. + // + for (i=1; i: %d\n",counter, DC); +// printf("Buffer nr: %d, \t: %d\n",counter, ptrData[1]); + + + + unsigned char readChar[COMSTR_LEN]; + unsigned char* ptr_readChar = &readChar[0]; + + int jj = 0; + if (DC == DC1){ + readBufLen = 1; + ReadABuffer(ptr_readChar,readBufLen,hCom); + dataFromLCD[0] = 0; + dataFromLCD[1] = readBufLen; + dataFromLCD[2] = (wchar_t) ptr_readChar[0]; + jj = 3; + } + else if (DC == DC2){ + ReadABuffer(ptr_readChar,3,hCom); + + dataFromLCD[2] = (wchar_t) ptr_readChar[0]; + dataFromLCD[3] = (wchar_t) ptr_readChar[1]; + dataFromLCD[4] = (wchar_t) ptr_readChar[2]; + readBufLen = (int) ptr_readChar[2]; + + for (jj=0; jj < readBufLen+2; jj++){ + ReadABuffer(ptr_readChar,1,hCom); + dataFromLCD[5+jj] = (wchar_t) ptr_readChar[0]; + } + jj = jj+5; + dataFromLCD[0] = 0; + dataFromLCD[1] = readBufLen+4; + } + else{ + printf("Data in Shared memory will not be written to the LCD buffer \nbecause the data package is not correct!!! \n\n"); + printSHM = 0; + }; + + /* Stop with a "null" char */ + dataFromLCD[jj] = (wchar_t) '\0'; + +// unsigned char readChar; +// unsigned char* ptr_readChar = &readChar; +// ReadABuffer(ptr_readChar,20,hCom); + + + if (printSHM == 1){ +// printf("After %d iteration(s), Content in Shared memory (after LCD \nbuffer is written to the Shared memory): \n",counter); + printf("After %d iteration(s), Content in Shared memory (after LCD buffer is written):\n[",counter); + for (ii=2; ii < dataFromLCD[1]+1; ii++) + { + // ReadABuffer(ptr_readChar,1,hCom); + printf("%d, ", dataFromLCD[ii]); + // printf("After %d iteration(s), Content in Shared memory: %d, ",counter, dataFromLCD[ii]); + } + printf("%d]", dataFromLCD[ii]); + printf("\n\n"); + } + +// ReadABuffer(ptr_readChar,10,hCom); + +// printf("\nSend buffer nr: %d, \t: %d\n",counter, ptr_readChar[0]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[1]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[2]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[3]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[4]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[5]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[6]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[7]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[8]); +// printf("Send buffer nr: %d, \t: %d\n",counter, ptr_readChar[9]); +// printf("Send buffer nr: %d, \t: %d\n\n",counter, ptr_readChar[10]); + + counter++; + +// int ii; +// for (ii=0; ii < 10; ii++) +// { +// +// // copy each element +// dataFromLCD[ii] = (wchar_t) ptr_readChar[ii]; +// +// } +// /* Stop with a "null" char */ +// dataFromLCD[ii] = (wchar_t) '\0'; + + + // Set data in shm + if(!Link.SetData(dataFromLCD)) { + fprintf(stderr,"SetData() failed.\n"); + return EXIT_FAIL; + } + + + // printf("\t\n"); + } + + + + + // + // Shutdown + // + + // Close COM port + if(CloseHandle(hCom) == 0) { + fprintf(stderr,"\nCan't close com-port.\n"); + ret = EXIT_FAIL; + } + + // Tell eventual clients to shutdown + if(!Link.CauseShutdown()) { + fprintf(stderr,"\nCauseShutdown() failed.\n"); + ret = EXIT_FAIL; + } + // Wait for clients to shutdown + msleep(500); + // Shutdown server + if(!Link.Shutdown()) { + fprintf(stderr,"Shutdown() failed.\n"); + ret = EXIT_FAIL; + } + // Exit + if(ret == EXIT_OK) + fprintf(stdout, "\nClean exit.\n"); + + return ret; +} \ No newline at end of file -- cgit v1.2.1