CMakeLists.txt | ●●●●● patch | view | raw | blame | history | |
cmake/Modules/FindOscPack.cmake | ●●●●● patch | view | raw | blame | history | |
src/G4Export.cpp | ●●●●● patch | view | raw | blame | history |
CMakeLists.txt
@@ -5,6 +5,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") find_package(G4Track REQUIRED) find_package(OscPack REQUIRED) set(SOURCE_FILES src/G4Export.cpp @@ -17,5 +18,5 @@ src/struct.h) add_executable(g4export ${SOURCE_FILES}) target_include_directories(g4export PRIVATE ${G4Track_INCLUDE_DIRS}) target_link_libraries(g4export ${G4Track_LIBRARIES}) target_include_directories(g4export PRIVATE ${G4Track_INCLUDE_DIRS} ${OscPack_INCLUDE_DIRS}) target_link_libraries(g4export ${G4Track_LIBRARIES} ${OscPack_LIBRARIES}) cmake/Modules/FindOscPack.cmake
New file @@ -0,0 +1,18 @@ find_path(OscPack_INCLUDE_DIR NAMES osc/OscPacketListener.h PATH_SUFFIXES oscpack) find_library(OscPack_LIBRARY NAMES liboscpack.so) IF (OscPack_INCLUDE_DIR AND OscPack_LIBRARY) SET(OscPack_FOUND TRUE) SET(OscPack_INCLUDE_DIRS ${OscPack_INCLUDE_DIR}) SET(OscPack_LIBRARIES ${OscPack_LIBRARY}) ENDIF (OscPack_INCLUDE_DIR AND OscPack_LIBRARY) IF (OscPack_FOUND) IF (NOT OscPack_FIND_QUIETLY) MESSAGE(STATUS "Found liboscpack: ${OscPack_LIBRARIES}") ENDIF (NOT OscPack_FIND_QUIETLY) ELSE (OscPack_FOUND) IF (OscPack_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find liboscpack") ENDIF (OscPack_FIND_REQUIRED) ENDIF (OscPack_FOUND) src/G4Export.cpp
@@ -6,11 +6,16 @@ #include "G4Hub.h" #include <string.h> #include <unistd.h> #include <memory> #include "clipp.h" #include <ip/UdpSocket.h> #include <osc/OscOutboundPacketStream.h> using namespace clipp; using std::cout; using std::string; #define OUTPUT_BUFFER_SIZE 512 int RunCollect=0; std::unique_ptr<UdpTransmitSocket> transmitSocket; void* Collect(REND_STRUCT* prs){ @@ -39,11 +44,18 @@ i++; prs->hubreadmap=0; prs->tot_hubs_on_system=prs->pTrk->GetHubsPno(prs); char buffer[OUTPUT_BUFFER_SIZE]; osc::OutboundPacketStream p( buffer, OUTPUT_BUFFER_SIZE ); p << osc::BeginBundleImmediate; for (int i=0;i<prs->numHub;i++){ auto dat = prs->hubList[i].GetPnoData()[0]; printf("sns: %i: [%f;%f;%f],[%f,%f,%f]\n",i, dat[0],dat[1],dat[2], dat[3],dat[4],dat[5]); //printf("sns: %i: [%f;%f;%f],[%f,%f,%f]\n",i, dat[0],dat[1],dat[2], dat[3],dat[4],dat[5]); p << osc::BeginMessage( (string("/hub/") + std::to_string(i)).c_str() ) << dat[0] << dat[1] << dat[2] << dat[3] << dat[4] << dat[5] << osc::EndMessage; } p << osc::EndBundle; transmitSocket->Send( p.Data(), p.Size() ); usleep(15000); // usleep(8000); } @@ -56,17 +68,20 @@ CG4Trk trk; REND_STRUCT rs; string cfgFile; string oscSink; string oscSinkAddr; int oscSinkPort; auto cli = ( value("c4g configuration file", cfgFile), value("osc sink", oscSink) value("osc sink address", oscSinkAddr), integer("osc sink port", oscSinkPort) ); if(!parse(argc, argv, cli)) { cout << make_man_page(cli, argv[0]); return 1; } transmitSocket = std::make_unique<UdpTransmitSocket>( IpEndpointName( oscSinkAddr.c_str(), oscSinkPort ) ); memset(rs.viewTrans,0,sizeof(float)*3); rs.srcScale=rs.senScale=0.5; rs.counter=0;