Прошиваю Искру: var Sim900r = require('@amperka/Sim900r').connect(); Sim900r.powerOn(); Затем пытаюсь выполнить по очереди разные команды, посмотрите пожалуйста их и ответы. Смущает всё, потому что явно ответы в callback функциях какие то странные. Прикол с getImei - какие то ошибки в скрипте... На Sim900r.call ошибка error=Error: CMD Error Что я делаю не так? P.S. Всегда работаю в офлайн режиме, настроил Искру по FAQ, обновил прошивку до 1v92.194. Sim900r.netProvider(function(error, provider){console.log('provider='+provider+', error='+error);}); =undefined provider=+CSPN: "MTS RUS", 0, error=undefined >Sim900r.netStatus(function(error, status ){console.log('status ='+status +', error='+error);}); =undefined status =+CREG: 0,0, error=undefined >Sim900r.netQuality(function(error, quality ){console.log('quality ='+quality +', error='+error);}); =undefined quality =+CSQ: 19,0, error=undefined >Sim900r.netCurrent(function(error, provider){console.log('provider='+provider+', error='+error);}); =undefined provider=+COPS: 0, error=undefined >Sim900r.getFirmware(function(error, firmware){console.log('firmware='+firmware+', error='+error);}); =undefined firmware=Revision:1137B05SIM900M64_ST_ENHANCE, error=undefined >Sim900r.getImei(function(error, imei){console.log('imei='+imei+', error='+error);}); =undefined Uncaught Error: Field or method "first" does not already exist, and can't create it on undefined at line 1 col 30 var b=Sim900r.prototype.parse.first(c);a&&a(b); ^ in function "_currentCommandCallback" called from line 1 col 655 ...ed,this._currentCommandData);break;case'ERROR':this._current... ^ > Sim900r.call('+79211111111', function(error){console.log(' error='+error);}); =undefined error=Error: CMD Error >
какие команды выполняете? Нужен код команд которые вы набираете. И код надо оформлять Код (Javascript): Вот так
Ок. я не понимаю что вообще происходит с библиотекой на js и платой. Использую все в офлайн режиме. Начну с бага в классе Sim900r: при попытке получить IMEI через Код (Javascript): Sim900r.getImei(function(error, imei){console.log('imei='+imei+', error='+error);}); Выдает ошибку: Код (Javascript): Uncaught Error: Field or method "first" does not already exist, and can't create it on undefined at line 1 col 30 var b=Sim900r.prototype.parse.first(c);a&&a(b); ^ in function "_currentCommandCallback" called from line 1 col 655 ...ed,this._currentCommandData);break;case'ERROR':this._current... Заглянув внутрь Sim900r обнаружил такую конструкцию, которая вызывает ошибку: Код (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]; } callback(error, data); }); }; Начало работать корректно. Что это? Баг, несоответсвие прошивки, скачанная библиотека Sim900r.js отличается от онлайн версии? Дальше больше. Никак не мог зарегистрироваться в сети. Выполнял различные AT команды чтобы проверить ответы платы, обнаружил, что некоторые ответы не соответсвуют описанию в manual'е. После моих экспериментов через некоторое время плата вообще перестала отвечать на AT команды и теперь всегда возвращает undifined на любую команду. После этого понял, что соедиения с сетью небыло скорее всего, что был установлен PIN на симку, то теперь проверить ничего не могу из-за молчания платы. Версия прошивки Sim900: firmware=Revision:1137B05SIM900M64_ST_ENHANCE P.S. Отвечать быстро не могу по причине недоступности интернета.