Fixing #1592: WeDo2 and EV3 should not send motor command when motor power is 0.

This commit is contained in:
Evelyn Eastmond 2018-10-01 19:14:46 -04:00
parent 853de9fa7d
commit 7a7134e23c
2 changed files with 14 additions and 0 deletions

View file

@ -266,6 +266,8 @@ class EV3Motor {
* @param {number} milliseconds - run the motor for this long. * @param {number} milliseconds - run the motor for this long.
*/ */
turnOnFor (milliseconds) { turnOnFor (milliseconds) {
if (this._power === 0) return;
const port = this._portMask(this._index); const port = this._portMask(this._index);
let n = milliseconds; let n = milliseconds;
let speed = this._power * this._direction; let speed = this._power * this._direction;
@ -323,6 +325,8 @@ class EV3Motor {
* @param {number} time - the time in milliseconds. * @param {number} time - the time in milliseconds.
*/ */
coastAfter (time) { coastAfter (time) {
if (this._power === 0) return;
// Set the motor command id to check before starting coast // Set the motor command id to check before starting coast
const commandId = uid(); const commandId = uid();
this._commandID = commandId; this._commandID = commandId;
@ -341,6 +345,8 @@ class EV3Motor {
* Set the motor to coast. * Set the motor to coast.
*/ */
coast () { coast () {
if (this._power === 0) return;
const cmd = this._parent.generateCommand( const cmd = this._parent.generateCommand(
Ev3Command.DIRECT_COMMAND_NO_REPLY, Ev3Command.DIRECT_COMMAND_NO_REPLY,
[ [

View file

@ -254,6 +254,8 @@ class WeDo2Motor {
* Turn this motor on indefinitely. * Turn this motor on indefinitely.
*/ */
turnOn () { turnOn () {
if (this._power === 0) return;
const cmd = this._parent.generateOutputCommand( const cmd = this._parent.generateOutputCommand(
this._index + 1, this._index + 1,
WeDo2Command.MOTOR_POWER, WeDo2Command.MOTOR_POWER,
@ -271,6 +273,8 @@ class WeDo2Motor {
* @param {number} milliseconds - run the motor for this long. * @param {number} milliseconds - run the motor for this long.
*/ */
turnOnFor (milliseconds) { turnOnFor (milliseconds) {
if (this._power === 0) return;
milliseconds = Math.max(0, milliseconds); milliseconds = Math.max(0, milliseconds);
this.turnOn(); this.turnOn();
this._setNewTimeout(this.startBraking, milliseconds); this._setNewTimeout(this.startBraking, milliseconds);
@ -281,6 +285,8 @@ class WeDo2Motor {
* // TODO: rename this to coastAfter? * // TODO: rename this to coastAfter?
*/ */
startBraking () { startBraking () {
if (this._power === 0) return;
const cmd = this._parent.generateOutputCommand( const cmd = this._parent.generateOutputCommand(
this._index + 1, this._index + 1,
WeDo2Command.MOTOR_POWER, WeDo2Command.MOTOR_POWER,
@ -298,6 +304,8 @@ class WeDo2Motor {
* @param {boolean} [useLimiter=true] - if true, use the rate limiter * @param {boolean} [useLimiter=true] - if true, use the rate limiter
*/ */
turnOff (useLimiter = true) { turnOff (useLimiter = true) {
if (this._power === 0) return;
const cmd = this._parent.generateOutputCommand( const cmd = this._parent.generateOutputCommand(
this._index + 1, this._index + 1,
WeDo2Command.MOTOR_POWER, WeDo2Command.MOTOR_POWER,