Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
Lettura porta seriale da applicazioni Access
martedì 26 agosto 2003 - 12.33
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
johnduke
Profilo
| Newbie
11
messaggi | Data Invio:
mar 26 ago 2003 - 12:33
Vorrei leggere i dati della RS 232 (la stringa che invia una bilancia digitale) in una applicazione di Access utilizzando VBA e quindi senza MSComm.
E' possibile?
Grazie e saluti
Joseph
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 26 ago 2003 - 16:08
Ciao John,
perchè? Non ti piace MSComm? Si può usare anche da Access anche se non è visuale ma le funzionalità ci sono comunque. E' sufficiente che da VBA vai sul menù Strumenti mi pare poi scegli Riferimenti.
Scegli "Sfoglia" e cerca il file MSCOMM32.OCX.
Una volta aggiunto nel progetto avrai a disposizione tutte le classi presenti nella libreria (OCX o DLL) che sia.
Se premi F2 vedi l'object browser, puoi selezionare la libreria e vedere classi e metodi.
Oppure puoi usare delle API per interfacciarti alle chiamate WIN32 native che sono comunque le stesse che richiama mscomm32.ocx, quindi faresti del lavoro per nulla, o comunque dovresti usare altre librerie di terze parti.
Fammi sapere.
ciao
David De Giacomi
johnduke
Profilo
| Newbie
11
messaggi | Data Invio:
mar 26 ago 2003 - 16:36
Grazie per il consiglio, mi era sfuggito il tasto sfoglia.
Comunque, ti sembrerà strano, ma sul mio PC non è presente nessun file che inizia con MSCOMM.
Forse ho dimenticato di specificare che non ho installato VisualBasic, ma solo Office XP, per cui mi limito alle librerie di Visual Basic For Application, che forse non contiene il contollo ActiveX che mi hai indicato.
Ho provato a copiare solo il file MSCOMM32.ocx da un computer con VB5 ma ricevo un messaggio del tipo "...failed to register ActiveX control.." o qualcosa del genere.
Se non c'è alternativa a MSCOMM (che peraltro ho provato sulla macchina di cui sopra su cui era installato VB 5 con risultati ottimi) penso dovrò proprio rivolgermi alle API.
Il problema è che non so da che parte cominciare.
Dove si possono cercare librerie di terze parti?
Sei stato molto gentile a rispondere
Grazie e Saluti
Joseph
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 27 ago 2003 - 14:42
Una volta copiato il mscomm32.ocx dovresti registrarlo con il programma regsvr32.exe
Prova a copiare il file .ocx nella cartella System32 di Windows (spero tu abbia XP o 2000).
Poi da Start->Esegui digita:
regsvr32 mscomm32.ocx
in teoria se va tutto bene dovrebbe uscire un messaggio di conferma che la registrazione è stata effettuata con successo. Da quel momento in potrai aggiungerlo come detto prima al progetto di Access. Prova!
Le API te lo dico per esperienza all'interno di VB sono un vero disastro non è possibile fare tutto, e i problemi sono più che altro di passaggio , ritorno e conversione dei dati. In C/C++ nonostante il linguaggio sia più complesso del VB però è più semplice usarle perchè sono anch'esse scritte in C.
Librerie di terze parti, costano qualche soldo ma ne puoi trovare. Cmq alla fine anche questo ti forniranno semplicemente un OCX o una DLL che dovrai referenziare dentro Access, quindi prima tanto vale provare quella di Microsoft come ti ho detto sopra.
Ciao
Fammi sapere.
David
johnduke
Profilo
| Newbie
11
messaggi | Data Invio:
mer 27 ago 2003 - 17:25
Ho eseguito tutto quanto indicato con successo.
A questo punto ho provato a scrivere il codice
Sub LeggiPeso()
Dim MsComm1 As MSCommLib.MSComm
Dim Peso As Variant
MsComm1.CommPort = 1
MsComm1.PortOpen = True
Peso = MsComm1.Input
MsComm1.PortOpen = False
End Sub
Ottengo un errore quanto eseguo MsComm1.CommPort = 1 che recita "Variabile oggetto non impostata"
Devo scrivere Set Variabile=...?
Puoi aiutarmi ancora? Non sono molto pratico di librerie esterne, oggetti, proprietà, enum...
Grazie infinite per la tua pazienza.
Ciao
Joseph
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 29 ago 2003 - 09:34
Eh sì Joseph,
è proprio così. Essendo un componente diciamo COM, devi creare una referenza all'oggetto appena creato e di solito si fa con l'operatore new.
Quindi tu giustamente con la Dim hai dichiarato la tua variabile, ma poi devi instanziare l'oggetto in questo modo:
Set MsComm1 = New MSCommLib.MSComm
Vedrai che ora funziona.
Fammi sapere.
Ciao
David
johnduke
Profilo
| Newbie
11
messaggi | Data Invio:
ven 29 ago 2003 - 09:44
Per funzionare, funziona, solo che il codice questa volta si blocca perchè non riesce a trovare la licenza dell'oggetto di automazione.
Insomma, pare proprio che io debba acquistare Visual Studio.
Grazie comunque per tutti i suggerimenti ed il supporto molto professionale.
Ciao
Joseph
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 29 ago 2003 - 09:48
Mh... mi spiace.
Mi è venuta in mente un'altra cosa. Sai cosa puoi fare?
Secondo me puoi fare così. Crea un progetto sul computer dove hai installato Visual Basic 6.0, all'interno di questo progetto referenzia l'oggetto .ocx di cui parlavamo.
Poi fra i Tools di Visual Basic 6.0 ce n'è uno per creare il Setup dell'applicazione che tu hai appena sviluppato. Di solito lui si prende tutte le DLL e gli OCX che usi e li inpacchetta. Poi quando distribuisci o installi il pacchetto su un'altra macchina, lui decomprime tutti i componenti li copia sul PC e li registra, e così non dovresti più avere problemi di licenza o quei messaggi d'errore che dicevi poco fa.
La registrazione che ti ho fatto fare io diciamo è stata "alla buona" di solito si fa così, però magari qui c'era qualche meccanismo aggiuntivo di Microsoft.
Con questa soluzione dovresti avere successo.
Ciao
David
johnduke
Profilo
| Newbie
11
messaggi | Data Invio:
ven 29 ago 2003 - 10:50
Fatto!
Ho scaricato una liberia freeware, e grazie alle indicazioni che mi hai dato su come scrivere il codice sono riuscito a leggere questa benedetta porta RS 232.
Grazie ancora
Ciao
Joseph
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !