| |

Fortgeschrittene ProgrammierungPortsdll und inpout32 | |  | Autor: wollez | Datum: 07.02.07 15:40 |
| Hallo zusammen,
ich habe da mal ein Problem und hoffe es kann mir jemand weiterhelfen.
mein Programm sendet über die serielle Schnittstelle an eine Anzeigetafel Daten, die dort dann angezeigt werden. Wenn jetzt der Rechner neu gestartet wird, werden an der Tafel nur wirre Zeichen angezeigt und diese kann ich nur löschen wenn ich der Anzeigetafel kurz die Spannung abschalte. Dies kommt wohl daher, wenn der Rechner gestartet wird, sendet Windows ein paar Zeichen um den Port abzufragen.
ich habe mir deshalb eine Schaltung überlegt, mit der ich der Anzeigetafel über den Paralellport die Spannung per Software zu und abschalte. Dazu benötige ich nur die Leitung "0" die ich dann auf "high" setzte. Dies funktioniert auch ganz gut.
Jetzt zu meinem eigentlichen Problem:
Das senden der Daten an die Anzeige mit der seriellen Leitung funktioniert nur wenn ich die Befehle zum steuern der paralellen Schnittstelle deaktiviere.
Für das senden der Daten zur seriellen Schnittstelle verwende ich folgenden Code:
Extra Modul "Portsdll"
Declare Function OPENCOM Lib "Port" (ByVal A$) As Integer
Declare Sub CLOSECOM Lib "Port" ()
Declare Sub SENDBYTE Lib "Port" (ByVal b%)
Declare Function READBYTE Lib "Port" () As Integer
Declare Sub DTR Lib "Port" (ByVal b%)
Declare Sub RTS Lib "Port" (ByVal b%)
Declare Sub TXD Lib "Port" (ByVal b%)
Declare Function CTS Lib "Port" () As Integer
Declare Function DSR Lib "Port" () As Integer
Declare Function RI Lib "Port" () As Integer
Declare Function DCD Lib "Port" () As Integer
Declare Sub DELAY Lib "Port" (ByVal b%)
Declare Sub TIMEINIT Lib "Port" ()
Declare Sub TIMEINITUS Lib "Port" ()
Declare Function TIMEREAD Lib "Port" () As Long
Declare Function TIMEREADUS Lib "Port" () As Long
Declare Sub DELAYUS Lib "Port" (ByVal l As Long)
Declare Sub REALTIME Lib "Port" (ByVal i As Boolean)
Public Function öffnen()
'es wird der COM-Port, der in der INI-Datei eingestellt ist, geöffnet
Dim PortNr1 As String
Dim PortNr2 As Long
Dim PortNr As String
PortNr1 = Space$(255)
PortNr2 = GetPrivateProfileString("Comport", "11", "", PortNr1, 255, App.Path & _
"\ProdAnz.ini")
PortNr = Left$(PortNr1, PortNr2) & ":"
OPENCOM (PortNr)
End Function
' Funktion zum senden der Daten
Public Function Senden(Daten As String)
' Dieser Sub nimmt einem Binärstring entgegen zb. "0111000011"
' und zerlegt ihn in einzelne Zeichen. Die Länge des Strings ist egal
' Die Zeichen können dann in einer Schleife gesendet werden
Dim Zähler As Long
Dim Bit As String
For Zähler = 1 To Len(Daten)
Bit = Mid$(Daten, Zähler, 1)
If Bit = "1" Then
TXD 1
Else
TXD 0
End If
DTR 1: RTS 0
DTR 0: RTS 0
' Hier dann der Rest ...
' Clock erzeugen, warten und so weiter
Next Zähler
End Function
Public Function Make8(ByVal Eingabe As String) As String
'wandelt die Zeichen in Dualzahlen um
Dim Rückgabe As String
Dim Ausgabe As String
Select Case Eingabe
Case Is = "0"
Rückgabe = "0000"
Case Is = "1"
Rückgabe = "0001"
Case Is = "2"
Rückgabe = "0010"
Case Is = "3"
Rückgabe = "0011"
Case Is = "4"
Rückgabe = "0100"
Case Is = "5"
Rückgabe = "0101"
Case Is = "6"
Rückgabe = "0110"
Case Is = "7"
Rückgabe = "0111"
Case Is = "8"
Rückgabe = "1000"
Case Is = "9"
Rückgabe = "1001"
Case Is = "-"
Rückgabe = "1010"
Case Is = ""
Rückgabe = "1111"
Case Is = "E"
Rückgabe = "1011"
Case Is = "e"
Rückgabe = "1011"
Case Is = "H"
Rückgabe = "1100"
Case Is = "h"
Rückgabe = "1100"
Case Is = "L"
Rückgabe = "1101"
Case Is = "l"
Rückgabe = "1101"
Case Is = "P"
Rückgabe = "1110"
Case Is = "p"
Rückgabe = "1110"
Case Is = "I"
Rückgabe = "0001"
Case Is = "i"
Rückgabe = "0001"
End Select
Make8 = Rückgabe
End Function Für das schalten der Leitung der parallelen Schnittstelle verwende ich folgenden Code:
Extra Modul "inpout32"
'inpout32.bas
'Inp und Out Deklarationen
Public Declare Function Inp Lib "inpout32.dll" Alias _
"Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" _
(ByVal PortAddress As Integer, ByVal Value As Integer) Der Aufruf ist:
Out &H378, 1 'schaltet die Leitung ein
Out &H378, 0 'schaltet die Leitung aus Natürlich habe ich auch die dll installiert
Kann es sein, das diese dll`s sich nicht vertragen?
Gruß Wollez |  |
 Portsdll und inpout32 | 883 | wollez | 07.02.07 15:40 |
 | 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 |
  |
|
TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 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
|
|