|
|
Experimental Physics and
| ||||||||||||||||
|
|
Hi Michael, I tried that and it didn't change anything. However, I discovered that accessing some variables from the iocsh gave different results from caget, so I must have some name confusion in my code. Thanks for your help, at least I discovered this! Pete.
On 3/18/20 6:25 PM, Michael Davidsaver
wrote:
FYI. passing NULL instead of a field address to db_post_events() will post to every subscription on the record regardless of field. Trying this should give a clear indication if the only problem is the wrong field address. I guess the other variable is event mask. SOdb_post_events(pscal,NULL,0xf);should post to every subscriber to this record regardless of field or mask. On 3/18/20 12:02 PM, Mark Rivers wrote:Could this be a problem with EPICS_CA_MAX_ARRAY_BYTES? What if you do: camonitor -#20 det1.SPCT ________________________________ From: Siddons, David <[email protected]> Sent: Wednesday, March 18, 2020 1:51 PM To: Mark Rivers; Michael Davidsaver Cc: EPICS Tech-Talk Subject: Re: monitors on array variables Hi Mark, Yes, I did that. THis is essentially an expanded scaler record. In updateCounts I have: Debug(5, "updateCounts: posting scaler values %d\n",0); /* copy and post spectrum values */ for (i=0; i<4096; i++) { if (mca[4096*pscal->monch+i] != spct[i]) { spct[i]=mca[4096*pscal->monch+i]; } } db_post_events(pscal,&pscal->mca,DBE_VALUE); db_post_events(pscal,&pscal->tdc,DBE_VALUE); db_post_events(pscal,&pscal->spct,DBE_VALUE); etc, It gives this output: ../zDDMRecord.c(818):updateCounts: called by process() ../zDDMRecord.c(830):updateCounts: got counts[] 0 ../zDDMRecord.c(838):updateCounts: posting scaler values 0 ../zDDMRecord.c(866):updateCounts: exit 0 Running camonitor on det1.SPCT reads the initial values and waits. Triggering a change (by changing monch) results in nothing. It just sits there. I can verify that the values have changed by doing a caget, or a dbgf on the console: peter@peter-Latitude-E7240: ~/$ caput det1.MONCH 0 Old : det1.MONCH 5 New : det1.MONCH 0 peter@peter-Latitude-E7240: ~/$ caget det1.SPCT[1:20] det1.SPCT[1:20] 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 peter@peter-Latitude-E7240: ~/$ caput det1.MONCH 5 Old : det1.MONCH 0 New : det1.MONCH 5 peter@peter-Latitude-E7240:~/$ caget det1.SPCT[1:20] det1.SPCT[1:20] 20 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 I guess I'm doing something dumb, but I can't see it. Pete. ________________________________ From: Mark Rivers <[email protected]> Sent: Wednesday, March 18, 2020 2:25 PM To: Siddons, David <[email protected]>; Michael Davidsaver <[email protected]> Cc: EPICS Tech-Talk <[email protected]> Subject: Re: monitors on array variables Can you put some debugging to be sure db_post_events is actually being called, while at the same time running camonitor to see if gets an update? ________________________________ From: Siddons, David <[email protected]> Sent: Wednesday, March 18, 2020 1:09 PM To: Michael Davidsaver; Mark Rivers Cc: EPICS Tech-Talk Subject: Re: monitors on array variables .....and I have, in cvt_dbaddr(): case zDDMRecordSPCT:{ paddr->pfield = (void *)(pzDDM->pspct); paddr->no_elements = 4096; /* One spectrum for real-time display */ paddr->field_type = DBF_LONG; paddr->field_size = sizeof(int); paddr->dbr_field_type = DBR_LONG; break; Pete. ________________________________ From: Michael Davidsaver <[email protected]> Sent: Wednesday, March 18, 2020 12:54 PM To: Mark Rivers <[email protected]>; Siddons, David <[email protected]> Cc: EPICS Tech-Talk <[email protected]> Subject: Re: monitors on array variables On 3/18/20 9:47 AM, Mark Rivers wrote:by analogy waveformRecord hasdb_post_events(prec, &prec->val, monitor_mask);note 'val' not 'bptr'.
| ||||||||||||||||
| ANJ, 19 Mar 2026 |
·
Home
·
News
·
About
·
Talk
·
Base
·
Modules
·
Extensions
·
· Distributions · Download · Documents · Links · Licensing · |