Andry_78 Inserito: 21 maggio 2009 Segnala Share Inserito: 21 maggio 2009 Ciao a tutti,premetto che non sono un programmatore.....Sto cercando di utilizzare una DLL nel mio SCADA che supporta VBA, per interfacciarmi con una telecamera.Alcune di queste funzioni le utilizzo tranquillamente (es: Connect, SendCommand...ecc.), mentre ce n'è una in particolare che mi da problemi (ReadCommand).Questa funzione utilizza 4 parametri, tra cui uno di questi è uno "C String Pointer" (puntatore ad una stringa) che io non riesco a trattare in VBA. Quando testo questa funzione, se passo questo valore come Valore mi si inchioda tutto, se lo passo come riferimento leggo un valore che però non so come gestire in quanto dovrebbe essere un puntatore.Vi posto il codice: In pratica la Funzine in questione è la "TSLAN_ReadCommand" e la variabile dove mi aspetto il valore dalla telecamera è "ipRec".Declare Function TSLAN_Connect Lib "TSLAN" (ByVal iCH As Integer,ByVal IpIP As String,ByVal usPort As Integer) As IntegerDeclare Function TSLAN_ReadCommand Lib "TSLAN" (ByVal iCH As Integer,ByVal IpSend As String,ByRef IpRecv As Byte,ByRef IpdwRdLen As Long) As IntegerDeclare Function TSLAN_Release Lib "TSLAN" (ByVal iCH As Integer) As IntegerSub main Dim ch As Integer Dim ip As String Dim port As Long Dim retVal1 As Integer Dim retVal2 As Integer Dim retVal3 As Integer Dim ipS As String Dim ipLen As Long Dim ipRec As Byte ch = 0 ip="192.168.0.199" port = 257 ipS= "RSTS1" retVal1 = TSLAN_Connect(ch,ip,port) retVal2 = TSLAN_ReadCommand(ch,ipS,ipRec,ipLen) retVal3 = TSLAN_Release(ch) End SubGrazie a tutti in anticipo.CiaoAndrea. Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 21 maggio 2009 Segnala Share Inserita: 21 maggio 2009 In C le stringhe sono trattate come array di caratteri (e di conseguenza si utilizza un puntatore all'array stesso), quindi, nelle dichiarazioni in VB in genere occorre passare un dato stringa (ovviamente come riferimento, poichè è la funzione stessa che lo valorizzerà).Però da quanto hai postato IpRecv è richiesto come byte, quindi non capisco....Ma cosa ti deve rispondere la telecamera?Ciao Link al commento Condividi su altri siti More sharing options...
Andry_78 Inserita: 22 maggio 2009 Autore Segnala Share Inserita: 22 maggio 2009 Grazie per la risposta!Quindi dovrei passargli una variabile di tipo stringa utilizzando il ByRef? Io l'ho impostata come byte perchè ho visto un'esempio di un applicatico scritto in c++ che utilizzava la stessa DLL, e veniva utilizzata una variabile di tipo CHAR:"char text[256]"Quindi io pensavo che il corrispettivo di CHAR in Visual Basic fosse il tipo BYTE.La telecamera mi deve restituire una stringa contenente l'informazione che io gli ho richiesto in base al comando che gli ho inviato:- per esempio lo stato della telecamera (0=STOP, 1=RUN) ecc....Provo a passargli una Stringa come riferimento e ti faccio sapere.Grazie ancora.Ciao. Link al commento Condividi su altri siti More sharing options...
Andry_78 Inserita: 29 maggio 2009 Autore Segnala Share Inserita: 29 maggio 2009 Ciao,ho provato a passargli la stringa come riferimento ma mi va in "crash tutto".L'unico modo per non farlo andare in crash è dichiararlo come byte, però poi quando eseguo lo script, mi ritrovo un numero che non mi dice nulla.Hai qualche altro suggerimento?Grazie.Andrea. Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 29 maggio 2009 Segnala Share Inserita: 29 maggio 2009 Ma il declare della funzione TSLAN_ReadCommand è quello fornito dalla telecamera?Che telecamera è e che software ti hanno fornito a corredo?Ciao Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora