diff --git a/source/CommunicationInterface.m b/source/CommunicationInterface.m index 66758207ec91db80556f6ae2fc48912e16b81275..858e6d67f520bbdcd5fb03a60ca46f84055d6167 100755 --- a/source/CommunicationInterface.m +++ b/source/CommunicationInterface.m @@ -392,30 +392,7 @@ classdef CommunicationInterface < handle cmd.addLength(); brick.send(cmd); end - - function playThreeTones(brick) - % Brick.playThreeTones Play three tones on the brick - % - % Brick.playThreeTones() plays three tones consequentively on - % the brick with one upload command. - % - % Example:: - % b.playThreeTones(); - - cmd = Command(); - cmd.addHeaderDirect(42,0,0); - cmd.opSOUND_TONE(5,440,500); - cmd.opSOUND_READY(); - cmd.opSOUND_TONE(10,880,500); - cmd.opSOUND_READY(); - cmd.opSOUND_TONE(15,1320,500); - cmd.opSOUND_READY(); - cmd.addLength(); - % print message - fprintf('Sending three tone message ...\n'); - brick.send(cmd); - end - + % Implemented @ MMI function types = inputDeviceList(brick) % Brick.inputDeviceList Get an array of sensor types @@ -856,9 +833,9 @@ classdef CommunicationInterface < handle reply = brick.receive()'; msg = reply.msg; reading = msg(6); - if brick.debug > 0 - fprintf('Sensor reading: %.02f\n', reading); - end +% if brick.debug > 0 +% fprintf('Sensor reading: %.02f\n', reading); +% end end function reading = inputReadSI(brick,layer,no,mode) @@ -887,9 +864,9 @@ classdef CommunicationInterface < handle reply = brick.receive()'; msg = reply.msg; reading = typecast(uint8(msg(6:9)),'single'); - if brick.debug > 0 - fprintf('Sensor reading: %.02f\n', reading); - end +% if brick.debug > 0 +% fprintf('Sensor reading: %.02f\n', reading); +% end end function reading = inputReadSIType(brick,layer,no,type,mode) @@ -918,9 +895,9 @@ classdef CommunicationInterface < handle reply = brick.receive()'; msg = reply.msg; reading = typecast(uint8(msg(6:9)),'single'); - if brick.debug > 0 - fprintf('Sensor reading: %.02f\n', reading); - end +% if brick.debug > 0 +% fprintf('Sensor reading: %.02f\n', reading); +% end end function outputStop(brick,layer,nos,brake) @@ -944,25 +921,6 @@ classdef CommunicationInterface < handle brick.send(cmd); end - function outputStopAll(brick) - % Brick.outputStopAll Stops all motors - % - % Brick.outputStopAll(layer) stops all motors on layer 0. - % - % Notes:: - % - layer is the usb chain layer (usually 0). - % - Sends 0x0F as the NOS bit field to stop all motors. - % - % Example:: - % b.outputStopAll(0) - - cmd = Command(); - cmd.addHeaderDirect(42,0,0); - cmd.opOUTPUT_STOP(0,15,BrakeMode.Brake); - cmd.addLength(); - brick.send(cmd); - end - function outputPower(brick,layer,nos,power) % Brick.outputPower Set the motor output power % @@ -1345,9 +1303,9 @@ classdef CommunicationInterface < handle reply = brick.receive()'; msg = reply.msg; tacho = typecast(uint8(msg(6:9)),'int32'); - if brick.debug > 0 - fprintf('Tacho: %d degrees\n', tacho); - end +% if brick.debug > 0 +% fprintf('Tacho: %d degrees\n', tacho); +% end end % Implemented @ MMI @@ -1400,10 +1358,10 @@ classdef CommunicationInterface < handle catch speed = 0; % Sometimes, the response packet lacks the 10th byte...?! end - if brick.debug > 0 - fprintf('Speed: %d\n', speed); - fprintf('buggy Tacho: %d degrees\n', tacho); - end +% if brick.debug > 0 +% fprintf('Speed: %d\n', speed); +% fprintf('buggy Tacho: %d degrees\n', tacho); +% end end % Implemented @ MMI @@ -1884,6 +1842,29 @@ classdef CommunicationInterface < handle brick.soundPlayTone(volume, 1000, duration); end + function playThreeTones(brick) + % Brick.playThreeTones Play three tones on the brick + % + % Brick.playThreeTones() plays three tones consequentively on + % the brick with one upload command. + % + % Example:: + % b.playThreeTones(); + + cmd = Command(); + cmd.addHeaderDirect(42,0,0); + cmd.opSOUND_TONE(5,440,500); + cmd.opSOUND_READY(); + cmd.opSOUND_TONE(10,880,500); + cmd.opSOUND_READY(); + cmd.opSOUND_TONE(15,1320,500); + cmd.opSOUND_READY(); + cmd.addLength(); + % print message + fprintf('Sending three tone message ...\n'); + brick.send(cmd); + end + function plotSensor(brick,layer,no,mode) % Brick.plotSensor plot the sensor output % @@ -2010,16 +1991,16 @@ classdef CommunicationInterface < handle % Verbose output if brick.debug > 0 - fprintf('sent (hex): [ '); + fprintf('sent: [ '); for ii=1:length(cmd.msg) fprintf('%s ',dec2hex(cmd.msg(ii))) end fprintf(']\n'); - fprintf('sent (dec): [ '); - for ii=1:length(cmd.msg) - fprintf('%d ',cmd.msg(ii)) - end - fprintf(']\n'); +% fprintf('\t (dec): [ '); +% for ii=1:length(cmd.msg) +% fprintf('%d ',cmd.msg(ii)) +% end +% fprintf(']\n\n'); end end @@ -2087,16 +2068,16 @@ classdef CommunicationInterface < handle % Verbose output if brick.debug > 0 - fprintf('received (hex): [ '); + fprintf('received: [ '); for ii=1:length(rmsg) fprintf('%s ',dec2hex(rmsg(ii))) end fprintf(']\n'); - fprintf('received (dec): [ '); - for ii=1:length(rmsg) - fprintf('%d ',rmsg(ii)) - end - fprintf(']\n'); +% fprintf('\t (dec): [ '); +% for ii=1:length(rmsg) +% fprintf('%d ',rmsg(ii)) +% end +% fprintf(']\n\n'); end end diff --git a/source/EV3.m b/source/EV3.m index 851a4fab8e2320507139ebadcebad9c29136e653..7ddac27cb16018951b46d7163ef2d60456804246 100755 --- a/source/EV3.m +++ b/source/EV3.m @@ -125,16 +125,16 @@ classdef EV3 < MaskedHandle ev3.setProperties(varargin{:}); - ev3.motorA = Motor('A', 'Debug', ev3.debug>=1); - ev3.motorB = Motor('B', 'Debug', ev3.debug>=1); - ev3.motorC = Motor('C', 'Debug', ev3.debug>=1); - ev3.motorD = Motor('D', 'Debug', ev3.debug>=1); + ev3.motorA = Motor('A', 'Debug', ev3.debug>0); + ev3.motorB = Motor('B', 'Debug', ev3.debug>0); + ev3.motorC = Motor('C', 'Debug', ev3.debug>0); + ev3.motorD = Motor('D', 'Debug', ev3.debug>0); - ev3.sensor1 = Sensor('1', 'Debug', ev3.debug>=1); - ev3.sensor2 = Sensor('2', 'Debug', ev3.debug>=1); - ev3.sensor3 = Sensor('3', 'Debug', ev3.debug>=1); - ev3.sensor4 = Sensor('4', 'Debug', ev3.debug>=1); + ev3.sensor1 = Sensor('1', 'Debug', ev3.debug>0); + ev3.sensor2 = Sensor('2', 'Debug', ev3.debug>0); + ev3.sensor3 = Sensor('3', 'Debug', ev3.debug>0); + ev3.sensor4 = Sensor('4', 'Debug', ev3.debug>0); ev3.init = false; end @@ -294,10 +294,10 @@ classdef EV3 < MaskedHandle 'You have to call ev3.connect(...) first!']); end - ev3.commInterface.beep(); + ev3.commInterface.soundPlayTone(10, 1000, 100); if ev3.debug - fprintf('(DEBUG) EV3::beep: Called beep on brick\n'); + fprintf('(DEBUG) EV3::beep: Sent ''soundPlayTone''-command\n'); end end @@ -307,7 +307,7 @@ classdef EV3 < MaskedHandle % Arguments: % volume (numeric in [0, 100]): in percent % frequency (numeric in [250, 10000]): in Hertz - % duration (numeric >0): in milliseconds + % duration (numeric > 0): in milliseconds % % Example: % b = EV3(); % |br| @@ -324,7 +324,7 @@ classdef EV3 < MaskedHandle ev3.commInterface.soundPlayTone(volume, frequency, duration); if ev3.debug - fprintf('(DEBUG) EV3::beep: Called soundPlayTone on brick\n'); + fprintf('(DEBUG) EV3::playTone: Sent ''soundPlayTone''-command\n'); end end @@ -346,7 +346,7 @@ classdef EV3 < MaskedHandle ev3.commInterface.soundStopTone(); if ev3.debug - fprintf('(DEBUG) EV3::beep: Called soundStopTone on brick\n'); + fprintf('(DEBUG) EV3::stopTone: Called ''soundStopTone''-command\n'); end end @@ -372,7 +372,7 @@ classdef EV3 < MaskedHandle status = ev3.commInterface.soundTest; if ev3.debug - fprintf('(DEBUG) EV3::beep: Called soundTest on brick\n'); + fprintf('(DEBUG) EV3::tonePlayed: Called ''soundTest''-command\n'); end end @@ -404,6 +404,16 @@ classdef EV3 < MaskedHandle if ev3.isConnected ev3.commInterface.debug = (ev3.debug >= 2); end + + ev3.motorA.debug = (ev3.debug > 0); + ev3.motorB.debug = (ev3.debug > 0); + ev3.motorC.debug = (ev3.debug > 0); + ev3.motorD.debug = (ev3.debug > 0); + + ev3.sensor1.debug = (ev3.debug > 0); + ev3.sensor2.debug = (ev3.debug > 0); + ev3.sensor3.debug = (ev3.debug > 0); + ev3.sensor4.debug = (ev3.debug > 0); end function setProperties(ev3, varargin) @@ -484,13 +494,13 @@ classdef EV3 < MaskedHandle bat = ev3.commInterface.uiReadLbatt(); if ev3.debug - fprintf('(DEBUG) EV3::getBattery: Called uiReadLBatt.\n'); + fprintf('(DEBUG) EV3::getBattery: Called ''uiReadLBatt''-command\n'); end else bat = ev3.commInterface.uiReadVbatt(); if ev3.debug - fprintf('(DEBUG) EV3::getBattery: Called uiReadVBatt.\n'); + fprintf('(DEBUG) EV3::getBattery: Called ''uiReadVBatt''-command\n'); end end end diff --git a/source/Motor.m b/source/Motor.m index 5220f46afee9111edbb6ac48f0365ed05f7f0fbf..62fb6bcef6d6bbcfdc1f3a78deecc2ea44301883 100755 --- a/source/Motor.m +++ b/source/Motor.m @@ -272,11 +272,11 @@ classdef Motor < MaskedHandle & dynamicprops end - motor.commInterface.outputStart(0, motor.port); - if motor.debug - fprintf('(DEBUG) Motor::start: Called outputStart on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::start: Calling ''outputStart''-command on Port %s...\n', port2str('Motor', motor.port)); end + motor.commInterface.outputStart(0, motor.port); + motor.state.startedNotBusy = true; else limit = motor.limitValue - (motor.smoothStart + motor.smoothStop); @@ -287,43 +287,43 @@ classdef Motor < MaskedHandle & dynamicprops if strcmpi(motor.limitMode, 'Tacho') if motor.speedRegulation + if motor.debug + fprintf('\n(DEBUG) Motor::start: Calling ''outputStepSpeed''-command on Port %s...\n',... + port2str('Motor', motor.port)); + end + motor.commInterface.outputStepSpeed(0, motor.port, motor.power,... motor.smoothStart, limit, motor.smoothStop,... motor.brakeMode_); - + else if motor.debug - fprintf('(DEBUG) Motor::start: Called outputStepSpeed on Port %s\n',... + fprintf('\n(DEBUG) Motor::start: Calling ''outputStepPower''-command on Port %s...\n',... port2str('Motor', motor.port)); end - else + motor.commInterface.outputStepPower(0, motor.port, motor.power,... motor.smoothStart, limit, motor.smoothStop,... motor.brakeMode_); - - if motor.debug - fprintf('(DEBUG) Motor::start: Called outputStepPower on Port %s\n',... - port2str('Motor', motor.port)); - end end elseif strcmpi(motor.limitMode, 'Time') if motor.speedRegulation + if motor.debug + fprintf('\n(DEBUG) Motor::start: Calling ''outputTimeSpeed''-command on Port %s...\n',... + port2str('Motor', motor.port)); + end + motor.commInterface.outputTimeSpeed(0, motor.port, motor.power,... motor.smoothStart, limit, motor.smoothStop,... motor.brakeMode_); - + else if motor.debug - fprintf('(DEBUG) Motor::start: Called outputTimeSpeed on Port %s\n',... + fprintf('\n(DEBUG) Motor::start: Calling ''outputTimePower''-command on Port %s...\n',... port2str('Motor', motor.port)); end - else + motor.commInterface.outputTimePower(0, motor.port, motor.power,... motor.smoothStart, limit, motor.smoothStop,... motor.brakeMode_); - - if motor.debug - fprintf('(DEBUG) Motor::start: Called outputTimePower on Port %s\n',... - port2str('Motor', motor.port)); - end end end end @@ -349,11 +349,10 @@ classdef Motor < MaskedHandle & dynamicprops return; end - motor.commInterface.outputStop(0, motor.port, motor.brakeMode_); - if motor.debug - fprintf('(DEBUG) Motor::stop: Called outputStop on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::stop: Calling ''outputStop''-command on Port %s...\n', port2str('Motor', motor.port)); end + motor.commInterface.outputStop(0, motor.port, motor.brakeMode_); motor.state.startedNotBusy = false; end @@ -474,21 +473,21 @@ classdef Motor < MaskedHandle & dynamicprops if strcmpi(motor.limitMode, 'Tacho') - motor.commInterface.outputStepSync(0, motor.port+syncMotor.port, ... - motor.power, turnRatio, ... - motor.limitValue, motor.brakeMode_); if motor.debug - fprintf(['(DEBUG) Motor::syncedStart: Called outputStepSync on ' ,... + fprintf(['\n(DEBUG) Motor::syncedStart: Calling ''outputStepSync''-command on ' ,... 'Ports %s and %s.\n'], port2str('Motor', motor.port), port2str('Motor', syncMotor.port)); end - elseif strcmpi(motor.limitMode, 'Time') - motor.commInterface.outputTimeSync(0, motor.port+syncMotor.port, ... + motor.commInterface.outputStepSync(0, motor.port+syncMotor.port, ... motor.power, turnRatio, ... - motor.limitValue, motor.brakeMode_); + motor.limitValue, motor.brakeMode_); + elseif strcmpi(motor.limitMode, 'Time') if motor.debug - fprintf('(DEBUG) Motor::start: Called outputStepSync on Ports %s and %s.\n',... + fprintf('\n(DEBUG) Motor::start: Calling ''outputStepSync''-command on Ports %s and %s.\n',... port2str('Motor', motor.port), port2str('Motor', syncMotor.port)); end + motor.commInterface.outputTimeSync(0, motor.port+syncMotor.port, ... + motor.power, turnRatio, ... + motor.limitValue, motor.brakeMode_); end end @@ -528,6 +527,10 @@ classdef Motor < MaskedHandle & dynamicprops syncMotor.applyState(); % Synced stopping + if motor.debug + fprintf('\n(DEBUG) Motor::syncedStop: Calling ''outputStop''-command on Ports %s and %s.\n', ... + port2str('Motor', motor.port), port2str('Motor', syncMotor.port)); + end motor.commInterface.outputStop(0, motor.port+syncMotor.port, motor.brakeMode_); % On next start, both motors have to send power-opcode again @@ -537,12 +540,6 @@ classdef Motor < MaskedHandle & dynamicprops if syncMotor.state.sendPowerOnSet syncMotor.state.sendOnStart = bitset(syncMotor.state.sendOnStart, SendOnStart.Power, 1); end - - - if motor.debug - fprintf('(DEBUG) Motor::syncedStop: Called outputStop on Ports %s and %s.\n', ... - port2str('Motor', motor.port), port2str('Motor', syncMotor.port)); - end end function waitFor(motor) @@ -593,12 +590,11 @@ classdef Motor < MaskedHandle & dynamicprops port2str('Motor', motor.port)); end - motor.commInterface.outputReset(0, motor.port); - if motor.debug - fprintf('(DEBUG) Motor::internalReset: Called outputReset on Port %s\n',... + fprintf('\n(DEBUG) Motor::internalReset: Calling ''outputReset''-command on Port %s...\n',... port2str('Motor', motor.port)); end + motor.commInterface.outputReset(0, motor.port); end function resetTachoCount(motor) @@ -613,12 +609,11 @@ classdef Motor < MaskedHandle & dynamicprops port2str('Motor', motor.port)); end - motor.commInterface.outputClrCount(0, motor.port); - if motor.debug - fprintf('(DEBUG) Motor::resetTachoCount: Called outputClrCount on Port %s\n',... + fprintf('\n(DEBUG) Motor::resetTachoCount: Calling ''outputClrCount''-command on Port %s...\n',... port2str('Motor', motor.port)); end + motor.commInterface.outputClrCount(0, motor.port); end function setBrake(motor, brake) @@ -988,17 +983,15 @@ classdef Motor < MaskedHandle & dynamicprops end; if motor.currentSpeedRegulation - motor.commInterface.outputSpeed(0, motor.port, power); - if motor.debug - fprintf('(DEBUG) Motor::setPower: Called outputSpeed on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::setPower: Calling ''outputSpeed''-command on Port %s...\n', port2str('Motor', motor.port)); end + motor.commInterface.outputSpeed(0, motor.port, power); else - motor.commInterface.outputPower(0, motor.port, power); - if motor.debug - fprintf('(DEBUG) Motor::setPower: Called outputPower on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::setPower: Calling ''outputPower''-command on Port %s...\n', port2str('Motor', motor.port)); end + motor.commInterface.outputPower(0, motor.port, power); end success = true; return; @@ -1009,14 +1002,14 @@ classdef Motor < MaskedHandle & dynamicprops error('Motor::getTypeMode: Motor-Object not connected to comm handle.'); end - [typeNo,modeNo] = motor.commInterface.inputDeviceGetTypeMode(0, motor.portInput); - type = DeviceType(typeNo); - mode = DeviceMode(type,modeNo); - if motor.debug - fprintf('(DEBUG) Motor::getTypeMode: Called inputDeviceGetTypeMode on Port %s\n',... + fprintf('\n(DEBUG) Motor::getTypeMode: Calling ''inputDeviceGetTypeMode''-command on Port %s...\n',... port2str('Motor', motor.port)); end + + [typeNo,modeNo] = motor.commInterface.inputDeviceGetTypeMode(0, motor.portInput); + type = DeviceType(typeNo); + mode = DeviceMode(type,modeNo); end function status = getStatus(motor) @@ -1024,13 +1017,12 @@ classdef Motor < MaskedHandle & dynamicprops error('Motor::getStatus: Motor-Object not connected to comm handle.'); end - statusNo = motor.commInterface.inputDeviceGetConnection(0, motor.portInput); - status = ConnectionType(statusNo); - if motor.debug - fprintf('(DEBUG) Motor::getStatus: Called inputDeviceGetConnection on Port %s\n',... + fprintf('\n(DEBUG) Motor::getStatus: Calling ''inputDeviceGetConnection''-command on Port %s...\n',... port2str('Motor', motor.port)); end + statusNo = motor.commInterface.inputDeviceGetConnection(0, motor.portInput); + status = ConnectionType(statusNo); end function cnt = getTachoCount(motor) @@ -1038,29 +1030,28 @@ classdef Motor < MaskedHandle & dynamicprops error('Motor::getTachoCount: Motor-Object not connected to comm handle.'); end - cnt = motor.commInterface.outputGetCount(0, motor.portNo); if motor.debug - fprintf('(DEBUG) Motor::getTachoCount: Called outputGetCount on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::getTachoCount: Calling ''outputGetCount''-command on Port %s...\n', port2str('Motor', motor.port)); end + cnt = motor.commInterface.outputGetCount(0, motor.portNo); end function cnt = getInternalTachoCount(motor) - [~, cnt] = motor.commInterface.outputRead(0, motor.portNo); if motor.debug - fprintf('(DEBUG) Motor::getInternalTachoCount: Called outputRead on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::getInternalTachoCount: Calling ''outputRead''-command on Port %s...\n', port2str('Motor', motor.port)); end + [~, cnt] = motor.commInterface.outputRead(0, motor.portNo); end function speed = getSpeed(motor) if ~motor.connectedToBrick error('Motor::getSpeed: Motor-Object not connected to comm handle.'); end - - speed = motor.commInterface.inputReadSI(0, motor.portInput, DeviceMode.Motor.Speed); - + if motor.debug - fprintf('(DEBUG) Motor::getSpeed: Called inputReadSI on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::getSpeed: Calling ''inputReadSI''-command on Port %s...\n', port2str('Motor', motor.port)); end + speed = motor.commInterface.inputReadSI(0, motor.portInput, DeviceMode.Motor.Speed); end function busy = getBusyFlag(motor) @@ -1076,11 +1067,10 @@ classdef Motor < MaskedHandle & dynamicprops error('Motor::getBusyFlag: Motor-Object not connected to comm handle.'); end - busy = motor.commInterface.outputTest(0, motor.port); - if motor.debug - fprintf('(DEBUG) Motor::getBusyFlag: Called outputTest on Port %s\n', port2str('Motor', motor.port)); + fprintf('\n(DEBUG) Motor::getBusyFlag: Calling ''outputTest''-command on Port %s...\n', port2str('Motor', motor.port)); end + busy = motor.commInterface.outputTest(0, motor.port); end function applyBrake(motor) @@ -1093,6 +1083,11 @@ classdef Motor < MaskedHandle & dynamicprops error('Motor::applyBrake: Can''t apply brake because Motor is moving'); end + if motor.debug + fprintf(['\n(DEBUG) Motor::applyBrake: Calling ''outputPower'', ''outputStart'' and' ,... + '''outputStop'' on Port %s...\n'], port2str('Motor', motor.port)); + end + if motor.speedRegulation motor.commInterface.outputPower(0, motor.port, 0); else @@ -1100,11 +1095,6 @@ classdef Motor < MaskedHandle & dynamicprops end motor.commInterface.outputStart(0, motor.port); motor.commInterface.outputStop(0, motor.port, BrakeMode.Brake); - - if motor.debug - fprintf(['(DEBUG) Motor::applyBrake: Called outputPower, outputStart and' ,... - 'outputStop on Port %s\n'], port2str('Motor', motor.port)); - end end function releaseBrake(motor) @@ -1117,6 +1107,10 @@ classdef Motor < MaskedHandle & dynamicprops error('Motor::releaseBrake: Can''t release brake because Motor is moving'); end + if motor.debug + fprintf(['\n(DEBUG) Motor::releaseBrake: Calling ''outputPower'', ''outputStart'' and' ,... + '''outputStop'' on Port %s...\n'], port2str('Motor', motor.port)); + end if motor.speedRegulation motor.commInterface.outputPower(0, motor.port, 0); else @@ -1124,11 +1118,6 @@ classdef Motor < MaskedHandle & dynamicprops end motor.commInterface.outputStart(0, motor.port); motor.commInterface.outputStop(0, motor.port, BrakeMode.Coast); - - if motor.debug - fprintf(['(DEBUG) Motor::releaseBrake: Called outputPower, outputStart and' ,... - 'outputStop on Port %s\n'], port2str('Motor', motor.port)); - end end end diff --git a/source/Sensor.m b/source/Sensor.m index bbf73675d55a5888a61e181ce902f5711ea141ec..2cd6ec2c8e91cce616356f53673431c0e64439a1 100755 --- a/source/Sensor.m +++ b/source/Sensor.m @@ -252,12 +252,11 @@ classdef Sensor < MaskedHandle % warning(['Sensor::reset: Current version of reset resets ALL devices, that is, ',... % 'all motor tacho counts and all other sensor counters!']); - sensor.commInterface.inputDeviceClrAll(0); - if sensor.debug - fprintf('(DEBUG) Sensor::reset: Called inputReadSI on Port %d.\n',... + fprintf('\n(DEBUG) Sensor::reset: Calling ''inputReadSI''-command on Port %d...\n',... sensor.port+1); end + sensor.commInterface.inputDeviceClrAll(0); end %% Setter @@ -395,13 +394,12 @@ classdef Sensor < MaskedHandle sensor.port+1); end - sensor.commInterface.inputReadSI(0, sensor.port, mode); % Reading a value implicitly - % sets the mode. - if sensor.debug - fprintf('(DEBUG) Sensor::setMode: Called inputReadSI on Port %d.\n',... + fprintf('\n(DEBUG) Sensor::setMode: Calling ''inputReadSI''-command on Port %d...\n',... sensor.port+1); end + sensor.commInterface.inputReadSI(0, sensor.port, mode); % Reading a value implicitly + % sets the mode. end function val = getValue(sensor, varargin) @@ -428,10 +426,17 @@ classdef Sensor < MaskedHandle end if defaultMode ~= -1 - val = sensor.commInterface.inputReadSI(0, sensor.port, defaultMode); + mode = defaultMode; else - val = sensor.commInterface.inputReadSI(0, sensor.port, sensor.mode); + mode = sensor.mode; + end + + if sensor.debug + fprintf('\n(DEBUG) Sensor::getValue: Calling ''inputReadSI''-command on Port %d...\n',... + sensor.port+1); end + val = sensor.commInterface.inputReadSI(0, sensor.port, sensor.mode); + if strcmp(class(sensor.mode), 'DeviceMode.Color') if sensor.mode == DeviceMode.Color.Col @@ -441,16 +446,11 @@ classdef Sensor < MaskedHandle % See note if isnan(val) - val = sensor.commInterface.inputReadSI(0, sensor.port, sensor.mode); if sensor.debug - fprintf('(DEBUG) Sensor::getValue: Called inputReadSI on Port %d.\n',... + fprintf('\n(DEBUG) Sensor::getValue: Calling ''inputReadSI''-command on Port %d...\n',... sensor.port+1); end - end - - if sensor.debug - fprintf('(DEBUG) Sensor::getValue: Called inputReadSI on Port %d.\n',... - sensor.port+1); + val = sensor.commInterface.inputReadSI(0, sensor.port, sensor.mode); end end @@ -459,13 +459,13 @@ classdef Sensor < MaskedHandle error('Sensor::getStatus: Sensor-Object not connected to comm handle.'); end - statusNo = sensor.commInterface.inputDeviceGetConnection(0, sensor.port); - status = ConnectionType(statusNo); - if sensor.debug - fprintf(['(DEBUG) Sensor::getStatus: Called inputDeviceGetConnection on ' ,... - 'Port %d.\n'], sensor.port+1); + fprintf(['\n(DEBUG) Sensor::getStatus: Calling ''inputDeviceGetConnection''-command on ' ,... + 'Port %d...\n'], sensor.port+1); end + + statusNo = sensor.commInterface.inputDeviceGetConnection(0, sensor.port); + status = ConnectionType(statusNo); end function [type,mode] = getTypeMode(sensor) @@ -474,6 +474,11 @@ classdef Sensor < MaskedHandle end type = DeviceType.Error; + + if sensor.debug + fprintf(['\n(DEBUG) Sensor::getStatus: Calling ''inputDeviceGetConnection''-command on ' ,... + 'Port %d...\n'], sensor.port+1); + end for i = 1:10 try [typeNo,modeNo] = sensor.commInterface.inputDeviceGetTypeMode(0, sensor.port); @@ -489,11 +494,6 @@ classdef Sensor < MaskedHandle catch ME mode = DeviceMode.Default.Undefined; end - - if sensor.debug - fprintf(['(DEBUG) Sensor::getStatus: Called inputDeviceGetConnection on ' ,... - 'Port %d.\n'], sensor.port+1); - end end end diff --git a/source/usbBrickIO.m b/source/usbBrickIO.m index 5854cc57a775c682caf3ab41dca62ae819a78bd8..47a682098d4bc2fd538c9a944abd6dda20f9585d 100755 --- a/source/usbBrickIO.m +++ b/source/usbBrickIO.m @@ -56,7 +56,7 @@ classdef usbBrickIO < BrickIO end if brickIO.debug > 0 - fprintf('usbBrickIO init\n'); + fprintf('(DEBUG) (USB init)\n'); end % Create the usb handle @@ -96,10 +96,9 @@ classdef usbBrickIO < BrickIO % delete(brickIO) closes the usb connection handle if brickIO.debug > 0 - fprintf('usbBrickIO delete\n'); + fprintf('(DEBUG) (USB delete)\n'); end - % Disconnect try brickIO.close; catch @@ -114,7 +113,7 @@ classdef usbBrickIO < BrickIO % interface. if brickIO.debug > 0 - fprintf('usbBrickIO open\n'); + fprintf('(DEBUG) (USB open)\n'); end % Open the usb handle (MMI: and handle possible errors) @@ -143,7 +142,7 @@ classdef usbBrickIO < BrickIO % usbBrickIO.close() closes the usb handle through the hidapi % interface. if brickIO.debug > 0 - fprintf('usbBrickIO close\n'); + fprintf('(DEBUG) (USB close) \n'); end try @@ -170,7 +169,7 @@ classdef usbBrickIO < BrickIO % implementation. if brickIO.debug > 0 - fprintf('usbBrickIO read\n'); + fprintf('(DEBUG) (USB read) '); end % Read from the usb handle @@ -220,7 +219,7 @@ classdef usbBrickIO < BrickIO % uint8 format. if brickIO.debug > 0 - fprintf('usbBrickIO write\n'); + fprintf('(DEBUG) (USB write) '); end % Write to the usb handle using report ID 0