#include <atomic>
#include <chrono>
#include <csignal>
#include <iostream>
#include <thread>
inline static std::atomic<bool> isRunning = true;
static void signalHandler(int sig) noexcept {
if (sig == SIGINT || sig == SIGTERM) {
isRunning = false;
}
}
int main() {
client,
subscriptionParameters,
true,
{},
{},
std::cout
<< "Subscription created:\n"
<< "- status code: " << response.responseHeader().serviceResult() << "\n"
<< "- subscription id: " << response.subscriptionId() << std::endl;
client,
response.subscriptionId(),
opcua::VariableId::Server_ServerStatus_CurrentTime,
opcua::AttributeId::Value
},
opcua::MonitoringMode::Reporting,
std::cout
<< "Data change notification:\n"
<< "- subscription id: " << subId << "\n"
<< "- monitored item id: " << monId << "\n"
<< "- value: " << opcua::toString(dv) << std::endl;
},
{},
std::cout
<< "Monitored item created:\n"
<< "- status code: " << result.statusCode() << "\n"
<< "- monitored item id: " << result.monitoredItemId() << std::endl;
}
);
}
);
});
std::signal(SIGINT, signalHandler);
while (isRunning) {
try {
client.
connect(
"opc.tcp://localhost:4840");
while (isRunning) {
}
std::cout <<
"Error: " << e.
what() <<
"\nRetry to connect in 3 seconds\n";
std::this_thread::sleep_for(std::chrono::seconds{3});
}
}
}
Exception for bad status codes from open62541 UA_STATUSCODE_*.
const char * what() const noexcept override
void disconnect()
Disconnect and close the connection to the server.
void connect(std::string_view endpointUrl)
Connect to the selected server.
void onSessionActivated(StateCallback callback)
Set a state callback that will be called after the session is activated.
void runIterate(uint16_t timeoutMilliseconds=1000)
Run a single iteration of the client's main loop.
UA_DataValue wrapper class.
UA_CreateSubscriptionResponse wrapper class.
UA_MonitoredItemCreateResult wrapper class.
UA_ReadValueId wrapper class.
auto createMonitoredItemDataChangeAsync(Client &connection, IntegerId subscriptionId, const ReadValueId &itemToMonitor, MonitoringMode monitoringMode, const MonitoringParametersEx ¶meters, DataChangeNotificationCallback dataChangeCallback, DeleteMonitoredItemCallback deleteCallback, CompletionToken &&token)
auto createSubscriptionAsync(Client &connection, const CreateSubscriptionRequest &request, StatusChangeNotificationCallback statusChangeCallback, DeleteSubscriptionCallback deleteCallback, CompletionToken &&token)
Create a subscription.
uint32_t IntegerId
IntegerId.
Extended monitoring parameters with default values from open62541.
Subscription parameters with default values from open62541.
double publishingInterval
Cyclic interval in milliseconds that the subscription is requested to return notifications.