From d71e5fe7330fa51cdce466ec0df876eb9b8e721e Mon Sep 17 00:00:00 2001 From: Tobias Frust Date: Mon, 11 Jul 2016 14:58:00 +0200 Subject: UDP packets are sent out correctly --- src/Detector/Detector.cpp | 2 +- src/DetectorModule/DetectorModule.cpp | 36 ++++++++++++++++++----------------- src/main_client.cpp | 4 ++-- src/main_server.cpp | 6 ++++++ 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/Detector/Detector.cpp b/src/Detector/Detector.cpp index 658f485..5dde6d1 100644 --- a/src/Detector/Detector.cpp +++ b/src/Detector/Detector.cpp @@ -14,7 +14,7 @@ Detector::Detector(const std::string& address, const std::string& configPath, co timeIntervall_{timeIntervall}, numberOfDetectorModules_{27} { modules_.reserve(numberOfDetectorModules_); - for(auto i = 1; i <= numberOfDetectorModules_; i++){ + for(auto i = 0; i < numberOfDetectorModules_; i++){ modules_.emplace_back(i, address, configPath); } } diff --git a/src/DetectorModule/DetectorModule.cpp b/src/DetectorModule/DetectorModule.cpp index 789ac0e..bee50e9 100644 --- a/src/DetectorModule/DetectorModule.cpp +++ b/src/DetectorModule/DetectorModule.cpp @@ -54,8 +54,10 @@ auto DetectorModule::send() -> void{ // sendBuffer_[5] = (sizeof(std::size_t) >> 40) & 0xff; // sendBuffer_[6] = (sizeof(std::size_t) >> 48) & 0xff; // sendBuffer_[7] = (sizeof(std::size_t) >> 56) & 0xff; + unsigned int bufferSizeIndex = index_ % 1000; + unsigned int sinoSize = numberOfDetectorsPerModule_*numberOfProjections_; *reinterpret_cast(sendBuffer_.data()) = index_; - std::copy(buffer_.cbegin(), buffer_.cbegin()+numberOfDetectorsPerModule_*numberOfProjections_, sendBuffer_.begin()+sizeof(std::size_t)); + std::copy(((char*)buffer_.data())+sinoSize*bufferSizeIndex*sizeof(unsigned short), ((char*)buffer_.data())+(sinoSize*(1+bufferSizeIndex))*sizeof(unsigned short), sendBuffer_.begin()+sizeof(std::size_t)); client_.send(sendBuffer_.data(), sizeof(unsigned short)*numberOfDetectorsPerModule_*numberOfProjections_+sizeof(std::size_t)); ++index_; } @@ -71,7 +73,7 @@ auto DetectorModule::readInput() -> void { if(path_.back() != '/') path_.append("/"); //open file - const std::string filePath = path_ + fileName_ + std::to_string(detectorID_) + fileEnding_; + const std::string filePath = path_ + fileName_ + std::to_string(detectorID_+1) + fileEnding_; BOOST_LOG_TRIVIAL(debug) << "DetectorModule: Path = " << filePath; std::ifstream input(filePath, std::ios::in | std::ios::binary); if(input){ @@ -88,20 +90,20 @@ auto DetectorModule::readInput() -> void { } auto DetectorModule::readConfig(const std::string& configFile) -> bool { - ConfigReader configReader = ConfigReader(configFile.data()); - int samplingRate, scanRate; - if (configReader.lookupValue("numberOfFanDetectors", numberOfDetectors_) - && configReader.lookupValue("dataInputPath", path_) - && configReader.lookupValue("dataFileName", fileName_) - && configReader.lookupValue("dataFileEnding", fileEnding_) - && configReader.lookupValue("numberOfPlanes", numberOfPlanes_) - && configReader.lookupValue("samplingRate", samplingRate) - && configReader.lookupValue("scanRate", scanRate) - && configReader.lookupValue("numberOfDataFrames", numberOfFrames_)) { - numberOfProjections_ = samplingRate * 1000000 / scanRate; - return EXIT_SUCCESS; - } - - return EXIT_FAILURE; + ConfigReader configReader = ConfigReader(configFile.data()); + int samplingRate, scanRate; + if (configReader.lookupValue("numberOfFanDetectors", numberOfDetectors_) + && configReader.lookupValue("dataInputPath", path_) + && configReader.lookupValue("dataFileName", fileName_) + && configReader.lookupValue("dataFileEnding", fileEnding_) + && configReader.lookupValue("numberOfPlanes", numberOfPlanes_) + && configReader.lookupValue("samplingRate", samplingRate) + && configReader.lookupValue("scanRate", scanRate) + && configReader.lookupValue("numberOfDataFrames", numberOfFrames_)) { + numberOfProjections_ = samplingRate * 1000000 / scanRate; + return EXIT_SUCCESS; } + return EXIT_FAILURE; +} + diff --git a/src/main_client.cpp b/src/main_client.cpp index ed7d285..b88341a 100644 --- a/src/main_client.cpp +++ b/src/main_client.cpp @@ -24,9 +24,9 @@ int main (int argc, char *argv[]){ std::cout << "Sending UDP packages: " << std::endl; auto configPath = std::string { "config.cfg" }; - std::string address = "localhost"; + std::string address = "127.0.0.1"; - Detector detector{address, configPath, 1000u}; + Detector detector{address, configPath, 1000000u}; //DetectorModule detModule0 = DetectorModule(1, address, configPath); diff --git a/src/main_server.cpp b/src/main_server.cpp index a645f49..6e936e4 100644 --- a/src/main_server.cpp +++ b/src/main_server.cpp @@ -35,6 +35,7 @@ int main (int argc, char *argv[]){ UDPServer server = UDPServer(address, port); std::size_t length{32768}; + std::size_t lastIndex{0}; std::vector buf(16000); @@ -52,6 +53,11 @@ int main (int argc, char *argv[]){ std::size_t index = *((std::size_t *)buf.data()); if(index%1000 == 99) printf("%lu\n", index); + if(lastIndex != (index-1)) + BOOST_LOG_TRIVIAL(warning) << "Packet loss or wrong order!"; + + lastIndex = index; + BOOST_LOG_TRIVIAL(debug) << "Server: Received " << bytes << " Bytes with Index " << index; } -- cgit v1.2.1