Преобразование Char в int

Тема в разделе "Arduino & Shields", создана пользователем Симилячник, 10 авг 2016.

  1. P-A

    P-A Нуб

    Удалось разобраться? У меня тоже самое, как на видео.
     
  2. Да, удалось. У вас какая плата? UNO?
     
  3. P-A

    P-A Нуб

    Mega2560. есть разница?
     
  4. Да, есть. Цитата:
     
  5. P-A

    P-A Нуб

    Так и сделано: Припаял на 10 и 11, работает - выдаёт "State OK", потом "АТ" и в конце "ОК". А если потом набрать как у Вас "АТ", то разбивает на строчки. Как на Вашем видео.
    Использую SoftwareSerial gprsSerial(10, 11); // RX, TX.
    Есть идеи?
     
  6. А вы код то меняли? Если переносить управляющие пины на 10 и 11, то и в коде так же следует указать это с помощью SoftwareSerial.
     
  7. P-A

    P-A Нуб

    Да.
    Подключаем библиотеку SoftwareSerial из стандартного набора IDE и часть кода:
    ...
    SoftwareSerial gprsSerial(10, 11);
    ...
    gprsSerial.begin(9600);
    ...
    И собственно:
    void serialPCread()
    {
    i = 0;
    if (Serial.available() > 0) {
    while (Serial.available() > 0) {
    bufferPC_Serial[i++]=(Serial.read());
    }
    bufferPC_Serial = '\0';
    gprsSerial.println(bufferPC_Serial);
    Serial.println("");
    // очищаем буфер PC Serial
    clearBufferPC_Serial();
    }
    }
    Что-то не так?
     
  8. Я вспомнил. Я решил эту проблему путем ухода от нее - приобрел ISKRA NEO. Думаю, стоит попробовать пошаманить с кодом, а так же попытаться отправить команды с помощью println. На досуге попробую - отпишусь если получится.
     
  9. P-A

    P-A Нуб

    Спасибо, буду экспериментировать и жду.
     
  10. P-A

    P-A Нуб

    Похоже всё дело в задержках последовательной шины. Много в местах обращения к ней экспериментировал - библиотеки не настроены на быструю работу (оптимизация?). В результате оставил только вставку задержки 50 ms в loop между serialPCread(); и serialGPRSread(); (при 20 сбои, при 30 кратковременные сбои, при 50 пока не заметил). Думаю оставить 100 и забыть. Это не оптимально, но другого решения не нашёл.
     
  11. AlexU

    AlexU Гуру

    В Mega2560 есть четыре аппаратных USART (в отличие от UNO) -- они у Вас все заняты, раз используете SoftwareSerial?
     
  12. P-A

    P-A Нуб

    На самом деле исторически сложилось: возможность установить проводную перемычку RX, TX на одной плате (GPRS шилда) всегда привлекает больше, чем соединение между платами, сейчас понимаю, что это не самая лучшая идея, и с учётом недавнего изменения концепции устройства, появился один свободный - 3-й UART (TXD3 и RXD3), и думаю перейти на него, но знаний работы с UART не хватает - никогда не использовал.
    В теории понимаю, что в этом случае переключаю контакты 1(TX) и 0(RX) GPRS шилда на 14 (TX), 15(RX) ардуинки и далее: библиотека SoftwareSerial не нужна и всё что обозначено у меня как "gprsSerial" должно быть заменено на "Serial3". Надеюсь, что в этом случае описанные выше задержки не понадобятся.
    Я прав или есть нюансы?
     
  13. AlexU

    AlexU Гуру

    В целом правы, на счёт нюансов -- не знаю, может и есть какие...
     
  14. P-A

    P-A Нуб

    Не получается. Изменил как указал выше, но выдаёт какую-то ерунду: символы все хаотично (похоже на шум интерфейса). Сделал пару строк, для просмотра состояния - выдаёт по Serial2.available() разные значения, в начале нули, а потом разные двухзначные и далее не реагирует на команды.
     
  15. P-A

    P-A Нуб

    Развёл провода RX и TX подальше друг от друга и всё заработало.