static void exampleProcess(PvaClientPtr const &pva) { cout << "example process\n"; PvaClientChannelPtr channel = pva->channel("PVRdouble"); PvaClientProcessPtr process = channel->createProcess(); process->process(); cout << channel->get("field()")->getData()->showChanged(cout) << endl; process->process(); cout << channel->get("field()")->getData()->showChanged(cout) << endl; }
static void exampleProcess(PvaClientPtr const &pva) { cout << "example process\n"; PvaClientChannelPtr channel = pva->channel("PVRdouble"); PvaClientProcessPtr process = channel->createProcess(); try { process->process(); cout << channel->get("field()")->getData()->showChanged(cout) << endl; process->process(); cout << channel->get("field()")->getData()->showChanged(cout) << endl; } catch (std::runtime_error e) { cout << "exception " << e.what() << endl; } }
static void exampleDouble(PvaClientPtr const &pvaClient) { testDiag("== exampleDouble =="); PvaClientChannelPtr pvaChannel; try { pvaChannel = pvaClient->createChannel("PVRdouble"); pvaChannel->connect(2.0); testDiag("channel connected"); } catch (std::runtime_error e) { testAbort("channel connection exception '%s'", e.what()); } PvaClientPutPtr put; PvaClientPutDataPtr putData; try { put = pvaChannel->createPut(); putData = put->getData(); testDiag("put connected"); if (!putData) testAbort("NULL data pointer from putGet"); } catch (std::runtime_error e) { testAbort("put connection exception '%s'", e.what()); } PvaClientGetPtr get; PvaClientGetDataPtr getData; try { get = pvaChannel->createGet(); getData = get->getData(); testDiag("get connected"); if (!getData) testAbort("NULL data pointer from putGet"); } catch (std::runtime_error e) { testAbort("get connection exception '%s'", e.what()); } PvaClientMonitorRequesterPtr requester(new MyMonitor()); PvaClientMonitorPtr monitor; expected.set(0); // structure definition try { monitor = pvaChannel->monitor(requester); testDiag("monitor connected"); } catch (std::runtime_error e) { testAbort("monitor connection exception '%s'", e.what()); } epicsThreadSleep(0.1); // Allow connection monitor event to fire expected.clear(); // FIXME: Magic numbers here... expected.set(1); // value expected.set(6); // timestamp try { for (int i=0; i<5; ++i) { testDiag("= put %d =", i); double out = i; putData->putDouble(out); put->put(); get->get(); double in = getData->getDouble(); testOk(in == out, "get value matches put"); } PvaClientProcessPtr process = pvaChannel->createProcess(); process->connect(); testDiag("= process ="); expected.clear(1); // no value change process->process(); } catch (std::runtime_error e) { testAbort("exception '%s'", e.what()); } }