58 shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
59 for(
size_t i=0; i<nchannel; ++i)
62 pvaClientPut[i] = pvaClientChannelArray[i]->createPut();
63 pvaClientPut[i]->issueConnect();
66 for(
size_t i=0; i<nchannel; ++i)
69 Status status = pvaClientPut[i]->waitConnect();
70 if(status.isOK())
continue;
71 string message = string(
"channel ") + pvaClientChannelArray[i]->getChannelName()
72 +
" PvaChannelPut::waitConnect " + status.getMessage();
73 throw std::runtime_error(message);
76 isPutConnected =
true;
82 if(data.size()!=nchannel) {
83 throw std::runtime_error(
"data has wrong size");
85 shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
86 for(
size_t i=0; i<nchannel; ++i)
89 if(!pvaClientPut[i]) pvaClientPut[i]=pvaClientChannelArray[i]->createPut(
"value");
90 PVStructurePtr pvTop = pvaClientPut[i]->getData()->getPVStructure();
91 PVScalarPtr pvScalar= pvTop->getSubField<PVScalar>(
"value");
92 if(pvScalar && ScalarTypeFunc::isNumeric(pvScalar->getScalar()->getScalarType())) {
93 getConvert()->fromDouble(pvScalar,data[i]);
94 pvaClientPut[i]->issuePut();
96 string message = string(
"channel ")
97 + pvaClientChannelArray[i]->getChannelName()
98 +
" is not a numeric scalar";
99 throw std::runtime_error(message);
103 Status status = pvaClientPut[i]->waitPut();
104 if(status.isOK())
continue;
105 string message = string(
"channel ") + pvaClientChannelArray[i]->getChannelName()
106 +
" PvaChannelPut::waitPut " + status.getMessage();
107 throw std::runtime_error(message);