| |

Fortgeschrittene ProgrammierungRe: 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 |  |
 | 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 |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
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
|
|