Skocz do zawartości

NeverGiveUp1995

Użytkownicy
  • Zawartość

    13
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O NeverGiveUp1995

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Temat prawdopodobnie rozwiązany tablica była zdefiniowana 4 wiersze a ja pchałem dane do 5,6,7,8 a jeszcze pytanie jak odebrać z domoticza komende switch on ?
  2. Witam mam pewien problem napisałem na esp program działa tylko wywala esp i nie wiem od czego może ktoś obczai i podpowie co zmienić ? co udało mi się ustalić to że jak zakomentuje tą linijke to chodzi bez wywalania Dane[4][1] = wyszukaj(str[4]); https://pastebin.com/z7BxJQXi
  3. dobra to zacznijmy od nowa jak mam ten program i wg tego co znalazłem w opisach funkcji arduino to serialEvent powinien się wykonać jak będą jakieś dane i powinno to zapisać do tablicy i zwracam flagę że dane zostały odebrane? bool OdebranoDane = false; uint8_t IloscDanychDoOdebrania; uint16_t buffor[120]; void setup() { { pinMode( 3, INPUT_PULLUP); Serial.begin(9600); Serial.println("Serial Gotowy "); } } void loop() { if(OdebranoDane){ for (int i = 0; i < IloscDanychDoOdebrania; i++) { Serial.print(buffor[i], HEX); } Serial.println("----------"); } } void serialEvent(){ IloscDanychDoOdebrania = Serial.available();\ uint8_t idx = 0; while (Serial.available()){ buffor[idx] = Serial.read(); idx++; if(idx == IloscDanychDoOdebrania){ bool OdebranoDane = true; } } }
  4. czytam cały czas przeglądam internet ale nie mogę tego zrozumieć są przykłady jak odbierać po jednym bajcie ale jak przepisać do tablicy np wiekszą ilość bajtów to nic nie znalazłem teraz coś próbuje zrobić na serialEvent()
  5. print jest tylko jeden co mam podgląd jakie dane przyszły a Serial.available() zwraca -1 jak ma buffor pusty chyba tak
  6. wiem z tą flagą poprawiłem czytam jak jakieś ostrzeżenia wywali a praktycznie to potrzebuje z urządzenia odczytać taki ciąg zapisać do tablicy i przeszukać jego tylko dalej nie mogę odczytać tego do tablicy ciąg jest w hex 0226FFF4169E502D169F4B23157C0050157D0212157E0035166E00001616002D1681F83015CD0000162013281621000315890001158B000016B6000016B0000416AE000115AB00001587000015880000159B000001F60000028E0000029800000299000002450000021804CC
  7. tak też nie działa za bardzo nie mogę ogarnąć działania tego seriala w internecie też kiepsko coś znaleść by wytłumaczone było jak działa na stm32f103 działa mi od strzała tylko nie mam jak tego wysłać do domoticza myślałem że to ogarnę na samym esp ale kiepsko to idzie . char odebrane; char Buffor[120]; uint8_t a, flaga, flaga2; void setup() { pinMode( 3, INPUT_PULLUP); Serial.begin(9600); Serial.println("Serial Gotowy \p"); } void loop() { while(Serial.available() > 0 && flaga2 > 0 ){ Serial.print(Serial.available()); odebrane = Serial.read(); Buffor[a] = odebrane; a++; if (Serial.available() == -1) flaga2 = 0; flaga = 1; } if(Serial.available() == 0 && flaga == 1) { for (int i = 0; i < 119; i++) { Serial.print(Buffor[i], HEX); } Serial.println("----------"); flaga = 0; flaga2 = 1; for (int i = 0; i < 119; i++) { Buffor[i] = 0; } } }
  8. coś takiego masz na myśli char odebrane; uint16_t Buffor[120]; uint8_t a, flaga; void setup() { pinMode( 3, INPUT_PULLUP); Serial.begin(9600); Serial.println("Serial Gotowy \p"); } void loop() { if(Serial.available() > 0 ){ for (int u = 0; u < 119; u++){ odebrane = Serial.read(); Buffor[u] = odebrane; } flaga = 1; } if(Serial.available() == 0 && flaga == 1) { for (int i = 0; i < 119; i++) { Serial.print(Buffor[i], HEX); } Serial.println("----------"); flaga = 0; for (int i = 0; i < 119; i++) { Buffor[i] = 0; } } }
  9. witam potrzebuje zapisać 108 bajtów hex do tablicy co robię źle ? wysyłem przez real term 0x11,0x22,0x33,0x44,0x55,0x66 a otrzymuje taki wynik jeszcze podzielony char odebrane; uint16_t Buffor[120]; uint8_t a, flaga; void setup() { pinMode( 3, INPUT_PULLUP); Serial.begin(9600); Serial.println("Serial Gotowy \p"); } void loop() { while(Serial.available() > 0 && a < 119) { odebrane = Serial.read(); Buffor[a] = odebrane; a++; flaga = 1; if(a == 119){ return; a = 0; } } if(Serial.available() == 0 && flaga == 1) { for (int i = 0; i < 119; i++) { Serial.print(Buffor[i], HEX); } Serial.println("----------"); flaga = 0; for (int i = 0; i < 119; i++) { Buffor[i] = 0; } } }
  10. to tak program zmieniłem tak jak poniżej a nadawanie z dma albo przerwaniach nie mam pojecia jak zrobić #include <SoftwareSerial.h> const int PIN_RX = 2; const int PIN_TX = 5; const int PIN_RX_SP = 3; const int PIN_TX_SP = 1; 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); pinMode(PIN_RX_SP, INPUT_PULLUP); pinMode(PIN_TX_SP, INPUT_PULLUP); //uruchomienie hardeware serial Serial.begin(9600); while (!Serial) Serial.println("Hardeware serial gotowy!"); //uruchomienie software serial PiecSerial.begin(9600); while (!PiecSerial) Serial.println("Software serial gotowy!"); } //funkcja tworzaca tablice wartosci odczytanych z PiecSerial uint16_t* DoTablicy() { int i = 0; while (Serial.available ()) { bajtOdebrany = Serial.read(); ramkaCO[i] = bajtOdebrany; i++; } return ramkaCO; } void loop() { if (Serial.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; } }
  11. to może ktoś zapoda jakimś działajacym kodem odbierającym dane do tablicy ? bo ja juz tego za bardzo nie ogarniam
  12. 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 #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; } } }
×
×
  • Utwórz nowe...