double Keithley2100Lib::MeasureACVoltage(int range){ qDebug()<<"MeasureACVoltage-index:"<<range; bool ok=true; switch(range){ case 9: writeKeithley((char*)"MEAS:VOLT:AC? 0.1"); break; case 10: writeKeithley((char*)"MEAS:VOLT:AC? 1"); break; case 11: writeKeithley((char*)"MEAS:VOLT:AC? 10"); break; case 12: writeKeithley((char*)"MEAS:VOLT:AC? 100"); break; case 13: case 14: writeKeithley((char*)"MEAS:VOLT:AC? 1000"); break; } // usleep(500000); sleep(1); double retData=QString(readKeithley()).toDouble(&ok); return retData; }
double Keithley2100Lib::MeasureResistance(int range){ qDebug()<<"MeasureResistance-index:"<<range; bool ok=true; switch(range){ case 0: writeKeithley((char*)"MEAS:RES? 100E0"); break; case 1: writeKeithley((char*)"MEAS:RES? 1E3"); break; case 2: writeKeithley((char*)"MEAS:RES? 10E3"); break; case 3: writeKeithley((char*)"MEAS:RES? 100E3"); break; case 4: writeKeithley((char*)"MEAS:RES? 1E6"); break; case 5: writeKeithley((char*)"MEAS:RES? 10E6"); usleep(100000); break; case 6: writeKeithley((char*)"MEAS:RES? 100E6"); usleep(100000); break; } double retData=QString(readKeithley()).toDouble(&ok); return retData; }
double Keithley2100Lib::MeasureDCVoltage(int range){ qDebug()<<"MeasureDCVoltage-index:"<<range; bool ok=true; switch(range){ case 15: writeKeithley((char*)"MEAS:VOLT:DC? 0.1"); break; case 16: writeKeithley((char*)"MEAS:VOLT:DC? 1"); break; case 17: writeKeithley((char*)"MEAS:VOLT:DC? 10"); break; case 18: writeKeithley((char*)"MEAS:VOLT:DC? 100"); break; case 19: case 20: writeKeithley((char*)"MEAS:VOLT:DC? 1000"); break; } double retData=QString(readKeithley()).toDouble(&ok); return retData; }
Keithley2100Lib::Keithley2100Lib(QObject *parent) :QObject(parent) { fp=open("/dev/usbtmc0",O_RDWR); writeKeithley((char*)"*IDN?"); qDebug()<<readKeithley(); clearKeithley(); resetKeithley(); }
double Keithley2100Lib::MeasureContinuity(int range){ qDebug()<<"MeasureContinuity-index:"<<range; bool ok=true; switch(range){ case 7: writeKeithley((char*)"MEAS:CONT"); break; } double retData=QString(readKeithley()).toDouble(&ok); return retData; }
double Keithley2100Lib::MeasureDiode(int range){ qDebug()<<"MeasureDiode-index:"<<range; bool ok=true; switch(range){ case 8: writeKeithley((char*)"MEAS:DIOD"); break; } double retData=QString(readKeithley()).toDouble(&ok); return retData; }
float getKeithley(){ float measurement; float mantissa; int exponent; int tooHigh=0; int tooLow=0; measurement=readKeithley(); printf("%f\n",measurement); mantissa=frexp(measurement,&exponent); printf("BEFORE DECIMAL: %f\n",mantissa); printf("AFTER DECIMAL: %f\n",exponent); if((mantissa > 1)) tooHigh=1; if((mantissa < 1 && exponent < .2)) tooLow=1; while(tooLow || tooHigh){ printf("Too High: %d, Too Low: %d\n",tooHigh,tooLow); if(tooLow){ decreaseKeithleyRange(); } else if(tooHigh){ increaseKeithleyRange(); } else { return measurement; } tooHigh=0; tooLow=0; measurement=readKeithley(); mantissa=frexp(measurement,&exponent); printf("BEFORE DECIMAL: %f\n",mantissa); printf("AFTER DECIMAL: %f\n",exponent); if((mantissa > 1 && exponent > .4)) tooHigh=1; if((mantissa < 1 && exponent < .2)) tooLow=1; } return measurement; }
double Keithley2100Lib::MeasureACCurrent(int range){ qDebug()<<"MeasureACCurrent-index:"<<range; bool ok=true; switch(range){ case 26: case 27: case 28: case 29: writeKeithley((char*)"MEAS:CURR:AC? 1"); break; case 30: writeKeithley((char*)"MEAS:CURR:AC? 3"); break; } double retData=QString(readKeithley()).toDouble(&ok); return retData; }
double Keithley2100Lib::MeasureDCCurrent(int range){ qDebug()<<"MeasureDCCurrent-index:"<<range; bool ok=true; switch(range){ case 1: writeKeithley((char*)"MEAS:CURR:DC? 0.01"); break; case 21: case 22: case 23: writeKeithley((char*)"MEAS:CURR:DC? 0.1"); break; case 24: writeKeithley((char*)"MEAS:CURR:DC? 1"); break; case 25: writeKeithley((char*)"MEAS:CURR:DC? 3"); break; } double retData=QString(readKeithley()).toDouble(&ok); return retData; }