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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | 答复: ADMythen --acquisition issues |
From: | zhaoying via Tech-talk <[email protected]> |
To: | 'Mark Rivers' <[email protected]> |
Cc: | [email protected] |
Date: | Mon, 3 Dec 2018 14:47:24 +0800 |
Hi Mark, According to your suggestions, we have change the way to get our debugging output : printf("nread_expected=%d, nread=%d, status=%d, timeout=%f, eomReason=%d\n", nread_expect, nread, status, M1K_TIMEOUT+acquireTime, eomReason); the results is as follows: epics> nread_expected = 25600 nread = 1400, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1352, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1448, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1400, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1352, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1352, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1448, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1448, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 1448, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 400, status = 0, timeout = 8.000000, eomReason = 0 nread_expected = 25600 nread = 4, status = 0, timeout = 8.000000, eomReason = 0 Acquisition finish ADAcquire Callback epics> still nread does not equal “nread_expected”. What should we do next? Please give us some suggestions. Thank you ! ----Ying 发件人: Mark Rivers [mailto:[email protected]] Hi Ying, I believe you uncommented this line to get your debugging output: //printf("nread_expected = %d\tnread = %d\n", nread_expect,nread); Can you please change that to: printf("nread_expected=%d, nread=%d, status=%d, timeout=%f, eomReason=%d\n", nread_expect, nread, status, M1K_TIMEOUT+acquireTime, eomReason); That will show more information returned by pasynOctetSyncIO->writeRead(). It seems like status must be asynSuccess, because otherwise you would have also seen the output from this statement: if(status != asynSuccess) { asynPrint(pasynUserSelf, ASYN_TRACE_ERROR, "%s:%s: error using readout command status=%d, nRead=%d, eomReason=%d\n", driverName, functionName, status, (int)nread, eomReason); } Since you don’t see that it seems like by pasynOctetSyncIO->writeRead() returned asynSuccess, even though it did not read the expected number of characters. That seems strange. Mark From: [email protected] <[email protected]> On Behalf Of zhaoying via Tech-talk Hello, J. Sullivan: We have a customized DCS6 (Detector control system for up to 6 detector modules ) with 5 Dextris Mythen detector modules. We are using ADMythen module to control those 5 Detectors. The result is as follows. Figure 1.Read back results It can be seen the controlling part works well, but the read back data is all 0 which is not reasonable. We tried to print the debug. The result is like figure 2. It can be seen “nread” never equals “nread_expected”. So we believe it happens in “acquisition” parts (from line 853 to line 947). But we have not find the actual line. Any suggestions? Thank you! ---Ying |