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 »

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: 1921
Registrován: 17 úno 2013, 17:13

Re: sériová linka

Příspěvek od jrt »

Jen na první pohled: proměnná (lustrb), kterou přenášíš musí být byte, nikoli word.
jrt
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO »

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ý)
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
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 »

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: 1133
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO »

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"?
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
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 »

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: 1133
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO »

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ě.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
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 »

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: 1133
Registrován: 01 kvě 2013, 21:27

Re: sériová linka

Příspěvek od DavidO »

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)
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
elgo
Příspěvky: 2
Registrován: 18 pro 2019, 19:37
Bydliště: Raztocno,SK

Re: sériová linka

Příspěvek od elgo »

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