vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Signale ausgeben und empfangen 
Autor: vendor2k
Datum: 02.02.03 13:25

Unter win2000 und xp ein großes problem, denn es werden dlls benötigt. ich habe mal ein cnc programm geschrieben und noch was übrig, wenn ichs dir schicken soll sags mir.

Sieht ungefähr so aus:

'/ --------------------------------------------------------------------
'/ PAR-AD12 und PAR-AD16 LPT-Messmodul unter Visual-Basic 6.0 ansteuern
'/ geprüft am 16.03.2000 von H.Kolter
'/ --------------------------------------------------------------------

'/ externe DLL einbinden für Port-I/O
'/ die DLL muss im gleichen Verzeichnis wie die EXE-Anwendung stehen
Declare Sub Out32 Lib "inpout32.DLL" (ByVal PortAddress As Long, ByVal Value As Byte)
Declare Function Inp32 Lib "inpout32.DLL" (ByVal PortAddress As Long) As Byte
Declare Sub warte Lib "inpout32.DLL" (ByVal us As Long)

'/ wird in Form-Load initialisiert:
'/ Global Const LPTDATA As Long = &H378 '/* LPT Printeradresse von Schnittstelle
'/ Global Const BUSY As Long = (LPTDATA + 1) '/* Abfragebit 7 = BUSY von LPT
'/ Global Const LPTS As Long = (LPTDATA + 2) '/* Strobe-Adresse von LPT

'/ globale konstante definieren
Global Const CLK = 1 '/* Bit 0 = Clock DAC1
Global Const RC = 2 '/* Bit 1 = 1 dann READ/CONVERT
Global Const ENB = 4 '/* Enable für BUSY-Leitung LPT
Global Const A0 = 8 '/* 1. Adr. A0 von Multiplexer
Global Const A1 = 16 '/* 2. Adr. A1 von Multiplexer
Global Const A2 = 32 '/* 4. Adr. A2 von Multiplexer
Global Const A3 = 64 '/* 8. Adr. A3 von Multiplexer
Global Const EN = 128 '/* Enable-Freigabe für Multiplexer

'/ globale variable definieren
Global LPTDATA As Long
Global BUSY, LPTS As Long
Global Adwvolt(15) As Single
Global Alt As Byte
Global A As Byte
Global Volt, Kanal As Integer
Global Modul, X, Pwert As Byte
Global B As Long
Global runns As Byte
Dim var1 As Byte


Sub WritePort()
'void WritePort() '/* Zwei NIBBLE (4Bit) auf modul schreiben
Call Out32(LPTS, 0)
For i = 1 To 100
Call Out32(LPTDATA, 26)
Call Out32(LPTDATA, 82)
Call Out32(LPTDATA, 112)
Call Out32(LPTDATA, 56)
'Call InitADC
Next
End Sub

Sub WriteData(Data)
On Error Resume Next
'void WritePort() '/* Zwei NIBBLE (4Bit) auf modul schreiben
Call GetBit

If A = 120 Then var1 = var1 + 1
Call Out32(LPTS, 0)
Call Out32(LPTDATA, Data)
'Call InitADC
End Sub


Sub Convert()
'void Convert() '/* Starte Wandler für Messung
Pwert = RC + Kanal '/* Wandlung Vorbereiten und Kanal einstellen
Call WritePort
Call warte(500)
Pwert = 0 + Kanal '/* READ/CONVERT auf 0, zum Lesen auf 1
Call WritePort '/* Wandlung ist jetzt vollzogen
Call warte(500)
Pwert = RC '/* CONVERT wieder zurücksetzen
Call WritePort '/* Alter Register-Zustand wiederherstellen
End Sub

Sub GetBit()
'void GetBit() '/* Lese serielles Bit auf BUSY
Pwert = RC + ENB '/* Schalte Bit auf BUSY-Leitung
'Call WritePort
A = (Inp32(BUSY)) '/* Lese Bit-Wert auf BUSY-Leitung LPT
Pwert = 0 + RC '/* Schalte BUSY wieder frei für andere
'Call WritePort
End Sub

Sub Clock()
'void Clock() '/* Gebe einen Seriell-Clock aus
Pwert = CLK + RC + Kanal '/* Setze Clk=1 + RC=HIGH
'Call WritePort
Call GetBit '/* Lese Bit s.o.
Pwert = 0 + RC + Kanal '/* Setze wieder zurück
Call WritePort
End Sub

Sub InitADC()
'void InitADC() '/* Bits auswerten und zusammenstellen
For X = 0 To 15 '/* Schleife für AD-Kanal 0...15
Kanal = ((X * 8) + EN) '/* Multiplexer einstellen
Call Convert
B = 65535 '/* 16Bit-Wert = 10.000 Volt
Call Clock
If (A And 128) Then B = B - 32768
Call Clock
If (A And 128) Then B = B - 16384
Call Clock
If (A And 128) Then B = B - 8192
Call Clock
If (A And 128) Then B = B - 4096
Call Clock
If (A And 128) Then B = B - 2048
Call Clock
If (A And 128) Then B = B - 1024
Call Clock
If (A And 128) Then B = B - 512
Call Clock
If (A And 128) Then B = B - 256
Call Clock
If (A And 128) Then B = B - 128
Call Clock
If (A And 128) Then B = B - 64
Call Clock
If (A And 128) Then B = B - 32
Call Clock
If (A And 128) Then B = B - 16
Call Clock
If (A And 128) Then B = B - 8
Call Clock
If (A And 128) Then B = B - 4
Call Clock
If (A And 128) Then B = B - 2
Call Clock
If (A And 128) Then B = B - 1

c = (0.3051804379 * B) - 10000 '/ Binär in Volt umrechnen
Volt = Int(c)
Adwvolt(X) = Int(c)
Next X
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Signale ausgeben und empfangen122Porti-Daddy02.02.03 13:19
Re: Signale ausgeben und empfangen54vendor2k02.02.03 13:25
Re: Signale ausgeben und empfangen30Porti-Daddy02.02.03 13:28
Re: Signale ausgeben und empfangen31vendor2k02.02.03 13:34
Re: Signale ausgeben und empfangen314dbayer02.02.03 14:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel