• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ESP8266 Softserial
#1
Witam mam taki problem kod napisany w arduino z użyciem softserial który przepisuje mi dane do tablicy tylko tu jest problem że mi je obcina jak to rozwiązać jakieś przykłady ? Próbowałem zwiekszyć buffor w softserial.h ale to nie pomogło 

to co mam odczytać 
0226FFF4169E502D169F4B23157C0050157D0208157E0033166E00001616002D1681F83015CD0000 
162010311621000115890001158B000016B6000016B0000516AE000015AB00001587000015880000 
159B000001F60000028E00000298000002990000024500000218AE85 

a to co odbiera 

0226FFF4169E502D169F4B23157C0050157D0208157E0033166E00001616002D1681F83015CD0000 
162010311621000115890001158B000016B6000016B00 
Kod:
#include <SoftwareSerial.h>

const int PIN_RX = 2;
const int PIN_TX = 5;

SoftwareSerial PiecSerial(PIN_RX, PIN_TX);

uint16_t bajtOdebrany = 0;
uint16_t ramkaCO[120] = {};


void setup()
{
pinMode(PIN_RX, INPUT_PULLUP);
pinMode(PIN_TX, INPUT_PULLUP);

//uruchomienie hardeware serial
Serial.begin(9600);
while (!Serial)
delay(300);
Serial.println("Hardeware serial gotowy!");
delay(300);

//uruchomienie software serial
PiecSerial.begin(9600);
while (!PiecSerial)
delay(300);
Serial.println("Software serial gotowy!");
delay(300);
}


//funkcja tworzaca tablice wartosci odczytanych z PiecSerial
uint16_t* DoTablicy()
{
int i = 0;
while (PiecSerial.available ())
{
bajtOdebrany = PiecSerial.read();
ramkaCO[i] = bajtOdebrany;
i++;
delay(10);
}
return ramkaCO;
}

void loop() {


if (PiecSerial.available()) { // Flaga od programowego rs232
uint16_t* tablicaOdczyt = DoTablicy(); // Odczyt do tablicy

// Wyswietlanie ramki na rs232 sprzetowy
for (int i = 0; i < 119; i++)
{
Serial.print(ramkaCO[i], HEX);
}
Serial.println("----------");



// Czyszczenie tablicy z ramka
for (int i = 0; i < 119; i++)
{
ramkaCO[i] = 0;
}

}

}
 
Odpowiedź
#2
Odbierz jeden bajt i zapisz do bufora.
Jak konczy sie to co odbierasz?
Taka sama ilosc bajtow?
Jakis znak konca?

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#3
to są dane co odbieram w hex znaku końcowego nie ma tylko jest suma kontrolne na końcu 218AE85 ale mi to nie dochodzi a odbieranie po jednym bajcie jak to widzisz to nie tak jak napisane mam w programie i zapis do tablicy ?
i długości nie są takie same 

0226FFF4169E502D169F4B23157C0050157D0208157E0033166E00001616002D1681F83015CD0000 
162010311621000115890001158B000016B6000016B0000516AE000015AB00001587000015880000 
159B000001F60000028E00000298000002990000024500000218AE85
 
Odpowiedź
#4
Jak chcesz mieć pewny odbiór to użyj sprzętowego UART. UART to nie RS232, lepiej nie używaj zamiennie ani w pojęciach ani w hardware.
Najwyraźniej nie zwiększyłeś bufora, ESP ma swoją bibliotekę softserial, jesteś pewien, że w niej grzebałeś?
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#5
powiem tak za bardzo nie ogarniam tego arduino znalazłem jedną bibliotekę \hardware\arduino\avr\libraries to w takim razie do esp gdzie będzie ?
 
Odpowiedź
#6
To co tam pozmieniałeś przywróć z powrotem, nie tej biblioteki szukasz. W ogóle grzebanie w bibliotece softserial ESP nie jest potrzebne.
Otwórz sobie przykłady z działu ESP (musisz mieć taką płytkę wybraną) i tam gdzie są dla softserial są przykłady jak tworząc obiekt nadajesz mu różne parametry, między innymi bufor.
   
Np. w onewire (UART na jednym pinie w halfduplex) jest takie coś:
SoftwareSerial swSer1(12, 12, false, 256);
SoftwareSerial swSer2(14, 14, false, 256);
Można otworzyć bibliotekę, by dojść w opisie funkcji co do czego jest. Gdzie jest biblioteka to znajdziesz podczas kompilacji, jak masz włączone pełne komunikaty to wypluwa skąd bierze pliki i co kompiluje wraz ze ścieżkami dostępu. Można to przejrzeć na koniec.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#7
A czemu masz 16 bitowy bufor?

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości