- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Magga: PLEX: multimédia az egész lakásban
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Gurulunk, WAZE?!
- Kempingezés és sátrazás
- Viber: ingyen telefonálás a mobilodon
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
-
LOGOUT
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Blasius
tag
válasz
vargalex #19710 üzenetére
Na, tálalhatóbb formába hoztam a kódot. Íme:
const byte numChars = 128;
char receivedChars[numChars];
bool newData = false;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("<Johet>");
}
void loop() {
// put your main code here, to run repeatedly:
recvWithStartEndMarkers();
showNewData();
}
void showNewData() {
if (newData == true) {
Serial.print("new data came:");
Serial.println(receivedChars);
newData = false;
}
}
void recvWithStartEndMarkers() {
static boolean recvInProgress = false;
static byte ndx = 0;
static byte ndxmea = 0;
byte endKa = 0x0a;
byte startKa = 0x24;
byte starKa = 0x2a;
byte nmea = 0x00;
char rc;
char nmeaRd[2];
long nmeaRdL;
bool inhibi = false;
while (Serial.available() > 0 && newData == false) {
rc = Serial.read();
if (recvInProgress == true) {
if (rc != endKa) {//delay(2);//?????????????????????????????????????????????????????????????????
if (inhibi == true) {nmeaRd[ndxmea]=rc; ndxmea++;}
else if (rc == starKa) {inhibi = true;}
else if (inhibi == false){nmea ^=rc; receivedChars[ndx] = rc; ndx++;
//delay(1);//?????????????????????????????????????????????????????????????????
if (ndx >= numChars) {ndx = numChars - 1;}
}
}
if (rc==endKa) {
nmeaRd[2] = '\0';
char * pEnd;
nmeaRdL = strtol(nmeaRd, &pEnd, 16);
if (nmeaRdL==nmea){receivedChars[ndx] = '\0';} // terminate the string
else {memset(receivedChars, '0', 6); receivedChars[7] = '\0';}
recvInProgress = false;
ndx = 0;
ndxmea = 0;
newData = true;
nmea =0;
inhibi=false;
}
}
else if (rc == startKa) {recvInProgress = true;}
}
}
A második függvényben lévő késleltetések (...delay(x)/???...) nélkül a kód nem megy rendesen. Viszont, ahogy Aryes tippelte, a késleltetéssel jól megy. Ha késleltetések helyett sorosra írás lenne akkor is menne jól. Hát, kicsit tákolt, de megy. Gondolom erre mondják hogy nem egy robosztus kód
. De most már kíváncsi vagyok hogy mi lehet ennek a furcsa viselkedésnek az oka
.
(nmea ...^=rc... az egyfajta crc számítás. A startKa karakter utáni karakterekre kell számolni. Aztán a soroson jön egy * (starKa), egy byte két karakter hex ascii-ként (00-FF, ez a crc) majd egy 0x0a karakter (sorvég). Ha a számolt és fogadott crc egyezik, akkor kiírja sorosra ami jött ahogy van. Ha a crc nem stimmel akkor kinullázza az első pár karaktert.)
Ez egy rendes arduino unon fut (atmega chip).
Új hozzászólás Aktív témák
Hirdetés
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Autós topik
- Xbox Series X|S
- Parkside szerszám kibeszélő
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Kormányok / autós szimulátorok topikja
- Nintendo Switch
- Luck Dragon: Asszociációs játék. :)
- Filmvilág
- További aktív témák...
- Csere-Beszámítás! Gigabyte Aorus Elite RX 9070 XT 16GB Videokártya! Bemutató darab!
- GIGABYTE RTX 3060TI 8GB VISION OC
- Csere-Beszámítás! Sapphire Pulse RX 9070 XT 16GB Videokártya! Bemutató darab!
- Topping D30 Pro (ezüst) eladó
- ! AMD Brutál Gamer Konfig ! 9800X3D / 7900XTX ( RITKASÁG ) 32Gb RAM 32Colos ROG Monitor
- Samsung Galaxy A52s 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- SAMSUNG DDR4 REG ECC 32GB 2666MHz RDIMM szerver RAM modulok, nettó 15740Ft+ÁFA, 1 év gar., több db
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- 121 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- A Panasonic Toughbook CF-54 i5-5300u i5-6300u TN, IPS touch Budapest, MPL Foxpost
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest