Во-первых, исправьте, пожалуйста, название библиотеки в описании примера http://wiki.amperka.ru/js:gprs-shield - правильно Sim900r Код (Javascript): var sim = require('@amperka/Sim900r').connect(); , а не с маленькой s. И разночтение в Вики - там это библиотека числится как gprs-shield... путаете, товарищи Во-вторых, желательно, в сам начале того же описания библиотеки упомянуть о необходимости использования внешнего питания. В-третьих, поправьте библиотеку на предмет вызова getImei(...). Сейчас там непонятное что-то с parse.first(data); Код (Javascript): Sim900r.prototype.getImei = function(callback) { this.cmd('AT+GSN', function(data) { var imei = Sim900r.prototype.parse.first(data); if (callback) { callback(imei); } }); }; у себя сделал по аналогии с другими прототипами Код (Javascript): Sim900r.prototype.getImei = function(callback) { this.cmd('AT+GSN', function(error,data) { if (!error) { data = data[0]; } if (callback) { callback(error, data); } }); }; И вообще возникло ощущение, что библиотека сыровата и неполная, а описание библиотеки не совсем соответствует действительности. Непонятки например с Sim900r.on('simReady', ...), Sim900r.on('ready', ... ) - что и когда срабатывает. По поводу CallerID совсем беда - в описании написано что для включения отключения определителя указывается булевое значение, хотя в спецификациях на АТ-команды фигурируют 0 и 1... Но хуже того, что у меня шилд отказывается вообще выдавать информацию (AT+CLIP?, AT+CLIP=?, AT+CLIP=0 (1) выдают пустой массив [ ]), и при срабатывании события 'ring' и phone и cnt имеют значение undefined. Из описания библиотеки вообще неясно, как с его помощью взаимодействовать с интернетом... я примерно представляю как это приготовить с помощью команд, но все таки хотелось бы плясать уже на готовеньком И еще, заметил одну странность - после включения шилда первый вызов Sim900r.cmd() (например: AT+CSPN?, AT+GSN, AT+CSQ и т.д.) выдает пустой массив и соответственно получаем undefined в ответах функций использующих cmd() (.netProvider, .getImei, .netQuality и т.д.), а последующие вызовы отрабатываются нормально. Делаем powerOff(), затем powerOn() - и история повторяется.... Приходится после включения обязательно выполнять какой-нибудь ненужный вызов, чтобы затем нормально работать... Возможно, надо глубже проанализировать библиотечную .cmd(), но мне пока это сложновато... на данный момент все Шилд очень понравился - красивый и аккуратный - прям айфон в мире шилдов
Попробовал поработать с шилдом в ручном режиме (без подключения библиотеки) - все работает отлично.. на все команды получаю адекватные ответы... Значит все таки библиотека... копаю дальше... И еще: отчего, при подключенной библиотеке могут быть срабатывания 'powerOn' уже после отработки на подключения питания (допустим при входящих звонках и т.п.) прям по несколько сработок чуть ли не циклически? Я так понимаю сработка ведется от показаний _statusPin. Ничего кроме шилда больше не подключено. Блок питания 7,5В 2А Robiton. и что означает input_pulldown в pinMode? (нашел pinMode() в описании встроенных функций http://wiki.amperka.ru/js:builtins , попутал с Pin.mode(), но это не отменяет того, что в http://wiki.amperka.ru/js:pin опечатка и указаны два определения для pullup, одно из которых я подозреваю для пулдауна
Update: по поводу скачков на Status Pin'e (P3) - походу дела, все таки в питании было дело - выставил свой двухамперный Robiton на 9В и скачки больше пока не наблюдал.... видно, 7.5В либо мало, либо БП их плохо держит... Разобрался с библиотекой - она действительно не закончена, но как оказалось там все не так сложно... главное правильно распарсить . Еще раз убедился, что не зря выбрал JS. Так что подправить библиотеку под себя вполне реально (в принципе как и написать заново свою). На сим свой монолог пожалуй я окончу. З.Ы. Надеюсь на активное развитие данной платформы... ну лето не считается
Спасибо за замечания. Эту библиотеку я писал самой первой, когда еще не было принято наших внутренних стандартов по их написанию, да и вообще платформа Espruino для всех была новой. В ближайшее время я закончу работу над библиотекой IMU10 и разберусь (очень надеюсь) с багом USB Hid, и возьмусь за исправления библиотеки для Sim900, так же добавив туда работу с GPRS. Если вы желаете, вы можете и самостоятельно отправлять свои доработки в наш репозитарий. Для этого сделайте клон, новый бранч с названием библиотеки, вносите изменения, комитте и как закончите - отправляйте пулл-реквест. Еще раз повторюсь - это исключительно по вашему желанию. Единственное - важно соответствовать правилам кодирования. Ваши изменения вы можете проверить, используя eslint. Файл конфигурации лежит в корне репозитария.
Вы только не подумайте чего - я без наезда и претензий Благодаря вашей библиотеке и руководству по AT командам - я в принципе разобрался: как взаимодействовать с модулем напрямую, в каком мне направлении двигаться дальше, что и как мне делать для получения нужного мне результата - а это уже куча положительных эмоций и интрига на пути к светлому будущему... Так что, Вам спасибо!