• 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
Problem z przesyłem danych szeregowych
#1
Witajcie.
Piszę program do komunikacji z jednym urządzeniem.
Mam problem z wysyłaniem danych ale o tym od początku.

   

Wygląda to następująco:
1. Fabryczny program na androida łączy się z modułem Bluetooth (BT) kiedy klikam Connect wysyła polecenie "AT+B2STX = A na zdjęciu"
2. moduł BT przekazuje polecenie do arduino które odbiera polecenie "AT+B2STX  = A"  i wysyła inne "OK+B2STX! =B na zdjęciu"
3. Wysłane przez arduino polecenie "OK+B2STX!" zostaje wysłane przez BT i odczytane przez program na androidzie.
4. Następnie program wysyła już normalne dane do połączenia z urządzeniem "C na zdjęciu"

Mój problem polega na tym ze udało mi się prostym programem odebrać polecenie A i wysłać B ale każde kolejne dane wysyłane w arduino są blokowane i nie wychodzą za nie. na TX nie otrzymuje żadnych danych.
Proszę o wskazówki jak rozwiązać ten problem.
z góry dziękuję.
Pozdrawiam.

Obecny program:

Kod:
String odebraneDane = "";
void setup() {
  Serial.begin(115200);
}
void loop() {
    if (Serial.available())
      Serial.write(Serial.read());
    odebraneDane =Serial.readStringUntil('\n');
    if (odebraneDane >= "AT+B2STX")
        Serial.println("OK+B2STX!");
}
 
Odpowiedź
#2
Z podanego kodu nie wynika, żeby Arduino miało odebrać coś z jednego UART (BT) i wysłać do drugiego UART(urządzenie).
W tym schemacie masz TX podłączony do RX dwóch odbiorników?
Jak chcesz się wpiąć w komunikacje dwóch urządzeń to użyj dwóch UART. Do obsługi wykorzystaj przykład z Arduino SerialEvent. Przekaż polecenie, odbierz odpowiedź i przekaż do BT, w między czasie możesz robić kopie komunikacji i wyświetlać na UART PC (przez połączenie USB Arduino). Ale to już trzy UART, użyj np. płytki MEGA. W UNO jeden UART (i jedyny) jest na stałe podłączony do USB, nie piszesz jakie to Arduino, ale jak UNO to już mu podpiąłeś trzy urządzenia. Od biedy jakoś tam działa podłączenie UART0 UNO zewnętrznego urządzenia, bo do konwertera USB jest wpięty przez rezystory 1k, ale nie daje to pewności działania.
Masz jakiś bardzo zakręcony sposób przedstawiania informacji, z kodu wynika, że robisz wysłanie "AT+B2STX" (A na zdjęciu). Jest późno, ale raczej nie z tego powodu zajęło mi sporą chwilę rozkminienie o co Ci chodzi.
Uart to komunikacja 1:1.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości