Hirdetés

Új hozzászólás Aktív témák

  • Teasüti

    nagyúr

    Estét!
    Kérhetnék egy-két tippet arra miért hibázik nekem a Serial átvitel?
    Serial monitorból szeretnék 11 karaktert átküldeni: 255,255,255.
    De egymás után többször se sikerül fogadni az adatot, vhol mindig hibázik.
    Ez volna a kód, aminek el kéne kapnia papíron:

    char message[12] = {};
    bool newMessage = false;
    byte messageCount = 0;

    while (Serial.available() > 0) {
    char c;
    c = Serial.read();
    if ((c == '\r') || (c == '\n')) { //end of line
    if (messageCount) { //empty message filter
    newMessage = true;
    Serial.println("EOL");
    break;
    }
    }
    else {
    message[messageCount++] = c;
    if (messageCount > 12) { //overflow
    newMessage = true;
    break;
    }
    }
    }

    Ez elvileg több loop() cikluson keresztül is olvas egészen addig, míg nincs sor vége, vagy túl nem csordul a tömb.
    Ennek ellenére random hibákat dob nekem, kimarad egy-egy karakter a közepéből, vagy a végéről (ami után megjött ez EOL jelzés), de olyan is előfordult, hogy a 255-öt 2555-nek mentette el a kimeneten.

    Az átvitel bluetooth-on (hardveres UART) történik és a 15KB program hiba nélkül felmászik, de nem tudok elküldeni 11 bájtot?? :U
    (Mondjuk USB-hez viszonyítva tovább tart; lehet hogy hibajavítózik feltöltéskor? Tud ilyet a bootloader?)
    A táp hálózatról megy, szóval még csak a gyenge USB-re se lehet ráfogni.
    Sőt, a perifériáknak (BT) külön ágról megy a táp, nem az Uno-ról üzemelnek (ground közösítve).

    Jah és a Serial.write parancsok egyáltalán nem hibáznak. Soha. :F

    Erre esetleg van vkinek vmi ötlete? :R

Új hozzászólás Aktív témák