mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-08-28 22:30:40 -04:00
Fixing #1592: WeDo2 and EV3 should not send motor command when motor power is 0.
This commit is contained in:
parent
853de9fa7d
commit
7a7134e23c
2 changed files with 14 additions and 0 deletions
|
@ -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,
|
||||||
[
|
[
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue