/** * @brief A frontend to AdsSyncReadWriteReqEx2() with port = defaultPort and pnRead = NULL */ int32_t AdsSyncReadWriteReq(PAmsAddr pAddr, uint32_t nIndexGroup, uint32_t nIndexOffset, uint32_t nReadLength, void *pReadData, uint32_t nWriteLength, void *pWriteData) { return AdsSyncReadWriteReqEx2(defaultPort, pAddr, nIndexGroup, nIndexOffset, nReadLength, pReadData, nWriteLength, pWriteData, NULL); }
uint32_t getHandleByNameExample(std::ostream& out, long port, const AmsAddr& server, const std::string handleName) { uint32_t handle = 0; const long handleStatus = AdsSyncReadWriteReqEx2(port, &server, ADSIGRP_SYM_HNDBYNAME, 0, sizeof(handle), &handle, handleName.size(), handleName.c_str(), nullptr); if (handleStatus) { out << "Create handle for '" << handleName << "' failed with: " << std::dec << handleStatus << '\n'; } return handle; }
uint32_t getSymbolSize(std::ostream& out, long port, const AmsAddr& server, const std::string handleName) { AdsSymbolEntry symbolEntry; uint32_t bytesRead; const long status = AdsSyncReadWriteReqEx2(port, &server, ADSIGRP_SYM_INFOBYNAMEEX, 0, sizeof(symbolEntry), &symbolEntry, handleName.size(), handleName.c_str(), &bytesRead); if (status) { throw std::runtime_error("Unable to determine symbol size, reading ADS symbol information failed with: " + std::to_string( status)); } return symbolEntry.size; }