sériová linka

Odpovědět
Vítek
Příspěvky: 26
Registrován: 05 pro 2018, 17:47
Bydliště: Kladno
Kontaktovat uživatele:

sériová linka

Příspěvek od Vítek » 17 lis 2019, 20:49

ahoj,
z bluetooth modulu přijímám pomocí picaxe 20m2 po sériové lince celá čísla od 0 do 1000, která by měla regulavat jas led pásku viz kód:

Kód: Vybrat vše

symbol lustr=B.1  ;led pásek
symbol bl=B.6    ;bluetooth
symbol lustrb=W2

pwmout lustr,150,100 ;inicializace pwm


do
serin bl, N9600_8,lustrb  ;příjem po sériové lince
debug                                 ;výpis hodnot proměnýc na pc (kvůli testování)
pwmduty lustr,lustrb           ;nastav signál pwm
loop
hodnota proměnné se, ale nedostane pod 3 a nad 222
neví někdo proč a jak to opravit?
Vítek

Uživatelský avatar
jrt
Příspěvky: 1611
Registrován: 17 úno 2013, 17:13

Re: sériová linka

Příspěvek od jrt » 18 lis 2019, 10:48

Jen na první pohled: proměnná (lustrb), kterou přenášíš musí být byte, nikoli word.
jrt
jederobot.cz, hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

DavidO
Příspěvky: 879
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO » 18 lis 2019, 11:02

serin ukládá do zadané proměnné jeden bajt co přijde po seriáku, tj. 0-255. A když to je bajt, tak se tam 1000 nevejde. V dokumentaci je zmíněná možnost přijmout ASCII řetězec cifer, který se převede na číslo a uloží do proměnné, ale nezmiňují velikost, čili bych taky čekal max. jeden bajt. Ale tak jak to máš napsaný, tak to čte binárně a ne takhle řetězec (to by tam musely bejt šraňky). Nepíšeš, jakým způsobem to posíláš z druhé strany, ale jestli to posíláš jako text, tak se ti do té proměnné uloží první znak a tedy její hodnota bude odpovídat ASCII kódu toho znaku. Jestli to posíláš binárně, tak by tam mohly přijít dva bajty a do té proměnné se ti uloží první přišlý (což bude podle endianity ten buď víc nebo míň významný)

Vítek
Příspěvky: 26
Registrován: 05 pro 2018, 17:47
Bydliště: Kladno
Kontaktovat uživatele:

Re: sériová linka

Příspěvek od Vítek » 18 lis 2019, 17:48

z word jsem udělal byte a odeslal číslo 1, nejdřrv jako jeden bit, picaxe přijal 7, při odeslání 1 jako text picaxe přijal 5. Kdyˇjsem za jedničku přidal cr a lf a číslo odeslal jako bajt dostal jsem 7 nebo 135 nebo 103, a když jsem 1 poslal jako text výsledek byl 197 nebo 213 nebo 221

DavidO
Příspěvky: 879
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO » 19 lis 2019, 00:25

To teda posíláš z mobilu přes BT z té apky z AppInventoru?
Máš stejně nastavené rychlosti a další parametry komunikace? Nemáš to třeba inverzně? Mezi různými pokusy posílání jsi resetoval příjemce (třeba mu někde něco zbylo...)? To "poslal jako text" je fakt "poslal jako písmeno" anebo "ňák poslal a pokusil se přijmout jako písmeno"?

Vítek
Příspěvky: 26
Registrován: 05 pro 2018, 17:47
Bydliště: Kladno
Kontaktovat uživatele:

Re: sériová linka

Příspěvek od Vítek » 19 lis 2019, 22:40

Ano přes bluetooth, většinou z AppInventoru, ale zkoušel jsem i serial bluetooth terminal. Rychlosti komunikace mám stejnou jako, když bluetooth připojím do tabletu a čísla zobrazuji přes sériový minitor v ten moment se čísla zobrazují správně (jsou-li odeslána jako text), jestli to nemám inverzně nevím, jestli PuTTY zobrazuje o jaký signál se jedná, tak nevím kde, přijímat jsem zkoušel v obou variantách. Resetoval i přeprogramovával jsem několikrát bohužel výsledky pořad stejné. Poslal jako text znamená, že jsem k odeslání použil blok SendText.

DavidO
Příspěvky: 879
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO » 19 lis 2019, 23:13

Když to posíláš jako text, tak to i v tom Picaxe musíš jako text zpracovat, serin ti přijme bajt, čili jedno písmeno nebo cifru, reprezentované svým kódem.
To inverzně jsem myslel ve smyslu jak to teda posílá ten bluetooth modul Picaxovi. Picaxe chápe seriovou komunikaci defaultně "idle high" (podle RSxxx standardů), naopak řada modulů to chápe častěji jako "idle low" podle běžnějšího postupu v meziprocesorové TTL/CMOS komunikaci. Takže jde o to, jak ti to posílá ten Bluetooth modul, jestli náhodou nemáš v Picaxe nastavit tu inverzi. Já bych řekl, že jo. A navíc si musíš srovnat, aby se posílalo i přijímalo jako text anebo jako číslo na obou stranách stejně.

Vítek
Příspěvky: 26
Registrován: 05 pro 2018, 17:47
Bydliště: Kladno
Kontaktovat uživatele:

Re: sériová linka

Příspěvek od Vítek » 22 lis 2019, 18:04

přijímat zkouším obojím způsobem, s i bez inverze, jak mám nastavit co picaxe přijímá (číslici, nebo text) a čím se to liší?

DavidO
Příspěvky: 879
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO » 24 lis 2019, 23:12

Viz manál, liší se to šraňkama před jménem cílové proměnné.
Když to má přijmout číslo (bez #), tak to přijme jeden bajt a ten beze změny jak přišel flekne do té proměnné.
Když to má přijmout text (s #), tak čte jednotlivé cifry dokud to jde (=dokud nenarazí na ne-cifru), to překonvertuje z řetězce na čislo a výsledné číslo uloží do proměnné.

Příklad: když z druhé strany pošleš 4 bajty 0x31 0x32 0x33 0x20, tak ti serin bl, N9600_8,lustrb do proměnné lustrb uloží jen první z nich a to jako číslo 49 (protože to je v hexu 0x31), zatímco serin bl, N9600_8,#lustrb v té samé situaci do lustrb uloží číšlo 123, protože 0x31 je číslice '1', 0x32 '2', 0x33 '3' a 0x20 mezera, takže ta sekvence je řetězec "123 " a ta mezera na konci ukočí čtení textu, který se má převést na číslo.

To s inverzí je na první pohled možná trochu magie, ale myslím, že by to mohlo vysvětlovat tvoje potíže spolu s možná nesprávným nastavením Baudrate. Možná se do toho ale ještě může motat nějaký šum nebo blbé propojení, to ale na první pohled nevidím. (jako vždycky - nakonec to přines na Robodoupě, poladíme to)

elgo
Příspěvky: 2
Registrován: 18 pro 2019, 19:37

Re: sériová linka

Příspěvek od elgo » 09 bře 2020, 20:27

Neviem či ti to pomôže, ale po skúsenostiach s modulom hc-05, som použil priame data T4800 a nie N4800.
Pri inštr. serin je dobre pouzit aj Timeout cca 500ms, aby ti tie data "neušli". A Qualifiers tiež nieje od veci.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti