21-07-2019, 13:40
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
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;
}
}
}