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
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
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