Stránka 1 z 1
Jak poslat pole přes ser.port
Napsal: 07 črc 2018, 08:50
od Le-Ze
Zdravím.
Kód: Vybrat vše
String A001[10] = { "one", "two", "three" };
void setup() {
Serial.begin(9600);
A001[0] = "Jedna";
A001[1] = "Dvě";
A001[2] = "Tři";
Serial.println(A001[0]);
Serial.println(A001[1]);
Serial.println(A001[2]);
}
Dá se poslat přes ser.port cele pole, tak abych ho měl zas na druhem arduinu jako pole?
Re: Jak poslat pole přes ser.port
Napsal: 07 črc 2018, 09:44
od gilhad
Ano, ve smycce - bud to budes posilat po retezcich (bacha, kdyz budou obsahovat odradkovani, tak musis resitr ty radky - obecne bych retezce posilal bez odradkovani a oodelene znakem \0) , nebo po bytech cele pole a jako cele pole to nacist.
Tak jak tak to budes muset cist taky ve smycce.
Re: Jak poslat pole přes ser.port
Napsal: 07 črc 2018, 10:21
od pavel1tu
JJ souhlas, také bych odesílal jeden string za druhým.
cele pole mi nikdy neprošlo, nejsem dobrý programátor
pokud to zlomíš, poděl se se mnou, děkuji ...
Jinak najdeš spoustu příkladů, odsud často čerpám
https://www.safaribooksonline.com/libra ... /ch04.html
Re: Jak poslat pole přes ser.port
Napsal: 08 črc 2018, 07:26
od Le-Ze
pavel1tu píše: ↑07 črc 2018, 10:21
JJ souhlas, také bych odesílal jeden string za druhým.
No a není pak lepší si to v arduinu pospojovat a odeslat jako jeden string?
Serial.println(A001[0] + "!"+ A001[1] + "!"+ A001[2]);
A v druhem si napsat nějaký delimiter, který to zas rozporcuje a uloží do pole.
Re: Jak poslat pole přes ser.port
Napsal: 08 črc 2018, 10:11
od pavel1tu
Le-Ze píše: ↑08 črc 2018, 07:26
pavel1tu píše: ↑07 črc 2018, 10:21
JJ souhlas, také bych odesílal jeden string za druhým.
No a není pak lepší si to v arduinu pospojovat a odeslat jako jeden string?
Serial.println(A001[0] + "!"+ A001[1] + "!"+ A001[2]);
A v druhem si napsat nějaký delimiter, který to zas rozporcuje a uloží do pole.
Asi ano, ale nevíme co budeš posílat, a pokud tam budou nestandartní znaky .... - já posílal také pole a měl jsem problém na druhé straně to rozebrat

Re: Jak poslat pole přes ser.port
Napsal: 08 črc 2018, 14:33
od AstroMiK
Le-Ze píše: ↑08 črc 2018, 07:26
No a není pak lepší si to v arduinu pospojovat a odeslat jako jeden string?
Serial.println(A001[0] + "!"+ A001[1] + "!"+ A001[2]);
A v druhem si napsat nějaký delimiter, který to zas rozporcuje a uloží do pole.
A nemůže pak nastat problém při větším množství přenášených dat?
Vysílací Arduino posílá data maximální možnou rychlostí (obyčejný "Serial.print()"), ale přijímací Arduino ty data musí ještě navíc zpracovávat (testovat na ukončovací znaky, přiřazovat do jednotlivých proměnných ...).
Takže příjem bude asi o trochu pomalejší, než vysílání.
Při malých objemech dat tenhle problém řeší přijímací buffer (velikost 64 bajtů), ale když je těch dat moc, tak by mohlo dojít k postupnému zahlcení toho bufferu a ztrátám v datech.