Не работает GPRS Shield

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем russish, 16 сен 2017.

Метки:
  1. russish

    russish Нерд

    Прошиваю Искру:
    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
    >
     
  2. null

    null Гик

    какие команды выполняете? Нужен код команд которые вы набираете.
    И код надо оформлять
    Код (Javascript):
    Вот так
     
  3. russish

    russish Нерд

    Ок. я не понимаю что вообще происходит с библиотекой на 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. Отвечать быстро не могу по причине недоступности интернета.