weblab-instrument
Version:
communication with instrument through usb
441 lines (437 loc) • 11.8 kB
JavaScript
const propMethod = require('../dev/propMethod.js');
function TriggerObj() {
this.temp = 0;
this.type = 'EDGE';
this.source = 'CH1';
this.mode = 'AUTO';
this.holdoff = '4E-9';
this.noise_rej = 'OFF';
this.level = '0E+0';
this.hlevel = '0E+0';
this.state = 'ARMED';
this.edge = {
coupling: 'DC',
slope: 'RISE',
alt: 'OFF',
};
this.delay = {
coupling: 'DC',
source: 'CH2',
slope: 'RISE',
level: '0E+0',
type: 'EVENT',
event: '2',
time: '1E-2',
};
this.pulsewidth = {
polarity: 'HI',
when: '4E-9',
time: '1E-2',
};
this.pulserunt = {
polarity: 'HI',
when: '4E-9',
time: '1E-2',
lowLevel: '0',
};
this.risefall = {
slope: 'RISE',
when: '4E-9',
time: '1E-2',
};
this.video = {
type: 'NTSC',
polarity: 'POSITIVE',
field: 'FIELD1',
line: '1',
};
this.ext_probe = {
type: '1E0',
ratio: '1E0',
};
this.timeout = {
when: 'HIGH',
time: '1E-2',
};
}
TriggerObj.prototype.cmdHandler = {
TrigType: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.type = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.type = arg;
},
},
TrigSource: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
if (TrigObj.type == 'DELAY') {
TrigObj.delay.source = res.toString();
} else {
TrigObj.source = res.toString();
}
return true;
},
setHelper(TrigObj, arg) {
if (TrigObj.type == 'DELAY') {
TrigObj.delay.source = arg;
} else {
TrigObj.source = arg;
}
},
},
TrigCouple: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
if (TrigObj.type == 'DELAY') {
TrigObj.delay.coupling = res.toString();
} else {
TrigObj.edge.coupling = res.toString();
}
return true;
},
setHelper(TrigObj, arg) {
if (TrigObj.type == 'DELAY') {
TrigObj.delay.coupling = arg;
} else {
TrigObj.edge.coupling = arg;
}
},
},
TrigNoiseRej: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.noise_rej = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.noise_rej = arg;
},
},
TrigMode: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.mode = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.mode = arg;
},
},
TrigHoldoff: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.holdoff = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.holdoff = arg.toString();
},
},
TrigEdgeSlope: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.edge.slope = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.edge.slope = arg;
},
},
TrigDelayType: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.delay.type = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.delay.type = arg;
},
},
TrigDelaySlope: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.delay.slope = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.delay.slope = arg;
},
},
TrigDelayTime: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.delay.time = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.delay.time = arg.toString();
return true;
},
},
TrigDelayEvent: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.delay.event = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.delay.event = arg;
},
},
TrigDelayLevel: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.delay.level = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.delay.level = arg.toString();
return true;
},
},
TrigPulseWidthPolarity: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulsewidth.polarity = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulsewidth.polarity = arg;
},
},
TrigPulseWidthWhen: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulsewidth.when = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulsewidth.when = arg.toString();
return true;
},
},
TrigPulseWidthTime: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulsewidth.time = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulsewidth.time = arg.toString();
return true;
},
},
TrigRuntPolarity: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulserunt.polarity = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulserunt.polarity = arg;
},
},
TrigRuntWhen: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulserunt.when = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulserunt.when = arg.toString();
return true;
},
},
TrigRuntTime: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulserunt.time = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulserunt.time = arg.toString();
return true;
},
},
TrigLevel: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.level = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.level = arg.toString();
return true;
},
},
TrigHighLevel: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.level = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.hlevel = arg.toString();
return true;
},
},
TrigLowLevel: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.pulserunt.lowLevel = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.pulserunt.lowLevel = arg.toString();
return true;
},
},
TrigRiseFallSlope: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.risefall.slope = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.risefall.slope = arg;
},
},
TrigRiseFallWhen: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.risefall.when = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.risefall.when = arg.toString();
return true;
},
},
TrigRiseFallTime: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.risefall.time = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.risefall.time = arg.toString();
return true;
},
},
TrigVideoType: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.video.type = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.video.type = arg;
},
},
TrigVideoField: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.video.field = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.video.field = arg;
},
},
TrigVideoLine: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.video.line = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.video.line = arg;
},
},
TrigVideoPolarity: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.video.polarity = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.video.polarity = arg;
},
},
TrigState: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.state = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.state = arg;
},
},
TrigALT: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.edge.alt = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.edge.alt = arg;
},
},
TrigExtProbeType: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.ext_probe.type = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.ext_probe.type = arg;
},
},
TrigExtProbeRatio: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.ext_probe.ratio = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.ext_probe.ratio = arg;
},
},
TrigTimeoutWhen: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.timeout.when = res.toString();
return true;
},
setHelper(TrigObj, arg) {
TrigObj.timeout.when = arg.toString();
return true;
},
},
TrigTimeoutTime: {
getHandler(TrigObj, res) {
res = res.slice(0, -1);
TrigObj.timeout.time = res.toString();
return true;
},
setHelper(TrigObj, arg, cb) {
TrigObj.timeout.time = arg.toString();
if (TrigObj.temp != parseFloat(arg)) {
if (typeof cb === 'function') { cb(['-500', `${TrigObj.temp.toExponential()} argument does not accept, set to near one ${arg}`]); }
return false;
}
return true;
},
},
};
exports.initTrigObj = function initTrigObj(id) {
const trigCmd = new TriggerObj();
// trigCmd.cmdHandler=cmdHandler;
trigCmd.prop = propMethod.CreatMethod.call(this, id);
return trigCmd;
};