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
.NET Framework
Dclare Function
giovedì 03 agosto 2006 - 17.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
gio 3 ago 2006 - 17:11
Devo utilizzare una libreria di terzi (Pippo.DLL) con le sue funzioni ( es. vbUno e vbDue ).
Secondo le istruzioni ho attivato i seguenti comandi:
Declare Function VbUno Lib "Pippo.dll" (ByVal textcmd As String, ByVal lpdwSysError As Integer) As Integer
Declare Function VbDue Lib "Pippo.dll" (ByVal textcmd As String, ByVal lpdwSysError As Integer) As Integer
ma utilizzando le funzioni da il seguente errore:
"Riferimento a un oggetto non impostato su un'istanza di oggetto."
In vb6 funziona, ma non so come attivare il riferimento all'oggetto in VB.NET.
Qualcuno sa come fare?
Ciao a tutti e grazie.
Paolo.
19018
Profilo
| Expert
502
messaggi | Data Invio:
gio 3 ago 2006 - 17:14
Hai aggiunto un riferimento a quella libreria tramite il menu Progetto->Aggiungi Riferimento ?
Stefano Passatordi
http://blogs.dotnethell.it/stem/
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
gio 3 ago 2006 - 17:38
Il riferimento non permette di inserirlo: Impossibile ...
Comunque una delle funzioni legate alla libreria funziona, ma non riesco a capire perchè se attivo le altre quando le richiamo da l'errore: "Riferimento a un oggetto non impostato su un'istanza di oggetto."
19018
Profilo
| Expert
502
messaggi | Data Invio:
gio 3 ago 2006 - 17:43
Posta tutto il codice qui e vediamo.
Stefano Passatordi
http://blogs.dotnethell.it/stem/
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
ven 4 ago 2006 - 10:24
Per ragioni di riservatezza in quanto non sono proprietario della libreria in oggetto chiamerò Pippo.DLL l'oggetto in questione.
In linea di massima il programma è scritto come segue.
La funzione vbOpen e vbClose funzionano.
La funzione vbWrite ritorna il seguente errore "Riferimento a un oggetto non impostato su un'istanza di oggetto."
All'inizio anche le altre funzioni mi davano il suddetto errore.
Ho inviato il programma di prova al proprietario della libreria con le funzioni vbOpen e vbClose.
Dopo un po' mi ha ritornato il programma con sorgente funzionanate con la sola differenza che al posto delle dichiarazioni Long sulle variabili era stato posto l'integer.
Ho provato ad attivare la funzione vbWrite con le suddette considerazioni ma da il vecchio errore.
Ho provato a riportare su nuovo progetto il sorgente speditomi e l'errore mi si ripete su tutte le funzioni.
A questo punto ho pensato che dopo il DECLARE sia necessario attivare qualcos'altro per fare in modo che l'oggetto della funzione sia riconosciuto, ma non so cosa.
Option Strict Off
Option Explicit On
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Codice generato da Progettazione Windows Form "
Public Sub New()
MyBase.New()
'Chiamata richiesta da Progettazione Windows Form.
InitializeComponent()
'Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent()
End Sub
'Form esegue l'override del metodo Dispose per pulire l'elenco dei componenti.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Richiesto da Progettazione Windows Form
Private components As System.ComponentModel.IContainer
'NOTA: la procedura che segue è richiesta da Progettazione Windows Form.
'Può essere modificata in Progettazione Windows Form.
'Non modificarla nell'editor del codice.
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(64, 32)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(120, 48)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
' Declare Function for Open Communication Port
Declare Function VbOpen Lib "Pippo.dll" (ByVal intCom As Integer, ByVal dwBaudRate As Integer, ByVal byParity As Byte, ByVal byDataBit As Byte, ByVal byStopBit As Byte, ByVal byFlowControl As Byte, ByVal lpdwSysError As Integer) As Integer
' Declare Function for Write Command on Communication Port
Declare Function VbWrite Lib "Pippo.dll" (ByVal textcmd As String, ByVal lpdwSysError As Integer) As Integer
' Declare Function for Read from Communication Port
Declare Function VbClose Lib "Pippo.dll" (ByVal lpdwSysError As Integer) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim vRet As Integer = 0
Dim vRetErr As Integer = 0
Dim bRate As Integer = 19200
Dim bPort As Integer = 1 'Com Port
Dim bData As Byte = 7
Dim bParity As Byte = 1
Dim bStop As Byte = 0
Dim bFlow As Byte = 1
Dim s As String = ""
Try
vRet = VbOpen(bPort, bRate, bParity, bData, bStop, bFlow, vRetErr)
If (vRet <> 0) Then
MsgBox("Error on Init Communication", (vbOKOnly + vbCritical), "Communication Error")
Exit Sub
End If
vRet = VbClose(vRetErr)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
19018
Profilo
| Expert
502
messaggi | Data Invio:
ven 4 ago 2006 - 11:38
Quando inserisci il codice ricorda di inserirlo tra gli appositi tag così è più leggibile. Comunque...ti da errore nella dichiarazione della funzione non quando cerchi di usarla?Nel codice trovo solo la sua dichiarazione.
Stefano Passatordi
http://blogs.dotnethell.it/stem/
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
ven 4 ago 2006 - 12:06
Mi da errore quando tra vbOpen e vbClose effettuo il seguente comando, perciò quando richiamo la funzione.
vRet = VbWrite(s, vRetErr)
tipo
Try
' Open Communication on Com Port
vRet = VbCEFOpen(bPort, bRate, bParity, bData, bStop, bFlow, vRetErr)
If (vRet <> 0) Then
MsgBox("Error on Init Communication", (vbOKOnly + vbCritical), "Communication Error")
Exit Sub
End If
If False Then
s = "30161"
Else
s = "30160"
End If
vRet = VbWrite(s, vRetErr) 'ERRORE ????????????????????????
' Close Communication on Com Port
vRet = VbClose(vRetErr)
Catch ex As Exception
MsgBox(ex.Message)
End Try
19018
Profilo
| Expert
502
messaggi | Data Invio:
ven 4 ago 2006 - 12:31
Non so che dirti, apparentemente è tutto ok. Devi chiedere al proprietario della libreria come utilizzare quella funzione, a guardare così il codice sembra tutto ok. L'unico probelma può derivare dagli argomenti ma sono tutti e due inizializzati.Prova a passare come argomenti non variabili ma direttamente due valori ("prova",1) e vedi se ti da lo stesso errore.Molto probabilmente si e ciò significa che dipende dalla funzione e non da altri elementi nel codice.
Stefano Passatordi
http://blogs.dotnethell.it/stem/
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 !