Funkcja zmiany wartości String. - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Funkcja zmiany wartości String. (/watek-funkcja-zmiany-warto%C5%9Bci-string) |
Funkcja zmiany wartości String. - pawel296 - 17-04-2020 Siedzę nad tym 2 dni, ale nie mogę tego rozgryźć. Mam trzy zmienne String numerGlowny; String numer1 = 111111111; String numer2 = 222222222 są to numery telefonów i taką funckcję: Kod: if((textMessage.indexOf(F("NO DIALTONE"))>=0) || (textMessage.indexOf(F("NO CARRIER"))>=0) || (textMessage.indexOf(F("BUSY"))>=0) || (textMessage.indexOf(F("NO ANSWER"))>=0)){ Kod: void telefon(){ Chcę aby po każdorazowym zrealizowaniu warunku w ifie, numerGlowny zmieniał się naprzemiennie, czyli po odczytaniu "NO DIALTONE" numerGłówny ma wartość "1111111111". Po kolejnym odczytaniu "NO DIALTONE" wartość ta zmienia się na "222222222", Po kolejnym odczytaniu "NO DIALTONE" zmienia się na "111111111" i tak w kółko. Jak to zrobić? Bo mi już czacha dymi od myślenia. RE: Funkcja zmiany wartości String. - ANT - 17-04-2020 (17-04-2020, 17:32)pawel296 napisał(a): 1. Czy numerGlowny podstawiasz w postaci Stringa? 2. Spróbuj również "ATD+48"+numerGlowny+";" zapisać to w jednej zmiennej String i dopiero podstawić tą zmienną w funkcji altSerial.println(zmienna String); Pzdr. RE: Funkcja zmiany wartości String. - Robson Kerman - 17-04-2020 if (numerGlowny == numer1) numerGlowny = numer2; else numerGlowny = numer1; RE: Funkcja zmiany wartości String. - pawel296 - 18-04-2020 (17-04-2020, 23:31)Robson Kerman napisał(a): if (numerGlowny == numer1) numerGlowny = numer2; O to chodziło. Nie wiem jak na to mogłem nie wpaść. Dzięki Robson. RE: Funkcja zmiany wartości String. - pawel296 - 19-04-2020 Nie będę zakładał nowego teamtu, tylko napisze w tym samym bo i tak związanej jest to z jednym projektem. Mam coś takiego: Kod: if((textMessage.indexOf("NO CARRIER")>=0) || (textMessage.indexOf(F("NO DIALTONE"))>=0) || (textMessage.indexOf(F("BUSY"))>=0) || (textMessage.indexOf(F("NO ANSWER"))>=0)){ W celu ponownego połączenia gdy, poprzedniego połączenia nikt nie odebrał dorzuciłem do środka ifa (textMessage.indexOf(F("NO CARRIER"))>=0). Działa to aż za dobrze, tzn. po odebraniu i rozłączeniu połączenia pojawia się odpowiedź "NO CARRIER" po której odczytaniu następuje wykonanie kolejnego połączenia (na inny numer niż poprzednio). Chciałem temu zaradzić. Kod: 17:46:48.062 -> ATD+48519xxxxxx; Na porcie szeregowym najpierw pojawia się "ATD+48519xxxxxx;" następnie gdy nikt nie odbierze, pojawia się "NO CARRIER" Dlatego napisałem takie coś: i Kod: if(textMessage.indexOf("ATD")>=0) { Niestety to nie działa. Pytanie dlaczego? W analogiczny sposób zrobiłem rozłączanie. Po odebraniu połączenia uruchamia się timer, który odlicza czas do polecenia ATH. Kod: if(textMessage.indexOf("+COLP:")>=0){ kopia z portu: Kod: 17:50:49.423 -> ATD+48519xxxxxx; W głównej pętli mam takie coś : Kod: char c; Jak ogarnąć to aby rozróżnić "NO CARRIER" po odebraniu i rozłączeniu, od "NO CARRIER" po nieodebraniu połączenia? RE: Funkcja zmiany wartości String. - pawel296 - 20-04-2020 Olśniło mnie, rozwiązanie może brzydkie, ale działa Kod: if(textMessage.indexOf("TD")>=0 && textMessage.indexOf(numer1)>=0){ATD = "abcd"; } |