Selhání softwarového sériového portu Arduino

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
Arthur
Příspěvky: 39
Registrován: 02 čer 2021, 03:37
Reputation: 0

Selhání softwarového sériového portu Arduino

Příspěvek od Arthur » 09 srp 2021, 07:06

Narazil jsem na situaci, kdy potřebuji 2 softwarové sériové porty, jeden z nich nefunguje a nemohu získat data. Přepínač listener byl také napsán, ale stejně nefungoval.
S hardwarovým obvodem problém není a kód je spustitelný i po přepnutí na jiný, který používá jen jedno soft rozhraní.

Kód: Vybrat vše

#include <Arduino.h>
#include <SoftwareSerial.h>
SoftwareSerial GSMSerial(10, 11); // RX, TX
SoftwareSerial GpsSerial(5, 6); // RX, TX
#define DEBUGSerial Serial
。
。
。
void setup()
{
  DEBUGSerial.begin(9600);
  GSMSerial.begin(9600);
  Init();
  GpsSerial.begin(9600);
}
void loop()
{
  gpsRead();  //Získávání dat GPS
  parseGpsBuffer();//Parsování dat GPS  
  printGpsBuffer();//Výstup analyzovaných dat
  GSMSerial.end();
  if(tic == 0) {
    Init();
  }else{
    url = urlhead+"longitude="+llongitude+"&latitude="+llatitude;
    SendMessage();
  }
}
**Následující GSMSerial.available() nefunguje, přesněji řečeno, neposlouchá;**
void gpsRead() {
  GpsSerial.listen();
  while (GSMSerial.available())
  {
    gpsRxBuffer[ii++] = GSMSerial.read();
    if (ii == gpsRxBufferLength)clrGpsRxBuffer();
  }
    。
    。
    。
}
void Init()
{
  GSMSerial.listen();
  DEBUGSerial.print("Probíhá inicializace, vyčkejte prosím.");
  // AT
  GSMSerial.print("AT");  
    。
    。
    。
}

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Selhání softwarového sériového portu Arduino

Příspěvek od kiRRow » 09 srp 2021, 09:00

a tipuji, že nefunguje ten GSMSerial ... podívej se co děláš ve čtvrtém řádku v loopu

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 15 hostů