Hi everybody,
I 'm working on a IOC or Portable CA Server capable of managing other IOC in order to sequence them, for instance. Typically this IOC controls multiple motors, each represented by an IOC.
I don’t know which type of implementation (Portable CA Server or IOC) is the most efficient. In this case, I started implementing an IOC. is it a good choice ?
More particularly, I’ve a problem with the part of this IOC acting as the client of the others IOC it controls. This client monitors a few PV of the motor’s IOC and all seems ok. It’s a multi-threaded
client. I’ve created my CA context with :
ca_context_create(ca_enable_preemptive_callback);
And to be notified of change events, I’ve created a thread to launch :
ca_pend_event (0.0);
The problem occurs when I want to change a PV value. All seems ok but the pv is only really modified 30 seconds to 1 min after the call to
ca_array_put (I have tested this in localhost) . To change a value, I proceed in the following manner for a double :
ca_array_put(DBR_DOUBLE, 1, channel, &val);
status=ca_pend_io(put_timeout);
Is this a normal behaviour? If not, how can this issue be solved?
Thanks in advance,
Best regards,
Ce message peut contenir des informations confidentielles dont la divulgation est à ce titre rigoureusement interdite en l'absence d'autorisation explicite de
l'émetteur. Dans l'hypothèse où vous auriez reçu par erreur ce message, merci de le renvoyer à l’émetteur et de détruire toute copie.
P Pensez à l’environnement avant d’imprimer.
|