none
ayuda para saber como usar una funcion en VB. NET RRS feed

  • Pregunta

  • Estimados Amigos...

    quiero solicitar su ayuda para saber como debo usar una funcion de una libreria Syslib.dll

    en un pequeño programa VB.net.

    No tengo mucha experiencia o nula en este tema. Ahora bien les explico que tengo una hoja que me dice que debo

    usar la siguiente instruccion para obtener un dato, pero no se como deberia hacerlo en un programa de VB.net,

    ojala pudieran ayudarme con un pequeño codigo de como hacerlo.  

    ------

    This function retrieves device ID written in the EEPROM.:      SysGetDeviceIDCode


    CALLING SEQUENCES: Public Shared Function SysGetDeviceIDCode( ByVal pdwDevID As Char() ) As Int32

    Parameters  :    pdwDevID

    This parameter is for retrieving UUID that expresses the device ID. See notes below.

    Return Values
    TRUE : Normal end
    FUNCTION_UNSUPPORT : Unsupported error

    Notes:
    - The UUID returns a character string that consists of characters up to 32. For this reason, be
      sure to allocate an area in the memory for more than 33 characters.
    - Before calling this function, be sure to clear the area with zero.


    ------

    Tal vez parezca algo sencillo, pero no logro entender y mi ingles no es nada bueno.

    Alguien puede ayudarme por favor.

    De antemano muchas gracias.

    Jose Luis

    viernes, 19 de enero de 2018 0:40

Respuestas

  • El argumento de la función es un búfer con espacio suficiente para que la función escriba en él, el uuid del dispositivo. 

    Probalo de este modo. Si no va, cambiamos el arreglo de Char por un StringBuilder con capacidad suficiente.

    Imports System.Runtime.InteropServices
    
    '-----
    <DllImport("syslib.dll")>
    Public Shared Function SysGetDeviceIDCode(<MarshalAs(UnmanagedType.LPArray, SizeConst:=40)> ByVal pdwDevID As Char()) As Int32
    End Function
    
    '-----
    Dim devId(40) As Char
    
    If SysGetDeviceIDCode(devId) <> 0 Then
    	MessageBox.Show(New String(devId))
    End If

    Imports System.Runtime.InteropServices
    Imports System.Text
    
    '-----
    <DllImport("syslib.dll")>
    Public Shared Function SysGetDeviceIDCode(pdwDevID As StringBuilder) As Int32
    End Function
    
    '-----
    Dim devId As New StringBuilder(40)
    
    If SysGetDeviceIDCode(devId) <> 0 Then
    	MessageBox.Show(devId.ToString())
    End If
    
    


    • Editado otro nico viernes, 19 de enero de 2018 2:26
    • Propuesto como respuesta Pablo Rubio viernes, 19 de enero de 2018 18:09
    • Marcado como respuesta Pablo Rubio viernes, 19 de enero de 2018 18:57
    viernes, 19 de enero de 2018 2:19

Todas las respuestas

  • El argumento de la función es un búfer con espacio suficiente para que la función escriba en él, el uuid del dispositivo. 

    Probalo de este modo. Si no va, cambiamos el arreglo de Char por un StringBuilder con capacidad suficiente.

    Imports System.Runtime.InteropServices
    
    '-----
    <DllImport("syslib.dll")>
    Public Shared Function SysGetDeviceIDCode(<MarshalAs(UnmanagedType.LPArray, SizeConst:=40)> ByVal pdwDevID As Char()) As Int32
    End Function
    
    '-----
    Dim devId(40) As Char
    
    If SysGetDeviceIDCode(devId) <> 0 Then
    	MessageBox.Show(New String(devId))
    End If

    Imports System.Runtime.InteropServices
    Imports System.Text
    
    '-----
    <DllImport("syslib.dll")>
    Public Shared Function SysGetDeviceIDCode(pdwDevID As StringBuilder) As Int32
    End Function
    
    '-----
    Dim devId As New StringBuilder(40)
    
    If SysGetDeviceIDCode(devId) <> 0 Then
    	MessageBox.Show(devId.ToString())
    End If
    
    


    • Editado otro nico viernes, 19 de enero de 2018 2:26
    • Propuesto como respuesta Pablo Rubio viernes, 19 de enero de 2018 18:09
    • Marcado como respuesta Pablo Rubio viernes, 19 de enero de 2018 18:57
    viernes, 19 de enero de 2018 2:19
  • Amigo Otro Nico...

    revisare lo que me propones y te avisare si me funciono.

    Muchas Gracias.


    Jose Luis Hernandez

    viernes, 19 de enero de 2018 21:27
  • Muchas Gracias Amigo Otro Nico...!!

    Basandome en tus sugerencias, llegue a la siguiente solucion y me funciona perfectamente...!!

    Imports Calib .SystemLibNet .Api 

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim devId(33) As Char
            Dim Barre As Integer = 0
            Dim Serie As String = ""

            If SysGetDeviceIDCode(devId) <> 0 Then

                For Barre = 0 To 33
                    Serie = Serie + devId(Barre)
                Next

                MessageBox.Show(Serie)

            End If
        End Sub

    End Class


    Jose Luis Hernandez

    viernes, 19 de enero de 2018 23:53