Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako prístup k sériovým a paralelným portom pomocou Visual Basic 6

Ak vyvíjate aplikácie pomocou Visual Basic 6 , a ak chcete mať prístup k sériové a paralelné porty , musíte vložiť konkrétny Visual Basic programovací kódy do programu je " . VB " súbor . Môžete upraviť tento súbor priamo v aplikácii Visual Basic programovacie prostredie , ale kód pre pridanie prístup k sériové a paralelné porty je veľmi dlhá a špecifické . Pokyny dovolená 1

Dvakrát kliknite na " Microsoft Visual Studio . NET " ikonu programu pre spustenie programu . Kliknite na menu " Súbor " , presuňte kurzor myši nad položku " Nový " a vyberte možnosť " projekt " .
2

Kliknite na " Visual Basic Projects " možnosť pod " ; typy projektov " nadpis . Kliknite na možnosť " Aplikácia konzoly " pod " šablóny " nadpisom .
3

Zadajte názov pre použitie v priestore za predpokladu , a kliknite na tlačidlo " OK " pre vytvorenie projekt . Súbor " Module1.vb " sa automaticky otvorí
4

Vložte nasledujúci kód do súboru pred riadok kódu , ktorý číta " Module Module1 " projektu " Module1.vb " : .

Option Strict On

" Definujte triedu CommException , ktorá dedí od triedy ApplicationException , " a potom hodiť objekt typu CommException , keď dostanete chybu message.Class CommExceptionInherits ApplicationExceptionSub New ( byVal Dôvod As String ) MyBase.New ( Dôvod ) End SubEnd Trieda
5

Vložte nasledujúci kód do súboru projektu " Module1.vb " po riadok kódu , ktorý číta " Module Module1 " :

' Declare structures.Public Štruktúra DCBPublic DCBlength Ako Int32Public prenosová rýchlosť As Int32Public fBitFields As Int32 " Pozri komentáre v Win32API.TxtPublic wReserved Ako Int16Public XonLim Ako Int16Public XoffLim Ako Int16Public ByteSize Ako BytePublic parity Ako BytePublic StopBits Ako BytePublic XonChar Ako BytePublic XoffChar Ako BytePublic ErrorChar Ako BytePublic EofChar Ako BytePublic EvtChar Ako BytePublic wReserved1 As Int16 " Reserved , nenechajte UseEnd štruktúra

Verejná štruktúra COMMTIMEOUTSPublic ReadIntervalTimeout Ako Int32Public ReadTotalTimeoutMultiplier Ako Int32Public ReadTotalTimeoutConstant Ako Int32Public WriteTotalTimeoutMultiplier Ako Int32Public WriteTotalTimeoutConstant Ako Int32End štruktúra

" Declare constants.Public Const GENERIC_READ As Int32 = & H80000000Public Const všeobecné_zápis ako Int32 = & H40000000Public Const OPEN_EXISTING ako Int32 = 3Public Const FILE_ATTRIBUTE_NORMAL ako Int32 = & H80Public Const NOPARITY ako Int32 = 0Public Const ONESTOPBIT ako Int32 = 0

' Declare odkazy na externé functions.Public Declare Function Auto CreateFile Lib " kernel32.dll " _ ( byVal lpFileName As String , byVal dwDesiredAccess As Int32 , _ByVal dwShareMode As Int32 , byVal lpSecurityAttributes As IntPtr , _ByVal dwCreationDisposition As Int32 , byval dwFlagsAndAttributes As Int32 , _ByVal hTemplateFile As IntPtr ) ako IntPtr

verejné deklarovať funkcia automatického GetCommState Lib " kernel32.dll " ( byval nCid ako IntPtr , _ByRef lpDCB ako DCB ) As Boolean

verejné vyhlasujú , auto Function SetCommState Lib " kernel32.dll " ( byval nCid ako IntPtr , _ByRef lpDCB ako DCB ) As Boolean

Public Declare Funkcia auto GetCommTimeouts Lib " kernel32.dll " ( byval hFile ako IntPtr , _ByRef lpCommTimeouts As COMMTIMEOUTS ) As Boolean

Public Declare Funkcia Auto SetCommTimeouts Lib " kernel32.dll " ( byval hFile Ako IntPtr , _ByRef lpCommTimeouts Ako COMMTIMEOUTS ) As Boolean

Public Declare Function Auto WriteFile Lib " Kernel32 . dll " ( byval hFile ako IntPtr , _ByVal lpBuffer ako Byte ( ) , byval nNumberOfBytesToWrite ako Int32 , _ByRef lpNumberOfBytesWritten As Int32 , byval lpOverlapped ako IntPtr ) As Boolean

Public Declare Function Auto ReadFile Lib " kernel32.dll " ; ( byval hFile ako IntPtr , _ByVal lpBuffer As Byte ( ) , byval nNumberOfBytesToRead ako Int32 , _ByRef lpNumberOfBytesRead As Int32 , byval lpOverlapped ako IntPtr ) As Boolean

Public Declare Function Auto CloseHandle Lib " kernel32.dll " ( byVal hObject As IntPtr ) As Boolean
6

Vložte nasledujúci kód do súboru projektu " Module1.vb " po riadok kódu , ktorý číta " Sub Main " :

" deklarovať lokálne premenné , ktoré budete používať v code.Dim hSerialPort , hParallelPort ako IntPtrDim úspech ako BooleanDim MyDCB ako DCBDim MyCommTimeouts ako COMMTIMEOUTSDim BytesWritten , BytesRead ako Int32Dim pufra ( ) ako Byte

" Deklarácia premennej použiť pre encoding.Dim oEncoder ako nový System.Text.ASCIIEncodingDim oEnc ako System.Text.Encoding = oEncoder.GetEncoding ( 1252 )

" Previesť reťazec na Byte ( ) . Buffer = oEnc.GetBytes ( " test " ) Skúste " Prístup sériové port.Console.WriteLine ( " Prístup k sériovému portu COM1 " ) " Získať popisovač COM1 sériový port.hSerialPort = CreateFile ( " COM1 " , GENERIC_READ Alebo všeobecné_zápis , 0 , IntPtr.Zero , _OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , IntPtr.Zero ) " Uistite sa , že získané rukoväť je valid.If hSerialPort.ToInt32 = -1 ThenThrow New CommException ( " Nemožno získať popisovač na porte COM1 " ) End If " Načítať aktuálne nastavenie ovládania . úspech = GetCommState ( hSerialPort , MyDCB ) Ak úspech = False ThenThrow New CommException ( " Nemožno načítať aktuálne nastavenie " ) End If ' Upraviť vlastnosti stiahne DCB štruktúry podľa potreby . " VAROVANIE : Uistite sa , upraviť vlastnosti v závislosti na ich podporovaná values.MyDCB.BaudRate = 9600MyDCB.ByteSize = 8MyDCB.Parity = NOPARITYMyDCB.StopBits = ONESTOPBIT ' Zmeňte konfiguráciu COM1 na základe vlastností modifikovaného DCB structure.Success = SetCommState ( hSerialPort , MyDCB ) Ak Úspech = False ThenThrow New CommException ( " Nemožno zmeniť nastavenia COM1 " ) End If " Načítať aktuálny čas - out settings.Success = GetCommTimeouts ( hSerialPort , MyCommTimeouts ) Ak Úspech = False ThenThrow New CommException ( " Nemožno načítať aktuálne nastavenie time - out " ) End If ' Upraviť vlastnosti stiahne štruktúry COMMTIMEOUTS podľa potreby . " VAROVANIE : Uistite sa , upraviť vlastnosti v závislosti na ich podporovaná values.MyCommTimeouts.ReadIntervalTimeout = 0MyCommTimeouts.ReadTotalTimeoutConstant = 0MyCommTimeouts.ReadTotalTimeoutMultiplier = 0MyCommTimeouts.WriteTotalTimeoutConstant = 0MyCommTimeouts.WriteTotalTimeoutMultiplier = 0 " zmeňte konfiguráciu nastavení časového limitu , na základe vlastností modifikovaná COMMTIMEOUTS structure.Success = SetCommTimeouts ( hSerialPort , MyCommTimeouts ) Ak Úspech = False ThenThrow New CommException ( " Nemožno zmeniť nastavenie časového limitu nastavenie " ) End If ' Zápis dát na COM1.Console.WriteLine ( " Písanie nasledujúce údaje COM1 : Test " ) Úspech = WriteFile ( hSerialPort , Buffer , Buffer.Length , BytesWritten , IntPtr.Zero ) Ak Úspech = False ThenThrow New CommException ( " Nemožno zapisovať do COM1 " ) End If ' Čítanie dát z COM1.Success = ReadFile ( hSerialPort , Buffer , BytesWritten , BytesRead , IntPtr.Zero ) Ak Úspech = False ThenThrow New CommException ( " Nemožno čítať z COM1 " ) End IfCatch ex Ako ExceptionConsole.WriteLine ( ex.Message ) Konečne " Uvoľnite rukoväť na COM1 . Úspech = CloseHandle ( hSerialPort ) Ak Úspech = False ThenConsole.WriteLine ( " Nemožno uvoľniť rukoväte na COM1 " ) End IfEnd Skúste
7

Vložte nasledujúci kód bezprostredne po kódu , ktorý ste vložili do súbor " Module1.vb " v kroku 6 :

Skúste " paralelné port.Console.WriteLine ( " Prístup k paralelný port LPT1 " ) " získať handle na LPT1 paralelný port.hParallelPort = CreateFile ( " , LPT1 " , GENERIC_READ Alebo GENERIC_WRITE , 0 , IntPtr.Zero , _OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , IntPtr.Zero ) " Uistite sa , že získané rukoväť je valid.If hParallelPort.ToInt32 = -1 ThenThrow New CommException ( " Nemožno získať popisovač port LPT1 " ) End If " Načítať aktuálny ovládací prvok settings.Success = GetCommState ( hParallelPort , MyDCB ) Ak Úspech = False ThenThrow New CommException ( " Nemožno načítať aktuálne nastavenie " ) End If ' Upraviť vlastnosti vyvolané DCB štruktúry podľa potreby . " VAROVANIE : Uistite sa , upraviť vlastnosti v závislosti na ich podporovaná values.MyDCB.BaudRate = 9600MyDCB.ByteSize = 8MyDCB.Parity = NOPARITYMyDCB.StopBits = ONESTOPBIT ' Zmeňte konfiguráciu LPT1 na základe vlastností modifikovaného DCB structure.Success = SetCommState ( hParallelPort , MyDCB ) Ak Úspech = False ThenThrow New CommException ( " Nemožno zmeniť nastavenie LPT1 " ) End If " Načítať aktuálny čas - out settings.Success = GetCommTimeouts ( hParallelPort , MyCommTimeouts ) Ak Úspech = False ThenThrow New CommException ( " Nemožno načítať aktuálne nastavenie time - out " ) End If ' Upraviť vlastnosti stiahne štruktúry COMMTIMEOUTS podľa potreby . " VAROVANIE : Uistite sa , upraviť vlastnosti v závislosti na ich podporovaná values.MyCommTimeouts.ReadIntervalTimeout = 0MyCommTimeouts.ReadTotalTimeoutConstant = 0MyCommTimeouts.ReadTotalTimeoutMultiplier = 0MyCommTimeouts.WriteTotalTimeoutConstant = 0MyCommTimeouts.WriteTotalTimeoutMultiplier = 0 " zmeňte konfiguráciu nastavení časového limitu , na základe vlastností modifikovaná COMMTIMEOUTS structure.Success = SetCommTimeouts ( hParallelPort , MyCommTimeouts ) Ak Úspech = False ThenThrow New CommException ( " Nemožno zmeniť nastavenie časového limitu " ) End If ' Zápis dát na port LPT1 . " Poznámka : Nemožno čítať dáta z paralelného portu volaním ReadFile function.Console.WriteLine ( " Písanie nasledujúce dáta na LPT1 : test " ) Úspech = WriteFile ( hParallelPort , Buffer , Buffer.Length , BytesWritten , IntPtr.Zero ) Ak úspech = False ThenThrow New CommException ( " Nemožno zapisovať do LPT1 " ) End IfCatch ex Ako ExceptionConsole.WriteLine ( ex.Message ) Konečne " Uvoľnite rukoväť LPT1.Success = CloseHandle ( hParallelPort ) Ak je úspech = False ThenConsole . Console.WriteLine ( " Nemožno uvoľniť rukoväte na LPT1 " ) End IfEnd Skúste klipart

Console.WriteLine ( " Press ENTER ukončite " ) Console.ReadLine ( )
8

Kliknite " Build " menu a vyberte " Zostaviť riešenie " možnosť voľby . Kliknite na menu " Debug " a vyberte možnosť " Štart " . Aplikácia má prístup k sériové a paralelné porty teraz .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené