Wenn Sie die Entwicklung eines Programms mit Visual Basic 6 sind , und Sie möchten in der Lage sein , um die serielle und parallele Ports zuzugreifen, müssen Sie bestimmte Programmiersprache Visual Basic -Codes in das Programm einfügen " . VB "-Datei. Sie können diese Datei direkt in der Visual Basic -Programmierumgebung zu bearbeiten, aber der Code für das Hinzufügen Zugriff auf die serielle und parallele Ports ist sehr lang und spezifisch. Anleitung
1
Doppelklicken Sie auf das "Microsoft Visual Studio. NET " Programm-Icon , um das Programm zu starten. Klicken Sie auf das Menü "Datei" , bewegen Sie den Mauszeiger über die Option "Neu" und wählen Sie das "Projekt "-Option.
2
Klicken Sie auf die " Visual Basic-Projekte "-Option unterhalb der " ; Projekttypen "Überschrift. Klicken Sie auf die "Console Application" Option unter "Vorlagen " Überschrift.
3
Geben Sie einen Namen für die Anwendung in das dafür vorgesehene Feld ein und klicken Sie "OK" -Taste, um das zu schaffen Projekt . Die " Module1.vb " Datei öffnet sich automatisch
4
Fügen Sie folgenden Code in das Projekt " Module1.vb "-Datei vor der Codezeile, die " Module Module1 " lautet: .
Option Strict On
'definiert CommException Klasse, die von der ApplicationException Klasse erbt ", und dann werfen ein Objekt vom Typ CommException , wenn Sie einen Fehler message.Class CommExceptionInherits ApplicationExceptionSub New (ByVal Grund As String erhalten
: ) MyBase.New (Grund ) Ende SubEnd Klasse
5
den folgenden Code in das Projekt " Module1.vb " Datei nach der Codezeile, die " Module Module1 " liest Einfügen
' structures.Public Struktur DCBPublic DCBlength Wie Int32Public BaudRate Wie Int32Public fBitFields erklären als Int32 ' Siehe Kommentare in Win32API.TxtPublic wReserved Wie Int16Public XonLim Wie Int16Public XoffLim Wie Int16Public ByteSize Wie BytePublic Parität Wie BytePublic StopBits Wie BytePublic XonChar Wie BytePublic XoffChar Wie BytePublic ErrorChar Wie BytePublic EOFChar Wie BytePublic EvtChar Wie BytePublic wReserved1 Wie Int16 ' Reserviert ; Nicht Struktur
Public Structure COMMTIMEOUTSPublic ReadIntervalTimeout Wie Int32Public ReadTotalTimeoutMultiplier Wie Int32Public ReadTotalTimeoutConstant Wie Int32Public WriteTotalTimeoutMultiplier Wie Int32Public WriteTotalTimeoutConstant Wie Int32End Struktur
UseEnd ' Declare constants.Public Const GENERIC_READ Wie Int32 = & H80000000Public Const GENERIC_WRITE Wie Int32 = & H40000000Public Const OPEN_EXISTING Wie Int32 = 3Public Const FILE_ATTRIBUTE_NORMAL Wie Int32 = & H80Public Const NOPARITY Wie Int32 = 0Public Const ONESTOPBIT Wie Int32 = 0
' Verweisen auf fremde functions.Public Declare Auto Function CreateFile Lib " kernel32.dll " _ (ByVal lpFileName As String , ByVal DwDesiredAccess Wie Int32, _ByVal dwShareMode Wie Int32, ByVal lpSecurityAttributes Als IntPtr, _ByVal dwCreationDisposition Wie Int32, ByVal deklarieren DwFlagsAndAttributes Wie Int32, Declare _ByVal hTemplateFile Als IntPtr ) As IntPtr
öffentlichen Auto-Funktion GetCommState Lib " kernel32.dll " (ByVal ncid Als IntPtr, _ByRef lpDCB Wie DCB) As Boolean
Öffentliche Declare Auto-Funktion SetCommState Lib " kernel32.dll " (ByVal ncid Als IntPtr, _ByRef lpDCB Wie DCB) As Boolean
Öffentliche Declare Auto Function GetCommTimeouts Lib " kernel32.dll " (ByVal hFile Als IntPtr, _ByRef lpCommTimeouts Wie COMMTIMEOUTS ) As Boolean
Öffentliche Declare Auto Function SetCommTimeouts Lib " kernel32.dll " (ByVal hFile Als IntPtr, _ByRef lpCommTimeouts Wie COMMTIMEOUTS ) As Boolean
Öffentliche Declare Auto Function WriteFile Lib " kernel32 . dll " (ByVal hFile Als IntPtr, _ByVal lpBuffer As Byte () , ByVal nNumberOfBytesToWrite Wie Int32, Int32 _ByRef Wie lpNumberOfBytesWritten , ByVal lpOverlapped Als IntPtr) As Boolean deklarieren
öffentlichen Auto-Funktion ReadFile Lib" kernel32.dll " ; (ByVal hFile Als IntPtr, _ByVal lpBuffer As Byte () , ByVal nNumberOfBytesToRead Wie Int32, _ByRef lpNumberOfBytesRead Wie Int32, ByVal lpOverlapped Als IntPtr) As Boolean
Öffentliche Declare Auto Function CloseHandle Lib " kernel32.dll " ( ByVal hObject Als IntPtr) As Boolean
6
Fügen Sie folgenden Code in das Projekt " Module1.vb " Datei nach der Codezeile, die "Sub Main" lautet:
" erklären Sie die lokalen Variablen , die Sie im code.Dim hSerialPort , hParallelPort Wie IntPtrDim Erfolg Als BooleanDim MyDCB Wie DCBDim MyCommTimeouts Wie COMMTIMEOUTSDim BytesWritten , As Int32Dim Buffer ( bytesRead verwenden ) As Byte
' Declare die Variablen verwenden für encoding.Dim oEncoder As New System.Text.ASCIIEncodingDim oEnc Wie System.Text.Encoding = oEncoder.GetEncoding ( 1252 )
'Convert String in Byte () . Buffer = oEnc.GetBytes ("Test" ) Try ' Besuchen Sie das serielle port.Console.WriteLine ( "Zugriff auf die serielle Schnittstelle COM1 ")' ein Handle für den seriellen COM1 port.hSerialPort = CreateFile Einholen ( "COM1" , GENERIC_READ Oder GENERIC_WRITE , 0, IntPtr.Zero , _OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , IntPtr.Zero ) ' Überprüfen Sie, ob die erhaltene Griff valid.If hSerialPort.ToInt32 = -1 ThenThrow New CommException ( "Kann ein Handle für den COM1 -Port zu erhalten ") End ist, wenn ' die aktuellen Einstellungen abrufen . Erfolg = GetCommState ( hSerialPort , MyDCB ) Wenn Success = False ThenThrow New CommException ( " Unfähig, die aktuellen Einstellungen abrufen ") End If ' Ändern Sie die Eigenschaften der abgerufenen DCB Struktur als angemessen. " WARNUNG: Achten Sie darauf, die Eigenschaften nach ihren unterstützten values.MyDCB.BaudRate ändern = 9600MyDCB.ByteSize = 8MyDCB.Parity = NOPARITYMyDCB.StopBits = ONESTOPBIT ' Konfigurieren COM1 auf die Eigenschaften des modifizierten DCB structure.Success Basis = SetCommState ( hSerialPort , MyDCB ) Wenn Success = False ThenThrow New CommException ( "Kann nicht neu COM1" ) End If ' die aktuelle Zeit -out settings.Success = GetCommTimeouts ( hSerialPort , MyCommTimeouts ) abrufen Wenn Success = False ThenThrow New CommException ( "Kann nicht abrufen aktuellen Timeout-Einstellungen ") End If ' die Eigenschaften der abgerufenen COMMTIMEOUTS Struktur ändern streichen." WARNUNG: Achten Sie darauf, die Eigenschaften nach ihren unterstützten values.MyCommTimeouts.ReadIntervalTimeout ändern = 0MyCommTimeouts.ReadTotalTimeoutConstant = 0MyCommTimeouts.ReadTotalTimeoutMultiplier = 0MyCommTimeouts.WriteTotalTimeoutConstant = 0MyCommTimeouts.WriteTotalTimeoutMultiplier = 0 ' Konfigurieren Sie die Timeout-Einstellungen , basierend auf den Eigenschaften des modifizierten COMMTIMEOUTS structure.Success = SetCommTimeouts ( hSerialPort , MyCommTimeouts ) Wenn Success = False ThenThrow New CommException ( "Kann nicht konfigurieren Sie die Timeout-Einstellungen ") End If ' schreiben von Daten auf COM1.Console.WriteLine ( "Schreiben Sie die folgenden Daten an COM1: Test " ) Success = WriteFile ( hSerialPort , Buffer , buffer.Length , BytesWritten , IntPtr.Zero ) Wenn Success = False ThenThrow New CommException ( " Kann nicht mit COM1 schreiben ") End If ' Daten aus COM1.Success Lesen = ReadFile ( hSerialPort , Buffer , BytesWritten , BytesRead , IntPtr.Zero ) Wenn Success = False ThenThrow New CommException ( "Kann nicht von COM1 lesen ") End IfCatch ex As ExceptionConsole.WriteLine ( ex.Message ) Finally ' Lassen Sie den Griff an COM1 . Erfolg = CloseHandle ( hSerialPort ) Wenn Success = False ThenConsole.WriteLine ( "Kann nicht zu handhaben , um COM1 freigeben ") End IfEnd Versuchen
7
Fügen Sie folgenden Code unmittelbar nach dem Code, den Sie eingefügt in die " Module1.vb "-Datei in Schritt 6:
Try ' parallel port.Console.WriteLine ( "Zugriff auf den parallelen Port LPT1 ")' einen Griff an den LPT1 parallel port.hParallelPort = CreateFile Einholen ( " ; LPT1 " , _OPEN_EXISTING GENERIC_READ Oder GENERIC_WRITE , 0, IntPtr.Zero , FILE_ATTRIBUTE_NORMAL , IntPtr.Zero ) ' Überprüfen Sie, ob die erhaltene Griff valid.If hParallelPort.ToInt32 ist = -1 ThenThrow New CommException ( " Kann nicht in den Griff zu bekommen die LPT1 ") End If ' das aktuelle Steuerelement abrufen settings.Success = GetCommState ( hParallelPort , MyDCB ) Wenn Success = False ThenThrow New CommException ( " Unfähig, die aktuellen Einstellungen abrufen ") End If' Ändern Sie die Eigenschaften der abgerufenen DCB Struktur als angemessen. " WARNUNG: Achten Sie darauf, die Eigenschaften nach ihren unterstützten values.MyDCB.BaudRate ändern = 9600MyDCB.ByteSize = 8MyDCB.Parity = NOPARITYMyDCB.StopBits = ONESTOPBIT ' Konfigurieren LPT1 auf die Eigenschaften des modifizierten DCB structure.Success Basis = SetCommState ( hParallelPort , MyDCB ) Wenn Success = False ThenThrow New CommException ( "Kann nicht konfigurieren LPT1 ") End If ' die aktuelle Zeit -out settings.Success = GetCommTimeouts ( hParallelPort , MyCommTimeouts ) abrufen Wenn Success = False ThenThrow New CommException ( "Kann nicht abrufen aktuellen Timeout-Einstellungen ") End If ' die Eigenschaften der abgerufenen COMMTIMEOUTS Struktur ändern streichen." WARNUNG: Achten Sie darauf, die Eigenschaften nach ihren unterstützten values.MyCommTimeouts.ReadIntervalTimeout ändern = 0MyCommTimeouts.ReadTotalTimeoutConstant = 0MyCommTimeouts.ReadTotalTimeoutMultiplier = 0MyCommTimeouts.WriteTotalTimeoutConstant = 0MyCommTimeouts.WriteTotalTimeoutMultiplier = 0 ' Konfigurieren Sie die Timeout-Einstellungen , basierend auf den Eigenschaften des modifizierten COMMTIMEOUTS structure.Success = SetCommTimeouts ( hParallelPort , MyCommTimeouts ) Wenn Success = False ThenThrow New CommException ( "Kann nicht konfigurieren Sie die Timeout-Einstellungen ") End If ' schreiben von Daten auf LPT1 . ' Hinweis: Sie können keine Daten von einer parallelen Schnittstelle durch Aufruf der ReadFile function.Console.WriteLine ( "Schreiben Sie die folgenden Daten an LPT1: Test" ) Success = WriteFile ( hParallelPort , Buffer , buffer.Length , BytesWritten , IntPtr.Zero ) Wenn Success = False ThenThrow New CommException ( "Kann nicht mit LPT1 schreiben ") End IfCatch ex As ExceptionConsole.WriteLine ( ex.Message ) Finally ' Lassen Sie den Griff zu = CloseHandle ( hParallelPort ) Wenn Success = False ThenConsole LPT1.Success . WriteLine ( "Kann Griff LPT1 freigeben ") End IFEND Versuchen
Console.WriteLine ( "Press ENTER to quit" ) Console.ReadLine ()
8
Klicken Sie auf die "Build "-Menü und wählen Sie " Projektmappe erstellen "-Option. Klicken Sie auf die "Debug "-Menü und wählen Sie die Option "Start" . Die Anwendung hat nun Zugriff auf den seriellen und parallelen Ports.