www.gusucode.com > Zaber Device Control Toolbox > tests/TestDeviceDatabase.m
% Test data db = Zaber.DeviceDatabase.instance(); %% Test device/peripheral IDs exist and can be retrieved. ids = db.getalldeviceids(); assert(~isempty(ids)); for (i = 1:length(ids)) deviceRecord = db.finddevice(ids(i)); assert(~isempty(deviceRecord)); assert(deviceRecord.DeviceId == ids(i)); % This knows an implementation detail. perIds = db.getallperipheralids(deviceRecord); assert(~isempty(perIds)) for (j = 1:length(perIds)) pId = perIds(j); periRecord = db.findperipheral(deviceRecord, pId); assert(~isempty(periRecord)); assert(periRecord.PeripheralId == pId); % This knows an implementation detail. name = db.getdevicename(deviceRecord, periRecord); assert(~isempty(name)); [type, units] = db.determinemotiontype(deviceRecord, periRecord); if (type ~= Zaber.MotionType.None) assert(units.PositionUnitScale > 0); assert(units.VelocityUnitScale > 0); assert(units.AccelerationUnitScale > 0); end end end %% Test units of measure are as expected for a few choice devices. % RST-120AK devRec = db.finddevice(50001); [type, units] = db.determinemotiontype(devRec); assert(type == Zaber.MotionType.Rotary); units.Resolution = 64; assert(MathHelper.issimilar(units.nativetoposition(1), 0.00015625)); assert(MathHelper.issimilar(units.positiontonative(1), 6400)); assert(MathHelper.issimilar(units.nativetovelocity(0.01), 1 / 1048576)); assert(MathHelper.issimilar(units.velocitytonative(100), 1048576)); assert(MathHelper.issimilar(units.nativetoacceleration(0.6400 * 1.6384), 1.0)); assert(MathHelper.issimilar(units.accelerationtonative(1/1.6384), 1.0)); % Rounding assert(units.IsScaleResolutionDependent == true); % X-LHM100A devRec = db.finddevice(50081); [type, units] = db.determinemotiontype(devRec); assert(type == Zaber.MotionType.Linear); units.Resolution = 64; assert(MathHelper.issimilar(units.nativetoposition(1), 1 / 8062992, 0.0000005)); %% Rounding because the scale factor has lots of digits for this device. assert(MathHelper.issimilar(units.positiontonative(1), 8062992, 0.5)); assert(MathHelper.issimilar(units.nativetovelocity(1), 1 / 13210406, 0.00000005)); assert(MathHelper.issimilar(units.velocitytonative(1), 13210406, 0.5)); assert(MathHelper.issimilar(units.nativetoacceleration(8062992.15 * 1.6384), 10000, 1)); assert(MathHelper.issimilar(units.accelerationtonative(0.124023437 / 1.6384), 100, 0.1)); assert(units.IsScaleResolutionDependent); % X-GSM40 devRec = db.finddevice(50315); [type, units] = db.determinemotiontype(devRec); assert(type == Zaber.MotionType.Rotary); units.Resolution = 64; assert(MathHelper.issimilar(units.nativetoposition(1), 1 / 6151, 0.0005)); assert(units.IsScaleResolutionDependent); % T-OMG devRec = db.finddevice(311); [type, units] = db.determinemotiontype(devRec); assert(type == Zaber.MotionType.Tangential); assert(units.IsScaleResolutionDependent); % X-JOY devRec = db.finddevice(51000); [type, units] = db.determinemotiontype(devRec); assert(type == Zaber.MotionType.None); % X-LDQ devRec = db.finddevice(50792); [type, units] = db.determinemotiontype(devRec); assert(type == Zaber.MotionType.Linear); assert(~units.IsScaleResolutionDependent); assert(MathHelper.issimilar(units.nativetoposition(1), 1 / 1000000000)); assert(MathHelper.issimilar(units.positiontonative(1), 1000000000)); assert(MathHelper.issimilar(units.nativetovelocity(1), 1 / 1638400000)); assert(MathHelper.issimilar(units.velocitytonative(1), 1638400000)); assert(MathHelper.issimilar(units.nativetoacceleration(1), 1 / 163840)); assert(MathHelper.issimilar(units.accelerationtonative(1), 163840)); %% Test that unknown device and peripheral IDs produce correct names. devRec = db.finddevice(-99); name = db.getdevicename(devRec); assert(strcmp(name, 'Device id -99')); devRec = db.finddevice(30222); periRec = db.findperipheral(devRec, -99); name = db.getdevicename(devRec, periRec); assert(strcmp(name, 'X-MCB2 Controller + peripheral id -99')); devRec = db.finddevice(-99); periRec = db.findperipheral(devRec, -98); name = db.getdevicename(devRec, periRec); assert(strcmp(name, 'Device id -99 + peripheral id -98')); %% Cleanup clear all;