Jak v C / Arduino pridat funkci do knihovny?

Pavel Kutina hw na prelude.cz
Sobota Leden 20 23:32:00 CET 2024


Jen k tomu if - jak? Teda ne v kódu, ale ta knihovna nijak nerozlišuje, k 
čemu se připojí - prostě je napsaná na klasické HD44780, no a jestli má 
nějaký kompatibilní řadič rozšířenou instrukční sadu je jí vcelku putna. Z 
displeje se (obvykle) nečte, takže ani ten nemá jak prokázat svoji 
identifikaci, takže buď do kódu vnořit nějaké #define a #ifdef větev do 
knihovny, nebo to udělat jak to je teď, kdy se definují varianty při 
inicializaci. Je tam 8- nebo 4bit komunikace, jednořádková nebo dvouřádková 
komunikace, velikost znaku - no a to je asi všechno, co původní 44780 umí. 
Ale kdyby se pod to měly zahrnout všechny nadstavby kompatibilních řadičů, 
asi by to značně nakynulo a vlastně nebyo nikdy hotové, vcelku chápu, že 
autor tímhle směrem nešel.

Celkem pochybuju, že těch pár řádků do hlavní větve zařadí - ono těch 
variant bude mračno, a když tam zapíše jednu, proč tam nezapsat dalších 
374 - a celá jednoduchost a stabilita bude v /dev/null...

Pavel Kutina



----- Original Message ----- 
From: "Jindrich Fucik" <fulda na seznam.cz>
To: <hw-list na list.hw.cz>
Sent: Saturday, January 20, 2024 6:51 PM
Subject: Re: Jak v C / Arduino pridat funkci do knihovny?


Hele a proč nepoužít vlastnosti githubu?

Mám velmi dobrou zkušenost s tím, že si udělám vlastní klon, v něm si
potřebné soubory nějak kulturně zadituji, abych nneponičil původní
myšlenku a pak zase vrátím původnímu autorovi. Github udělá patch, já
nějak popíšu, co jsem udělal a proč a je to. Pokud maintainer ještě
žije, tak buď změnu akceptuje jak je, nebo mi napíše co jsem nepochopil
a udělá podobnou.

Vlastně ve tvojem modelu schází nějaký ten if, jenom pro podporovaný
displej. Třeba se to chytne a zjistíš, že ještě pár dalších displejů
podporuje brightnes.

Dne 20.01.2024 v 1:17 Pavel Kutina napsal(a):
> Zdravim,
>
> resim drobnost, ale trochu si s ni lamu hlavu, v C fakt nejsem moc dobrej.
>
> Mam Arduino, v nem pouzivam jednu ze sdilenych knihoven (standardni 
> LiquidCrystal), ale protoze ji pouzivam ve spojeni s Futaba VFD, docela by 
> se mi hodilo mit tam rizeny i jas, coz u LCD neni potreba. Tohle jsou 
> originaly:
>
> https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.cpp
> https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.h
>
> Ja potrebuju pripsat v podstate jednu funkci:
>
> // This will set bright of text
> void LiquidCrystal::bright(uint8_t brg) {
>  command(LCD_FUNCTIONSET | _displayfunction | brg);
> }
>
> Blbe je, ze _displayfunction je v .h definovana jako private, takze se k 
> ni z meho kodu nedostanu (nebo to neumim). Resenim je upravit si kod 
> knihovny i headeru natvrdo - funkci jsem pripsal, v .h jsem ji deklaroval, 
> pridal jsem definice pro nastaveni jasu. V mem kodu ji zavolam jako:
>
> lcd.bright(LCD_BRIGHT25);
>
> A vsechno funguje.
>
> Potud OK. Ale protoze je to jedna se sdilenych knihoven, muze u ni dojit 
> casem k nejake uprave a predpokladam, ze pri updatu to moji lokalni upravu 
> zahodi. Da se tohle nejak resit? Udelat si vlastni fork a udrzovat to se 
> mi uplne nechce - da se ta knihovna nejak rozsirit a dostanu se pak i k te 
> privatni promenne? V ni je schovane aktualni nastaveni displeje - pocet 
> radku, zpusob komunikace. V podstate jde o stav tri bitu, ale protoze z 
> displeje nectu, jen se do nej zapisuje, tak neni jak je zjistit, takze se 
> jejich stav udrzuje v pameti.
>
> Napadne nekoho, jak to udelat pokud mozno spravne?
>
> Diky.
>
> Pavel Kutina
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list 



Další informace o konferenci Hw-list