Pagina 1 di 5

Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:15
da TardoFreak
Un saluto a tutti i partecipanti,
Scrivo perche' mi trovo di fronte ad un problema che non riesco a risolvere: vorrei realizzare un programma di emulazione di terminale che usi le linee seriali.
Ho provato con VB6 ma non funziona bene. Tra l' altro VB6 mi dice che il file comctl.ocx versione 1.1. del programma di esempio non c'e' e viene utilizzata una versione successiva. Il risultato e' che se lavoro collegato ad un circuito (tipo la switch control unit) che mi da l' echo dei caratteri, questo viene visualizzato solo dopo la pressione (o la ricezione penso) di un carattere di <CR><LF>. Ho letto in giro che microsoft ha gia' dato 5 versioni differenti di comctl.ocx e che non sono compatibili fra di loro. ||O
Stessa cosa se cerco di realizzare un emulatore di terminale con VB2005.
La switch control unit funziona benissimo con HyperTerminal.
Con HyperTerminal funziona anche bene l' adattatore RS232/USB da me realizzato partendo dai sorgenti di microchip.
Ho provato ad utilizzare il pacchetto Javaxcomm in Java ma non mi funziona. RxTx non sono riuscito ad utilizzarla.
Insomma, con le comunicazioni serial su PC non riesco a fare niente. :( Usare VB6, VB2005 o Java per me e' indifferente (sono una schiappa con tutti e tre i linguaggi :mrgreen: ) e non saprei dove rintracciare uno straccio di programma di emulazione terminale da poter poi modificare per i miei scopi.
Qualcuno ha un link ad un sorgente da poter scaricare, provare e modificare?

Ringrazio anticipatamente

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:19
da angus
Scusami, non ho capito, lo vuoi proprio fare tu o se fosse già fatto sarebbe oro? ;-)

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:26
da TardoFreak
Mi spiego meglio.
La switch control uniti riceve dei comandi attraverso la seriale e risponde adeguatamente. Ora, se voglio realizzare un programma che gira su PC e che mi utilizzi la SCU come periferica di I/O devo scriverlo in qualche modo ed utilizzare la porta seriale. Il programma poi fara' quello che fara' ma lo deve fare bene.
Preferirei, per mie ragioni di comprensione ed utilita', avere il sorgente di un programma di emulazione di terminale (come HyperTerminal per intenderci) per poterci aggiungere dei pulsanti che diano, ad esempio, un comando ed elaborino la risposta.
Una volta fatto funzionare il programma con le aggiunte, toglierei tutto quello che non m' interessa e proseguirei con la stesura del programma applicativo.

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:36
da angus
Scusami, ma sono duro a capire, probabilmente perché non so nemmeno cos'è una "switch control unit" :^o
ma se ti basta un emulatore di terminale che lavori con le seriali sotto windows... ti andrebbe bene una cosa tipo "putty" o "mintty"?
Se invece devi "elaborarlo" per fargli fare altre cose, allora il discorso cambia...

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:48
da TardoFreak
Switch Control Unit
Devo eleborarlo per fare altre cose.
Ad esempio se devo leggere un ingresso della porta D5 del PIC dovrei mandare, tramite la seriale, il comando "RDC5<CR>" (significa Read port C bit 5) e lui mi da' l' echo "RDC5<CR><LF>" seguito dalla risposta "1<CR><LF>" se l' ingresso e' a 1. Quindi dovrei crearmi una funzione/classe/chesso' che quando la chiamo lei mi manda il comando, verifica l' echo, legge la risposta e mi ritorna un risultato che puo' valere 1 o 0 (lasciando perdere la gestione degli errori per adesso) che corrisponde allo stato logico della linea del PIC.
Oppure se devo attivare una linea sul PIC dovro' mandare, ad esempio, un comando "W1C4<CR>" (significa Write 1 to port C bit 4) verificare l' eco del comando "W1C4<CR><LF>" seguito da "OK<CR><LF>" che e' la risposta al comando. Anche in questo caso dovrei scrivere una funzione/classe che chiamo e che mi tratti opportunamente l' invio della stringa e l' attesa della risposta.

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:57
da carloc
..guarda forse potrebbe essere solo delle impostazioni del controllo comm....

anni fa ho realizzato qualcosa del genere con VBx e andava ok... il fatto è che la DLL che gestisce la seriale invia gli eventi al tuo programma solo se... ad esempio "sono stati ricevuti un tot di caratteri" oppure "solo quando ricevo CR/LF" etc etc....

secondo me se ti studi le proprietà del controllo...qualcosa tipo "threshold"... risolvi alla grande :ok:

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 19:59
da angus
Ok, ora ho le idee più chiare, grazie!
io se vuoi, più tardi, posso buttarti giù qualcosa, ma non in Java che non conosco abbastanza per poter fare una cosa del genere... ma da quel che leggo dovresti poterlo fare con le javax.comm che hai detto di non aver usato, perché?

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 26 gen 2011, 20:04
da TardoFreak
Ho provato ad utilizzarlo ma mi da dei problemi, degli errori che ora non ricordo.
Ora provo a ri-scaricarlo, installarlo e farlo girare.

Edit: ri-scaricato. Ho selezionato la piattaforma "generic" perche' non c'e' windows ci sono solo "generic", "linux", "solaris 8 & 9 -sparc" e "solarix x86".

E dentro non c'e' neanche javax.comm. ||O
Ci sono solo 3 files:
- COMM1.1_Beta_License.txt
- comm.jar
- README.txt

:( :( :(

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 27 gen 2011, 1:31
da DirtyDeeds
Ecco questa domanda mi fu anche posta anni fa da un amico, e la mia risposta fu: ma come? non basta aprire un file verso la COM? Quando mi capitò (ormai sono anni che non programmo più per cui magari le cose sono cambiate) in C di dover fare comunicare un PIC con un PC, mi limitai a usare la funzione _open per aprire un file verso la porta scelta. Cosa cambia in VB?

Re: Gestione linee seriali: come e con quale linguaggio?

MessaggioInviato: 27 gen 2011, 2:03
da TardoFreak
Anche io, con il Turbo Pascal e con il Turbo C usavo la porta come un file.
VB dice che bisogna usare un controllo ActiveX chiamato MSComm.
Pero' non fa quel che dice il manuale.
I programmi dimostrativi non funzionano o non fanno quello che dovrebbero.
Il software per VB2005 fornito dalla microchip non funziona, o meglio, funziona male.

Inoltre, usando l' adattatore USB/RS232 il driver e' di windows. Si chiama usbser.sys.
A quanto pare non si riesce a trovare una DLL che gestisca la comunicazione con classe CDC.
In mezzo a tutto questo c'e' il programma HyperTerminal che funziona in modo PERFETTO. ||O

Vorrei scrivere un programma che mi permetta di utilizzare davvero la Switch Contro Unit che ho realizzato ma, a quanto pare, e' un' impresa. :(
Non so piu' cosa fare. :(

Please, help me! [-o<