Experimental Physics and Industrial Control System
|
No, I don’t think that will fix it, because you have not increased NORD. Any clients that use the new EPICS feature of subscribing to callbacks with a length of zero only receive NORD elements in the callback. So the string they receive
won’t be Nil terminated, even though the waveform record itself is now Nil terminated.
But you can’t increase NORD in devAsynOctet, because that device support must also be able to handle binary byte arrays, and increasing NORD would mess that up.
Mark
Would this fix things?
--- devAsynOctet.c 2012-06-25 15:20:07.000000000 -0700
+++ devAsynOctet.c.proposed
2012-11-12 12:55:29.000000000 -0800
static void callbackWfRead(asynUser *pasynUser)
devPvt *pdevPvt = (devPvt *)pasynUser->userPvt;
waveformRecord *pwf = (waveformRecord *)pdevPvt->precord;
status = readIt(pasynUser,pwf->bptr,pwf->nelm,&nBytesRead);
- if(status==asynSuccess) pwf->nord = nBytesRead;
+ if(status==asynSuccess) {
+ pwf->nord = nBytesRead;
+ if (pwf->nelm > pwf->nord)
+ *((char *)pwf->bptr + pwf->nord) = '\0';
static long initWfWrite(waveformRecord *pwf)
Hi Andrew,
I will change asynPortDriver so that the setStringParam() method adds a Nil and passes that length to device support on readOctet or asynOctet callbacks. That will fix the problem with areaDetector, which is probably the main driver class using long strings
for path names, etc.
This cannot be moved up to asynWfOctetRead/asynWfOctetWrite device support in asyn/devEpics/devAsynOctet.c, because the asynOctet support for the waveform record needs to be able to handle binary data. However, we could add a new device support in there that
was specifically for strings, e.g. asynWfOctetStringRead/asynWfOctetStringWrite. These could enforce the Nils in both directions.
|
- Replies:
- Re: strange EPICS glitch Eric Norum
- References:
- Re: strange EPICS glitch Eric Norum
- Navigate by Date:
- Prev:
Re: strange EPICS glitch Eric Norum
- Next:
Re: procServ softIOC server - V2.6.0 released Ralph Lange
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
<2012>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: strange EPICS glitch Eric Norum
- Next:
Re: strange EPICS glitch Eric Norum
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
<2012>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|
ANJ, 18 Nov 2013 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
·
Search
·
EPICS V4
·
IRMIS
·
Talk
·
Bugs
·
Documents
·
Links
·
Licensing
·
|