Приложения Johnny-Five всегда терпят неудачу с RangeError менее чем за 1 секунду

Все мои приложения Johnny-Five перестали работать менее чем за 1 секунду. Я пробовал с 0,7,9 и 0,7,8. Это ошибка, которую я вижу:

ytham:[master]~/js/deltarobot$ node .
1386668719984 Board Connecting... 
1386668719986 Board -> Serialport connected /dev/cu.usbmodem1421
1386668723299 Board <- Serialport connected /dev/cu.usbmodem1421
1386668723299 Repl Initialized 
>> 1386668723348 Board  

string_decoder.js:109
  charStr += buffer.toString(this.encoding, 0, end);
                    ^
RangeError: toString() radix argument must be between 2 and 36
    at Number.toString (native)
    at StringDecoder.write (string_decoder.js:109:21)
    at ReadStream.onData (readline.js:839:39)
    at ReadStream.EventEmitter.emit (events.js:95:17)
    at Board.<anonymous> (/Users/ytham/js/deltarobot/node_modules/johnny-five/lib/board.js:305:27)
    at Board.<anonymous> (/Users/ytham/js/deltarobot/node_modules/johnny-five/lib/board.js:124:18)
    at SerialPort.<anonymous> (/Users/ytham/js/deltarobot/node_modules/johnny-five/node_modules/firmata/lib/firmata.js:402:13)
    at SerialPort.EventEmitter.emit (events.js:95:17)
    at afterRead (/Users/ytham/js/deltarobot/node_modules/johnny-five/node_modules/serialport/serialport.js:303:18)
    at /Users/ytham/js/deltarobot/node_modules/johnny-five/node_modules/serialport/serialport.js:342:9

С 0.7.2 это не дает мне этой ошибки, однако я не могу переместить свои сервоприводы. Я вижу, как эта проблема случается со всеми серво-примерами из readme Johnny-Five. Я также исключаю проблему с аппаратным обеспечением, потому что она дает мне ту же проблему на 3 разных сервоприводах. Кроме того, я вижу проблему, только когда сервопривод подключен к 5 В, а не к 3,3 В, что очень странно. Node.js также самый последний (0.10.22).

Я также попробовал 2 разные платы Arduino Uno и 2 разных ноутбука (оба работают под управлением OSX 10.9), и я вижу ту же проблему во всем.

1 ответ

Извините, что никто не ответил на это, я даже не знал, что эти вопросы существовали:(

Ответ прост: вы не можете подключить сервоприводы напрямую к плате без внешнего источника питания. То, что вы видите, это сам порт USB, потому что текущий ток исчерпан и попросил больше.

Насколько я могу судить, не существует элегантного способа справиться с этими сбоями - USB-порт просто перестает отвечать на запросы.

Другие вопросы по тегам