EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: strange EPICS glitch
From: Eric Norum <[email protected]>
To: Mark Rivers <[email protected]>
Cc: "[email protected] talk" <[email protected]>
Date: Mon, 12 Nov 2012 12:57:56 -0800
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
@@ -657,17 +657,21 @@
 static void callbackWfRead(asynUser *pasynUser)
 {
     devPvt         *pdevPvt = (devPvt *)pasynUser->userPvt;
     waveformRecord *pwf = (waveformRecord *)pdevPvt->precord;
     size_t         nBytesRead;
     asynStatus     status;
 
     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';
+    }
     finish((dbCommon *)pwf);
 }
 
 static long initWfWrite(waveformRecord *pwf)
 {
     asynStatus status;
     devPvt     *pdevPvt;
 

On Nov 12, 2012, at 12:43 PM, Mark Rivers <[email protected]> wrote:

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. 

-- 
Eric Norum
[email protected]


Replies:
RE: strange EPICS glitch Mark Rivers

Navigate by Date:
Prev: streamDevice 32-bit hex value read problem Martin L. Smith
Next: RE: strange EPICS glitch Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: streamDevice 32-bit hex value read problem Martin L. Smith
Next: RE: strange EPICS glitch Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·