@@ -2147,10 +2147,11 @@ asynStatus MultiFunction::writeInt32(asynUser *pasynUser, epicsInt32 value)
21472147 }
21482148
21492149 else if (function == analogOutSyncMaster_) {
2150+ // In the record 0=Master, 1=Slave. Windows uses these, Linux uses enums.
21502151 #ifdef _WIN32
2151- status = cbSetConfig (BOARDINFO, boardNum_, addr, BISYNCMODE, value ? 0 : 1 );
2152+ status = cbSetConfig (BOARDINFO, boardNum_, addr, BISYNCMODE, value);
21522153 #else
2153- status = ulAOSetConfig (daqDeviceHandle_, AO_CFG_SYNC_MODE, addr, value ? AOSM_MASTER : AOSM_SLAVE );
2154+ status = ulAOSetConfig (daqDeviceHandle_, AO_CFG_SYNC_MODE, addr, value ? AOSM_SLAVE : AOSM_MASTER );
21542155 #endif
21552156 reportError (status, functionName, " Setting analog out master" );
21562157 }
@@ -2250,19 +2251,21 @@ int MultiFunction::writeAnalogOutSync()
22502251 long rate = 0 ;
22512252 epicsUInt16 aoValues[MAX_ANALOG_OUT];
22522253 for (int i=0 ; i<MAX_ANALOG_OUT; i++) {
2253- getIntegerParam (analogOutValue_, &iTemp);
2254+ getIntegerParam (i, analogOutValue_, &iTemp);
22542255 aoValues[i] = (epicsUInt16) iTemp;
22552256 }
22562257 status = cbAOutScan (boardNum_, 0 , numAnalogOut_-1 , numAnalogOut_, &rate, BIP10VOLTS, aoValues, options);
22572258 #else
2258- double rate = 0 . ;
2259+ int flags = AOUTARRAY_FF_NOSCALEDATA | AOUTARRAY_FF_SIMULTANEOUS ;
22592260 epicsFloat64 aoValues[MAX_ANALOG_OUT];
2261+ Range aoRanges[MAX_ANALOG_OUT];
22602262 for (int i=0 ; i<MAX_ANALOG_OUT; i++) {
2261- getIntegerParam (analogOutValue_, &iTemp);
2263+ getIntegerParam (i, analogOutValue_, &iTemp);
22622264 aoValues[i] = double (iTemp);
2265+ getIntegerParam (i, analogOutRange_, &iTemp);
2266+ mapRange (iTemp, &aoRanges[i]);
22632267 }
2264- status = ulAOutScan (daqDeviceHandle_, 0 , numAnalogOut_-1 , BIP10VOLTS, numAnalogOut_, &rate, (ScanOption) options,
2265- AOUTSCAN_FF_NOSCALEDATA, aoValues);
2268+ status = ulAOutArray (daqDeviceHandle_, 0 , numAnalogOut_-1 , aoRanges, (AOutArrayFlag)flags, aoValues);
22662269 #endif
22672270 return status;
22682271}
0 commit comments