Newsgroup: it.comp.lang.c++
Titolo: [C++ Windows] Sviluppare un driver semplice per la seriale

Ciao a tutti,
sto sviluppando e convertendo un driver - gia' esistente - che pilota
un dispositivo collegato alla porta seriale, con l'idea di fare anche
il porting verso linux. Al momento attuale il driver e' una cozzaglia
mista fra C e C++ senza capo ne' coda, solo per Windows. Ho gia' fatto
in modo da astrarre le funzioni di accesso diretto alla seriale, ma
sono arrivato a un punto morto.
La mia indecisione maggiore sta nel che tipo di interfaccia proporre
verso l'esterno. Siccome il driver verra' usato in Java su varie
piattaforme e in piccola parte in Visual Basic, sinceramente non so
come decidermi.
Vorrei cercare di rimanere vicino agli standard normali di
programmazione a oggetti, ma un driver alla fine non e' altro che una
serie di funzioni dichiarate come extern chiamabili da chi usa la dll
/ .so
Io vorrei potere fare si' di avere chiamate del tipo:
mioDevice = new deviceType;
deviceType.method(parameters);
ma questo sembra del tutto incompatibile con cio' che di fatto e' un
driver. Sono sicuramente inesperto perche' probabilmente non riesco a
vedere oltre al mio naso, abituato come sono a creare oggetti e
istanziarli e basta, ma non riesco a capire proprio come fare a
fondere in un driver di basso livello l'idea di classe e di oggetto.
Alla fine, in un driver vedo solo delle chiamate a funzione come si fa
in C, non riesco a vederlo in altro modo.
Al momento attuale infatti il driver non e' altro che questo: una
serie di funzioni dichiarate come extern chiamabili singolarmente. Io
vorrei qualcosa di simile a un oggetto, ma in una DLL forse questa e'
utopia.
Avete qualche suggerimento?


Sei OT, leggi la FQA del newsgroup....


FAQ... :|

 [CUT]
Se mi fossi fermato a leggere solo il titolo, come ero tentato di fare, 
ti avrei detto: it.comp.programmare.win32.
Pero' il tuo titolo non coglie il punto che chiedi, ovvero: tu vuoi 
un'interfaccia a oggetti per un modulo strutturato secondo un paradigma 
puramente imperativo (come il C per l'appunto). E questo e' IT.
La risposta comunque e' semplice: devi banalmente costruire un "wrapper" 
intorno al tuo modulo. Ti faccio un esempio; diciamo che tu abbia 
un'interfaccia "a' la C" del genere:
typedef int handle;
handle miodriver_open(char *s);
int miodriver_leggi(handle h);
void miodriver_scrivi(handle h, int dato);
Quello che creerai e' quindi una piccola libreria:
class miodriver
{
   private:
     handle h;
   public:
     miodriver(char *s) { h = miodriver_open(s); }
     int leggi() { return miodriver_leggi(h); }
     void scrivi(int dato) { miodriver_scrivi(h, dato); }
};
E cosi' risolvi il tuo problema.
E' anche perche' e' facile costruire wrapper del genere in praticamente 
ogni linguaggio, e seguendo praticamente ogni paradigma, quando la base 
e' qualcosa di simile al C, che questo e' il genere di interfaccia 
utilizzata normalmente.
-- 
Mat/tia Belletti - Graduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

 [SKIP]
Ciao,
Purtroppo è il solito discorso...
Vedi, ormai non si può neanche ignorare le domande che appaiono OT perchè
temi che invece siano IT, quindi le leggi per scoprire se realmente sono del
primo o del secondo tipo.
Di fatto non abbiamo la possibilità di leggere il titolo in oggetto e
decidere se l'argomento ci interessa o meno.
Non parliamo poi delle varie domande con in oggetto "aiuto", "help me", "una
cosina semplice semplice" e via dicendo...
Ma esiste un documento a cui spedire tutte le persone che sono così "lazy"
nel descrivere l'oggetto della domanda? Se avete links fatemi sapere,
please.
Non è per volere punire qualcuno ma, come ho già spiegato più volte a
persone che hanno scritto in quel modo, invece è nello specifico interesse
dell' OP (si dice così? Che significa l'acronimo?). Se il testo nell'Oggetto
è ben pensato attira l'interesse di chi conosce la materia specifica, non
viene cestinato, e non rischia di fare perdere tempo a chi invece non può
rispondere all'argomento.
Che ne pensi/pensate?
Saluti,
fabiomdf
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


A proposito... Mi sono dato la "zappa sui piedi" da me stesso...
L' "oggetto" di questo post potrebbe equivocamente far pensare a qualcuno
che si parla di "oggetti" nel senso classico del C++ (e di tutta la
programmazione orientata agli "oggetti").
Ma questo inconveniente non fa altro che confermare quanto sia necessaria
una maggiore attenzione agli "oggetti".


 Che ne pensi/pensate?
Che su usenet e` un problema annoso. 
Un po' uno non sa cosa usare come titolo.. un po' non si vuole sforzare, un
po' non ci pensa nemmeno di arrecare un problema.
Cosi` come anche:
Domanda banale
che a me viene voglia di rispondere senza neanche leggere 'vatti a studiare
un manuale, se e` banale'. Generalmente poi la domanda non e` banale... ma
vabbe`.
Il punto e` che 9/10 chi sa porre la domanda nel modo corretto, ha anche
gia` idea della risposta. E per questo e` difficile.
Non solo... molte persone non 'seguono' i ng, fanno una domanda quando
hanno bisogno (o pensano di averne). Con il risultato che non si rendono
conto di come certi titoli o certi body siano fuorvianti.
Direi che potremmo usare le famose FAQ:
Q: Come posso esporre il mio problema in modo chiaro?
R: Scrivi un Subject che sia esplicativo del problema. Breve e non banale
(per esempio non : [lista di esempi deleteri] ). 
Poi poni la domanda in modo chiaro, specificando possibilmente l'ambiente
in cui hai ottenuto l'errore. Posta anche il messaggio d'errore del
compilatore... etc.. etc...
O no? [ tra l'altro non ricordo se nelle faq qualcosa del genere gia` c'e`]
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]


Ciao,
Mi fa piacere sentire che vorresti inserire la trattazione di questo
argomento sulle FAQ. Mi trovi perfettamente d'accordo.
L'unica cosa che mi fa supporre che incontreremo qualche resistenza è che
non si tratta precisamente di una "domanda posta frequentemente". Però con
uno strappo alla regola si può forse scrivere qualcosa del genere in una
parte introduttiva delle stesse.
Anzi aggiungerei anche domanda/risposta su cosa è specificatamente ammesso e
cosa no in questo Gruppo, cioè una breve checklist per autovalutare se
l'argomento è IT.
Grazie. Vediamo che dicono gli altri.



Scusate per quesi PS...
Nel svolgere l'argomento mi piacerebbe che si ponesse l'accento sul fatto
che questa nota esiste principalmente a vantaggio del richiedente stesso,
perchè così non viene cestinata, perchè attira immediatamente l'interesse di
chi conosce la specifica materia, perchè l'oggetto è il biglietto da visita
che da un'idea di come sarà stato composto il testo e con quale
attenzione... In sintesi se rendi la vita facile a chi ti legge otterrai
migliori e più numerose risposte.


 O no? [ tra l'altro non ricordo se nelle faq qualcosa del genere gia` c'e`]
No, non c'č. Ma non mi sembra attinente al C++.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 non si tratta precisamente di una "domanda posta frequentemente".
In effetti si tratta di una domanda *mai* posta. :-) Comunque la mia
obiezione, come ho detto, č che non č attinente al C++. Forse č piů da
manifesto.


 EMG
Cos'č un "manifesto"? Esiste qualcosa del genere per il nostro Gruppo?
Se esiste, bene (mi piacerebbe sapere chi lo conserva e pubblica). Se non
esiste, che ne pensi se all'inizio delle FAQ, in una parte introduttiva, si
tratta questo argomento? Non in forma di domanda/risposta ma solo come
"suggerimenti" e/o "avvertenze" per i partecipanti a it.comp.lang.c++
Ciao,


 Se esiste, bene (mi piacerebbe sapere chi lo conserva e pubblica).
Possibile che tu non lo abbia mai visto? Eppure viene pubblicato
periodicamente sul newsgroup stesso.


 No, non c'č. Ma non mi sembra attinente al C++.
Questo e` vero. Anche se in altri ng ho visto spesso nelle faq una sezione
in cui si spiegano alcune regole e usanze del ng.
Comunque se hai un'idea migliore... anche se sinceramente per avere subject
decenti non ho visto un metodo che funzionasse (salvo il brutale respingere
i messaggi su ng moderati, e grazie al cielo questo non lo e`).
