Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Driver .dll - da QUICK BASIC a VISUAL BASIC.


Messaggi consigliati

DanieleValsecchi
Inserito:

Possiedo delle schede di input/output da inserire direttamente nel bus di qualsiasi PC.

Le ho sempre utilizzate con quick basic funzionante in DOS attraverso le istruzioni PEEK e POKE.

Ora devo poterle funzionare attraverso VISUAL BASIC, ma le istruzioni (PEEK e POKE) che utilizzavo per accedere direttamente all'area di memoria della mia scheda non esistono più.

Come devo fare? Ho qualche speranza di potere continuare ad utlizzare queste mie schede?

Le schede, analoghe alle mie, che trovo in commercio, vengono fornite con driver .DLL per poterle utilizzare con visual basic. Posso costruirmi io un driver .DLL per gestire le mie schede?

GRAZIE.


Gabriele Corrieri
Inserita:

Ciao

o ti tieni quickbasic, o visual basic per dos, oppure ... nada de nada ... :( costa meno rifare tutto da zero e aquistare schede PCI PNP

Ciao

DanieleValsecchi
Inserita:

Ti ringrazio Gabriele per la tua tempestiva risposta alla mia richiesta.

Ma, le schede I/O che si possono acquistare hanno la stessa identica architettura delle mie .... hanno solo in più i driver per poterle gestire con Visual Basic per Windows.

Qualcuno avrà scritto il codice per i driver!

Perchè non posso dover costruire driver su misura per le mie schede?

Cosa sono le schede PCI PNP ?

Ti prego di aver ancora un po' di pazienza e di rispondermi, la mia rabbia :angry: deriva dal fatto che ho lavorato in passato con microprocessori e con software di supervisione scritti con Assembler, quindi la mia impotenza nel gestire le mie schede mi rende .... incazzato!

In MS-DOS bastano solo due righe di codice per avere 8 ingressi digitali prelevati dalla mia scheda pronti per l'uso.(progettazione e schema elettronico di mia costruzione).

GRAZIE ancora.

Inserita:

Guarda queste funzioni

'Scrive in memoria un valore di qualsiasi tipo

Sub Poke(ByVal address As Long, value As Variant, Optional ByVal ValueType As _

        VbVarType = -1)

    ' if a data type wasn't provided, use VarType()

    If ValueType = -1 Then ValueType = VarType(value)

    Select Case ValueType

        Case vbByte

            CopyMemory ByVal address, CByte(value), 1

        Case vbInteger

            CopyMemory ByVal address, CInt(value), 2

        Case vbBoolean

            CopyMemory ByVal address, CBool(value), 2

        Case vbLong

            CopyMemory ByVal address, CLng(value), 4

        Case vbSingle

            CopyMemory ByVal address, CSng(value), 4

        Case vbDouble

            CopyMemory ByVal address, CDbl(value), 8

        Case vbCurrency

            CopyMemory ByVal address, CCur(value), 8

        Case vbDate

            CopyMemory ByVal address, CDate(value), 8

        Case vbVariant

            CopyMemory ByVal address, value, 16

        Case Else

            Err.Raise 1001, , "Unsupported data type"

    End Select

End Sub

'Legge dalla memoria un valore di qualsiasi tipo

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _

    Any, source As Any, ByVal bytes As Long)

' read a value of any type from memory

Function Peek(ByVal address As Long, ByVal ValueType As VbVarType) As Variant

    Select Case ValueType

        Case vbByte

            Dim valueB As Byte

            CopyMemory valueB, ByVal address, 1

            Peek = valueB

        Case vbInteger

            Dim valueI As Integer

            CopyMemory valueI, ByVal address, 2

            Peek = valueI

        Case vbBoolean

            Dim valueBool As Boolean

            CopyMemory valueBool, ByVal address, 2

            Peek = valueBool

        Case vbLong

            Dim valueL As Long

            CopyMemory valueL, ByVal address, 4

            Peek = valueL

        Case vbSingle

            Dim valueS As Single

            CopyMemory valueS, ByVal address, 4

            Peek = valueS

        Case vbDouble

            Dim valueD As Double

            CopyMemory valueD, ByVal address, 8

            Peek = valueD

        Case vbCurrency

            Dim valueC As Currency

            CopyMemory valueC, ByVal address, 8

            Peek = valueC

        Case vbDate

            Dim valueDate As Date

            CopyMemory valueDate, ByVal address, 8

            Peek = valueDate

        Case vbVariant

            ' in this case we don't need an intermediate variable

            CopyMemory Peek, ByVal address, 16

        Case Else

            Err.Raise 1001, , "Unsupported data type"

    End Select

End Function

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...