Newsgroup: it.comp.lang.visual-basic
Titolo: Come conoscere le funzioni e/o proprietà di una libreria esterna?

Salve a tutti, mi sono barcamenato in un lavoro che al momento è più grande 
delle mie conoscenze ma essendo un "gioco" stimolante ci tento malgrado 
tutto.
Siccome col programma che ho in mente dovrei gestire un controller DMX (fari 
teatrali per intenderci) USB per mezzo di alcune librerie messe a 
disposizione dalla casa madre del prodotto (controller).
Ora la grande difficoltà risiede nel conoscere quali le funzioni, proprietà, 
metodi disponibili dalle librerie dinamiche.
Per le API c'è l'utility "Visualizzatore API", ma per quelle esterne come 
fare?
Grazie
Saluti
Gippe 

"Gippe" <gippe69...@ANCHEQUESTOtiscali.it> ha scritto nel messaggio 
news:463dff4c$0$10629

1) Parli di .net o vb6?
2) Per librerie dinamiche intendi dll standard, dll ActiveX o dll .Net?
Ciao 

 Ciao
Grazie
Ciao 

 Una si chiama DMX510Vb.dll
per la prima qui credo ci siano esempi di utilizzo:
http://www.monacor.com/it/updates.html
M.

 C'è un modo per "scoprirlo"?
Se è VB6 o sono dll standard o dll activex.
Se le metti tra i riferimenti sono activex.
Per le standard sul CD di vb (o comunque in rete lo trovi facile) c'è il 
DependencyWalker, ma è un'app esterna e ti fornirà ben poche info, non per 
colpa sua ma per come sono strutturate le dll: elenca solo il nome delle 
funzioni presenti.
Per le activex, sempre ben nascosto sul cd di vb6, se non ricordo male, c'è 
una dll activex che ti può fare esplorare altre activex: TlbInfo.dll 
(sperando di ricordarmi bene).
Ma se da tutto questo di aspetti di capire come usare le librerie caschi 
male...
Ciao

 ha scritto nel messaggio 
news:op.trw1x5k6luu4s1@mypc...

Si li ho scaricati e li stavo "analizzando".
Da quest'analisi sono emersi poi i miei interrogativi.
Praticamente come posso dire all'interfaccia USB che quando seleziono un 
collegamento ipertestuale deve attivarmi una scena realizzata in precedenza?
Ho solo due funzioni dichiarate in ambito pubblico ed una delle due non 
funziona nemmeno.
Dim dmxval As Byte
Dim dmxKanal As Integer
Declare Function Get_Interface Lib "DMX510Vb.dll" Alias "GetDMXInterface" () 
As String
Declare Function Max_Channels Lib "DMX510Vb.dll" Alias "GetMaxChannels" () 
As Integer
Declare Function senddmx Lib "DMX510Vb.dll" Alias "SetLevel" (ByVal a As 
Integer, ByVal b As Byte) As Boolean
Poi c'č un oggetto timer che anch'egli non funge al click di un pulsante 
Start
Private Sub Command1_Click()
' Text1.Text = CurDir
 Timer1.Enabled = True
 Text1.Text = Max_Channels
 Text2.Text = Get_Interface
End Sub
Private Sub Timer1_Timer()
Dim u As Boolean
 For n = 0 To 509
  If n < 6 Then dmxval = Abs(VScroll1(n).Value)
  If n >= 6 Then dmxval = 0
  u = senddmx(n, dmxval)
  DoEvents
 Next n
 End Sub
Sarebbe tutto piů semplice se si passassero la mano sulla coscienza e 
realizzassero il software di gestione ;-)
Grazie
Saluti
Gippe 

 male...
Ahi, ahi, ahi!
Allora questi sono dei buontemponi!? Hanno dichiarato se qualcuno volesse 
svilupparsi un'applicazione!
Credo comunque che sarebbe più opportuno analizzare il tutto con il 
compilatore del software (una consolle simile ai mixer che si vedono nelle 
compagnie) che serve a ben poco.
Grazie ancora
Saluti
Gippe 

Gippe ha scritto:

Prima di addentrarti...in cose strane
DMX510VB.dll
Chi le fà ti dice di usare SOLO..........
Declare Function Get_Interface Lib "DMX510Vb.dll" Alias 
"GetDMXInterface" () As String
Declare Function Max_Channels Lib "DMX510Vb.dll" Alias "GetMaxChannels" 
() As Integer
Declare Function senddmx Lib "DMX510Vb.dll" Alias "SetLevel" (ByVal a As 
Integer, ByVal b As Byte) As Boolean
e ti forniscono anche un dll test!
Se il dll test NON va (come dici).....io controllerei
A) TUA installazione
B) TUO utilizzo
C) TUA connessione usb ....apparecchio hw...connessioni... etc etc
...solo POI...invierei una email all'assistenza!
Tutto può essere.....ma che pubblichino qualcosa di errato....prendila 
come ultima ipotesi!
Anche perchè vedo che le dll le rilasciano e quindi sviluppano ancora 
questo sw!!!...è datata 2007 questa dll!
Tutto può essere ma che vendano qualcosa che non funziona....mi sembra 
strano!
Se poi vuoi una mia personale interpretazione (casomai sballatissima)
il cuore di tutto è
senddmx(n, dmxval)
il test non fa altro che abbellire (e forse incasinare) questa cosa!
Quindi
senddmx(10, 255)...accende al massimo la lampada 10
senddmx(7, 0)....la accende a 0....è spenta!
senddmx(5, 128)....è a mezza potenza!
Il test te lo mette in un timer e ciclicamente si scannerizza tutti i 
canali con i valori degli scroll....
Penso che tu ti debba creare delle "scene" memorizzate (in un file...in 
un db...dove vuoi)
E casomai collegarle ad una timeline (per fare tutto 
automatico)...oppure collegate ad un pulsante....avanti...ed uno 
indietro....
Le altre 2 funzioni non so che fanno....una sempra inizializzare il 
tutto (forse)
L'altra...fose ti riporta quanti canali hanno attaccato "qualcosa"
...oppure (meglio) a giudicare dall'alias...quanti canali supporta 
l'aggieggio che hai attaccato!
MPUSBAPI.DLL
sembra un aggiornamento....probabilmente è la dll che fa comunicare via 
USB il vb con il tuo coso!
tutto quanto sopra IMHO
Ciauz!
p.s.
Ganzo sto coso!
Quanto costa???

 Quanto costa???
Non molto, l'ho preso nella speranza di poterlo modificare a livello 
software. Esistono altri accrocchi molto più costosi (roba professionale) ma 
che esula poi dalla portata dei miei attuali progetti.
Su ebay si trova a 149 euri in germania.
Saluti
Gippe 

 ha scritto nel messaggio 
news:463ec654$0$20812$5fc...@news.tiscali.it...
Allora amico alcoolico ;-)
senddmx effettivamente è una funzione di invio all'affarino-scatoletta che 
agisce appunto in base a due valori (ah se fosse inserito anche il fade 
(velocità di inserimento)) dmxval e il canale. Quindi avrò una certa 
intensità dmxval su un determinato canale
MPUSBAPI.DLL (nome corretto)dovrebbe essere il driver del DMX Controller 
quindi non serve nel nostro ragionamento (credo): fuori uno!
Private Sub Timer1_Timer()
Dim u As Boolean
 For n = 0 To 509
  If n < 6 Then dmxval = Abs(VScroll1(n).Value)
  If n >= 6 Then dmxval = 0
  u = senddmx(n, dmxval)
  DoEvents
 Next n
 End Sub
Non comprendo la necessità di mettere un ciclo for fino a 509 se poi me lo 
castri per i canali superiori o uguali a 6.
Una cosa non comprendo: quando si avvia l'evento timer? all'apertura della 
maschera?
Se si è inutile perché ho tutti i cursori (VScroll a zero e quindi 
VScroll1(n).Value=0)
Ora, mi resta da fare solo una prova per determinare Max_Channel alias 
GetMaxChannels: collegare il controller dmx al dimmer perché potrebbe essere 
che il controller "legga" il numero di canali e lo assegni alla funzione 
(stronzata?)
Comunque resta da determinare le altre funzioni utili per formulare comandi 
specifici.
Saluti
Gippe

 castri per i canali superiori o uguali a 6.
eh eh eh
509 SCROLL in una pagina?...e che monitor devi avere??? un plasma da 50 
pollici???...vb si pianterebbe: 509 controlli in una pagina...brrrrrrrr!!!!
Comunque ...io non sono un tecnico delle luci (anche se da ragazzo ero 
proprio io l'addetto nelle recite)
Però da quel poco che ho letto...ANCHE l'aggieggio ti permette di 
salvare come "scena" solo le impostazioni degli scroll...leggi il pdf!
Quindi non c'è da scialare tanto!
La velocità? la velocità non la comandi...nel senso che tu spari fuori 
senddmx(103, 200)....poi è lla velocità del bus USB e l'apparecchiatura 
come è tarata a portare a regime la potenza...in teoria una volta dichiarato
senddmx(n, dmxval)......in pochi millisecondi è a disposizione 
dell'aggieggio DMX
i comandi specifici...probabilmente sono in porte assegnate...io ho il 
sospetto che alcune porte siano assegnate e il valore byte voglia dire 
altro che non l'intesità delle lampade!
ma qui mi fermo...il tecnico sei tu...i manuali gli hai 
tu....l'aggieggio lo hai tu!