Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-02-2012, 14:43   #1
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
[C++] Creare una classe per inviare comandi su un cavo seriale ad una pinza

Ragazzi,
mi appello alla vostra disponibilità per chiedervi questa cosa:
Devo creare una classe per la gestione di una pinza elettrica della Schunk connessa via seriale al PC, in C++.

Devo fare tutto da zero, e sinceramente non so proprio come partire...perchè il docente mi ha detto di cercare in rete la libreria da includere per le comunicazioni seriali (ovviamente da usare come output)...

Qualcuno sa consigliarmi quale libreria usare? Mi postate un link da dove scaricarla?

Considerate che devo usare un pc con Ubuntu e NetBeans IDE come ambiente per scrivere la classe ed il relativo programma che la usi...ed è un ambiente che non conosco affatto...visto che per gli esami, abbiamo usato il DevCpp e vi lascio immaginare quanto sia pessimo per fare una cosa del genere...

Qualcuno sa come aiutarmi?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2012, 15:26   #2
british
Member
 
L'Avatar di british
 
Iscritto dal: Sep 2008
Città: Milano
Messaggi: 126
Se il sistema operativo è Linux te la cavi senza nessuna libreria esterna: la seriale è solo un file (tipicamente "/dev/ttyS0") speciale. Quello che ci scrivi viene sparato sulla seriale fisica, quello che arriva sulla seriale fisica lo puoi leggere sempre dal file.

La cosa si complica un pelo se devi settare i parametri della seriale (parità, velocità ecc).

ciao!
british è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2012, 15:33   #3
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da british Guarda i messaggi
Se il sistema operativo è Linux te la cavi senza nessuna libreria esterna: la seriale è solo un file (tipicamente "/dev/ttyS0") speciale. Quello che ci scrivi viene sparato sulla seriale fisica, quello che arriva sulla seriale fisica lo puoi leggere sempre dal file.

La cosa si complica un pelo se devi settare i parametri della seriale (parità, velocità ecc).

ciao!
esatto...io devo mandare a questa pinza codici con ACK, STOP, APRI, CHIUDI...insomma devo mandare comandi e ricevere "flag" di risposta...

Il sistema da cui verrà lanciato è Linux con Patch RealTime perchè il robot a cui questa pinza è collegata ha bisogno di istruzioni ogni 2millisecondi...

come posso fare? Per questo mi hanno detto che serve la libreria...
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2012, 16:08   #4
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
esatto...io devo mandare a questa pinza codici con ACK, STOP, APRI, CHIUDI...insomma devo mandare comandi e ricevere "flag" di risposta...

Il sistema da cui verrà lanciato è Linux con Patch RealTime perchè il robot a cui questa pinza è collegata ha bisogno di istruzioni ogni 2millisecondi...

come posso fare? Per questo mi hanno detto che serve la libreria...
Intanto che patch realtime usi ? Xenomai ? RTAI ? Altro ?
A seconda delle patch probabilmente cambia la fase di configurazione (o nel caso migliore, i parametri). Anche per le letture e scritture potrebbe essere cosi' (con qualche eccezione).
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2012, 16:16   #5
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Intanto che patch realtime usi ? Xenomai ? RTAI ? Altro ?
A seconda delle patch probabilmente cambia la fase di configurazione (o nel caso migliore, i parametri). Anche per le letture e scritture potrebbe essere cosi' (con qualche eccezione).
ecco, questa cosa non la so...è il pc del laboratorio di ingegneria...io dovrò lavorare comunque a casa prima....poi andare là e provare...

mamma mia...cominciano a venirmi le crisi!
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2012, 16:44   #6
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
ecco, questa cosa non la so...è il pc del laboratorio di ingegneria...io dovrò lavorare comunque a casa prima....poi andare là e provare...

mamma mia...cominciano a venirmi le crisi!
Ci sara' qualcuno in lab che ha lavorato su quel pc prima di te, penso. Prova a sentire in laboratorio, e' la strada piu' semplice per partire secondo me.
In ogni caso a meno che non abbiate un simulatore o un qualcosa di analogo farai una fatica enorme a lavorare da casa secondo me (a parte forse la fase iniziale).
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2012, 16:49   #7
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ci sara' qualcuno in lab che ha lavorato su quel pc prima di te, penso. Prova a sentire in laboratorio, e' la strada piu' semplice per partire secondo me.
In ogni caso a meno che non abbiate un simulatore o un qualcosa di analogo farai una fatica enorme a lavorare da casa secondo me (a parte forse la fase iniziale).
EDIT: Allora ecco la situazione.

Per il momento io devo solo creare la classe C++ che mi permetta di inviare comandi su una porta seriale e leggere la risposta di ritorno dalla seriale.

Il realtime per il momento non interessa. In laboratorio non mi dicono granchè su come si fa, perchè ovviamente non vogliono visto che devo farlo io....

Allora io vi chiedo a voi delle delucidazioni:

- Mi hanno detto che devo usare una libreria di comunicazione seriale, da includere nella classe. Quale uso (ovviamente su sistema linux ubunthu)? Quale mi consigliate?

- Devo creare una classe che abbia due funzioni, una di comunicazione con la pinza e l'altra che gestisca gli errori. Però devo creare dei metodi più semplici (nei vari casi di parametri da inviare) che vengono poi richiamati dalla funzione di comunicazioni...praticamente quello che devo mandare alla pinza sono istruzioni in un buffer che deve essere così composto:

D-Len [0x05]
Cmd [0xB0]
Param [0x00 0x00 0x20 0x41]

(questo è un esempio di parametro)

Allora, D-Len sta per Data Lenght è può trasferire massimo 255 bytes
Cmd è il tipo di comando
Param sono i parametri da dare.

Che tipo di dato devo usare per fare un buffer di questo tipo? Come si fa un buffer?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.

Ultima modifica di DomusP45 : 14-02-2012 alle 11:23.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 11:23   #8
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
EDIT: Allora ecco la situazione.

Per il momento io devo solo creare la classe C++ che mi permetta di inviare comandi su una porta seriale e leggere la risposta di ritorno dalla seriale.

Il realtime per il momento non interessa. In laboratorio non mi dicono granchè su come si fa, perchè ovviamente non vogliono visto che devo farlo io....

Allora io vi chiedo a voi delle delucidazioni:

- Mi hanno detto che devo usare una libreria di comunicazione seriale, da includere nella classe. Quale uso (ovviamente su sistema linux ubunthu)? Quale mi consigliate?

- Devo creare una classe che abbia due funzioni, una di comunicazione con la pinza e l'altra che gestisca gli errori. Però devo creare dei metodi più semplici (nei vari casi di parametri da inviare) che vengono poi richiamati dalla funzione di comunicazioni...praticamente quello che devo mandare alla pinza sono istruzioni in un buffer che deve essere così composto:

D-Len [0x05]
Cmd [0xB0]
Param [0x00 0x00 0x20 0x41]

(questo è un esempio di parametro)

Allora, D-Len sta per Data Lenght è può trasferire massimo 255 bytes
Cmd è il tipo di comando
Param sono i parametri da dare.

Che tipo di dato devo usare per fare un buffer di questo tipo? Come si fa un buffer?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 11:27   #9
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21985
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
EDIT: Allora ecco la situazione.

Per il momento io devo solo creare la classe C++ che mi permetta di inviare comandi su una porta seriale e leggere la risposta di ritorno dalla seriale.

Il realtime per il momento non interessa. In laboratorio non mi dicono granchè su come si fa, perchè ovviamente non vogliono visto che devo farlo io....

Allora io vi chiedo a voi delle delucidazioni:

- Mi hanno detto che devo usare una libreria di comunicazione seriale, da includere nella classe. Quale uso (ovviamente su sistema linux ubunthu)? Quale mi consigliate?

- Devo creare una classe che abbia due funzioni, una di comunicazione con la pinza e l'altra che gestisca gli errori. Però devo creare dei metodi più semplici (nei vari casi di parametri da inviare) che vengono poi richiamati dalla funzione di comunicazioni...praticamente quello che devo mandare alla pinza sono istruzioni in un buffer che deve essere così composto:

D-Len [0x05]
Cmd [0xB0]
Param [0x00 0x00 0x20 0x41]

(questo è un esempio di parametro)

Allora, D-Len sta per Data Lenght è può trasferire massimo 255 bytes
Cmd è il tipo di comando
Param sono i parametri da dare.

Che tipo di dato devo usare per fare un buffer di questo tipo? Come si fa un buffer?
con l'linux usare una seriale è facile, non devi fare altro che trattarla come se fosse un comune file (file periferica /dev/ttysx) da cui leggi e scrivi non ti serve nessuna libreria
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000

Ultima modifica di !fazz : 14-02-2012 alle 11:31.
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 11:32   #10
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da !fazz Guarda i messaggi
con l'linux usare una seriale è facile, non devi fare altro che trattarla come se fosse un comune file (file periferica /dev/ttysx) da cui leggi e scrivi
si, questo l'ho capito...quello che purtroppo non so è quale libreria usare, perchè la classe deve funzionare indipendentemente da dove giri poi...quindi ok che uso linux, però devo farla in modo che funzioni anche senza linux...insomma, dicono che farla che scriva semplicemente su un file non va bene...devo usare la libreria di comunicazione seriale...e sinceramente non so quale usare...ne ho scaricata una "cport" qualcosa...

Se avete qualche altra da consigliarmi...

Per il fatto del buffer invece, come faccio? String? Devo creare un vettore o no?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 11:44   #11
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
si, questo l'ho capito...quello che purtroppo non so è quale libreria usare, perchè la classe deve funzionare indipendentemente da dove giri poi...quindi ok che uso linux, però devo farla in modo che funzioni anche senza linux...insomma, dicono che farla che scriva semplicemente su un file non va bene...devo usare la libreria di comunicazione seriale...e sinceramente non so quale usare...ne ho scaricata una "cport" qualcosa...
Questo fa abbastanza a pugni con quanto dicevi prima:
Quote:
Il sistema da cui verrà lanciato è Linux con Patch RealTime perchè il robot a cui questa pinza è collegata ha bisogno di istruzioni ogni 2millisecondi...
Hai quindi interesse a farlo che sia cross-platform ? Deve girare su sistemi unix generici ? Deve girare anche sotto windows ?
In quest'ultimo caso la soluzione migliore e' scriverti una serie di classi differenti, ad esempio una che wrappi le chiamate per la seriale sotto linux, a cui poi aggiungerai con calma una (con medesima interfaccia) che wrappa le chiamate per linux realtime (le chiamate sono fondamentalmente le stesse, ma cambia potenzialmente l'inizializzazione) e una per quelle windows. In questo caso scrivere sulla seriale vuol dire usare le chiamate della libreria standard per aprire il device (come un file) e per scriverci i dati (come su un file). Niente librerie esterne.
In alternativa puoi usare una libreria come boost-asio, pero' non so quanto facile sia poi usarla per l'ambiente real-time.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 11:57   #12
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da marco.r Guarda i messaggi
In alternativa puoi usare una libreria come boost-asio, pero' non so quanto facile sia poi usarla per l'ambiente real-time.
Allora, il problema è questo. Scusatemi per la confusione del realtime, ma hanno sbagliato loro a dirmelo inizialmente.

Il sistema su cui girerà questa benedetta classe sarà il computer linux collegato al robot che avrà questa pinza connessa.

La pinza va gestita con pc con linux via porta seriale e non realtime a quanto ho capito, mentre il robot viene gestito con un altro pc per fatti suoi (che è ovviamente realtime).

Devo scrivere una classe usando come ide NetBeans, che abbia i metodi per le varie funzioni della pinza, e due macro funzioni: una per la gestione della comunicazione e l'altra per gestione degli errori di ritorno dalla pinza.

Il docente ha chiesto esplicitamente che sia fatta usando una libreria di comunicazione seriale, NON MI CHIEDETE PERCHE'....fatto sta che devo farla così.
Ha detto che sulla rete ci stanno caterbe di librerie (ed è vero) e che io ho libertà su quale usare. Fatto sta che sono cose che non ho mai fatto prima...nel senso che pure in quanto a classi, negli esami di programmazione abbiamo fatto cose semplici (CLASS PERSONA--SOTTOCLASSE STUDENTE, LAVORATORE) che ovviamente fanno ridere a confronto con questa.

Sono anni che non mi dedico alla programmazione perchè ho avuto tutti gli altri esami da fare, e quindi ora mi trovo spaesato. Ho capito cosa vuole...ma non so come farlo. NOn l'ho mai fatto.

Insomma, so che sotto linux la porta seriale è vista come un file e ci si può scrivere direttamente...ma il docente vuole che utilizzi una libreria per comunicare sulla seriale e usi le funzioni della libreria per comunicare.

Quindi, visto che non l'ho mai usate, qualcuno sa dirmi qualcosa in merito? Conosce qualche libreria da consigliarmi?
Come posso poi strutturare un buffer per le istruzioni da inviare, che siano in quel formato che vi ho scritto?

Scusatemi per la confusione, ma sono nella fase iniziale di "roadmap" per capire insomma cosa devo fare e come...
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2012, 10:28   #13
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
faccio un up anche per chiedere che simulatore usare per leggere un output della porta seriale dal programma che farò...

dicono che esistono simulatori di porte seriali....se me sapete consigliare uno ne sarei molto felice!
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2012, 18:59   #14
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21985
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
faccio un up anche per chiedere che simulatore usare per leggere un output della porta seriale dal programma che farò...

dicono che esistono simulatori di porte seriali....se me sapete consigliare uno ne sarei molto felice!
io uso free serial port monitor
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2012, 19:25   #15
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da !fazz Guarda i messaggi
io uso free serial port monitor
puoi postarmi un link da dove si scarica? è per linux, vero?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
Funzionalità top a un prezzo acce...
Lo strumento per gli aggiornamenti autom...
Imperdibile sconto sul roborock Saros Z7...
Google Pixel 10, altri 100€ di sconto su...
Chip sotto i 2 nanometri, l'Europa alza ...
La smart meno smart di tutte: #6 in azio...
Red Hat Enterprise Linux sbarca su AWS E...
Addio alle migliaia di cicli e anni di t...
Colpo di STMicroelectronics, un'intesa d...
La Ferrari elettrica si chiama Luce: ecc...
Proseguono le riparazioni in vista del l...
Cinema domestico low cost: proiettore Fu...
Sharp porta a ISE 2026 i nuovi display i...
Casa più sicura senza lavori: Arl...
Batterie esauste, l'Italia raccoglie sol...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:32.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v