Приложения 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-порт просто перестает отвечать на запросы.