Hirdetés
- Minimális változásokat hozhat a Google Pixel 10a
- Okosóra és okoskiegészítő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Vivo X200 Pro - a kétszázát!
- Fotók, videók mobillal
- Xiaomi 15T Pro - a téma nincs lezárva
- Mobil flották
- Megbüntették, ezért feloszlatná az EU-t Elon Musk
- Milyen okostelefont vegyek?
- A középkategória egyik legjobb vétele - Dreame L40 Ultra AE
-
Mobilarena
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 stringelse {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
- YouTube
- Mi a labubu? – és pár fontos dolog, amire idén rágugliztál
- Diablo IV
- Nyaralás topik
- Peugeot, Citroën topik
- Jövedelem
- Minimális változásokat hozhat a Google Pixel 10a
- Okosóra és okoskiegészítő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- További aktív témák...
- Hoya HD Filter CIR-PL 58 Digital - Prémium cirkuláris polárszűrő + Dörr Advanture filter tartó
- Corsair MP600 CORE XT 4TB M.2 NVME PCI-E 4.0 x4 - 100/99 - 7000-5800 MBs - Eladó!
- Sapphire Pulse RX 6700 XT 12GB használt videókártya számlával és garanciával eladó!
- Nikon AF-P DX Nikkor 10-20mm f4.5-5.6G VR
- ASUS RTX 3070 Ti 8GB GDDR6X TUF GAMING OC Eladó!
- LG 55C4 - 48" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- HIBÁTLAN iPhone 13 mini 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3286, 100% Akksi
- BESZÁMÍTÁS! MSI B450 R5 5600X 32GB DDR4 512GB SSD RTX 3080 10GB RAMPAGE Shiva Cooler Master 750W
- REFURBISHED és ÚJ - HP USB-C Dock G5 (5TW10AA) - 3x4K felbontás
- Xiaomi 11 Lite 5G NE 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi
. De most már kíváncsi vagyok hogy mi lehet ennek a furcsa viselkedésnek az oka
.
ekkold

