LPT
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



LPT Expand / Collapse
Автор
Сообщение
27.11.2006 13:26
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 16.10.2007 19:20
Сообщ.: 62, Visits: 359
Народ подскажите как в VB .net работать с LPT plz...
Сообщ. #908051
15.12.2006 21:17
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.01.2008 10:33
Сообщ.: 70, Visits: 678
Option Strict On

Class CommException
   Inherits ApplicationException
   Sub New(ByVal Reason As String)
      MyBase.New(Reason)
   End Sub
End Class

Module Module1

   Public Structure DCB
      Public DCBlength As Int32
      Public BaudRate As Int32
      Public fBitFields As Int32
      Public wReserved As Int16
      Public XonLim As Int16
      Public XoffLim As Int16
      Public ByteSize As Byte
      Public Parity As Byte
      Public StopBits As Byte
      Public XonChar As Byte
      Public XoffChar As Byte
      Public ErrorChar As Byte
      Public EofChar As Byte
      Public EvtChar As Byte
      Public wReserved1 As Int16 'Reserved; Do Not Use
   End Structure

   Public Structure COMMTIMEOUTS
      Public ReadIntervalTimeout As Int32
      Public ReadTotalTimeoutMultiplier As Int32
      Public ReadTotalTimeoutConstant As Int32
      Public WriteTotalTimeoutMultiplier As Int32
      Public WriteTotalTimeoutConstant As Int32
   End Structure

   Public Const GENERIC_READ As Int32 = &H80000000
   Public Const GENERIC_WRITE As Int32 = &H40000000
   Public Const OPEN_EXISTING As Int32 = 3
   Public Const FILE_ATTRIBUTE_NORMAL As Int32 = &H80
   Public Const NOPARITY As Int32 = 0
   Public Const ONESTOPBIT As Int32 = 0

   Public Declare Auto Function 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) As IntPtr

   Public Declare Auto Function GetCommState Lib "kernel32.dll" (ByVal nCid As IntPtr, _
      ByRef lpDCB As DCB) As Boolean

   Public Declare Auto Function SetCommState Lib "kernel32.dll" (ByVal nCid As IntPtr, _
      ByRef lpDCB As DCB) As Boolean

   Public Declare Auto Function GetCommTimeouts Lib "kernel32.dll" (ByVal hFile As IntPtr, _
      ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean

   Public Declare Auto Function SetCommTimeouts Lib "kernel32.dll" (ByVal hFile As IntPtr, _
      ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean

   Public Declare Auto Function WriteFile Lib "kernel32.dll" (ByVal hFile As IntPtr, _
      ByVal lpBuffer As Byte(), ByVal nNumberOfBytesToWrite As Int32, _
         ByRef lpNumberOfBytesWritten As Int32, ByVal lpOverlapped As IntPtr) As Boolean

   Public Declare Auto Function ReadFile Lib "kernel32.dll" (ByVal hFile As IntPtr, _
      ByVal lpBuffer As Byte(), ByVal nNumberOfBytesToRead As Int32, _
         ByRef lpNumberOfBytesRead As Int32, ByVal lpOverlapped As IntPtr) As Boolean

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

   Sub Main()

      Dim hSerialPort, hParallelPort As IntPtr
      Dim Success As Boolean
      Dim MyDCB As DCB
      Dim MyCommTimeouts As COMMTIMEOUTS
      Dim BytesWritten, BytesRead As Int32
      Dim Buffer() As Byte

      ' Declare variables to use for encoding.
      Dim oEncoder As New System.Text.ASCIIEncoding
      Dim oEnc As System.Text.Encoding = oEncoder.GetEncoding(1252)

      ' Convert String to Byte().
      Buffer = oEnc.GetBytes("Test")

      Try
         ' Parallel port.
         Console.WriteLine("Accessing the LPT1 parallel port")
         ' Obtain a handle to the LPT1 parallel port.
         hParallelPort = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, _
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)
         ' Verify that the obtained handle is valid.
         If hParallelPort.ToInt32 = -1 Then
            Throw New CommException("Unable to obtain a handle to the LPT1 port")
         End If
         ' Retrieve the current control settings.
         Success = GetCommState(hParallelPort, MyDCB)
         If Success = False Then
            Throw New CommException("Unable to retrieve the current control settings")
         End If
         ' Modify the properties of MyDCB as appropriate.
         ' WARNING: Make sure to modify the properties in accordance with their supported values.
         MyDCB.BaudRate = 9600
         MyDCB.ByteSize = 8
         MyDCB.Parity = NOPARITY
         MyDCB.StopBits = ONESTOPBIT
         ' Reconfigure LPT1 based on the properties of MyDCB.
         Success = SetCommState(hParallelPort, MyDCB)
         If Success = False Then
            Throw New CommException("Unable to reconfigure LPT1")
         End If
         ' Retrieve the current time-out settings.
         Success = GetCommTimeouts(hParallelPort, MyCommTimeouts)
         If Success = False Then
            Throw New CommException("Unable to retrieve current time-out settings")
         End If
         ' Modify the properties of MyCommTimeouts as appropriate.
         ' WARNING: Make sure to modify the properties in accordance with their supported values.
         MyCommTimeouts.ReadIntervalTimeout = 0
         MyCommTimeouts.ReadTotalTimeoutConstant = 0
         MyCommTimeouts.ReadTotalTimeoutMultiplier = 0
         MyCommTimeouts.WriteTotalTimeoutConstant = 0
         MyCommTimeouts.WriteTotalTimeoutMultiplier = 0
         ' Reconfigure the time-out settings, based on the properties of MyCommTimeouts.
         Success = SetCommTimeouts(hParallelPort, MyCommTimeouts)
         If Success = False Then
            Throw New CommException("Unable to reconfigure the time-out settings")
         End If
         ' Write data to LPT1.
         Console.WriteLine("Writing the following data to LPT1: Test")
         Success = WriteFile(hParallelPort, Buffer, Buffer.Length, BytesWritten, IntPtr.Zero)
         If Success = False Then
            Throw New CommException("Unable to write to LPT1")
         End If
      Catch ex As Exception
         Console.WriteLine(Ex.Message)
      Finally
         ' Release the handle to LPT1.
         Success = CloseHandle(hParallelPort)
         If Success = False Then
            Console.WriteLine("Unable to release handle to LPT1")
         End If
      End Try

      Console.WriteLine("Press ENTER to quit")
      Console.ReadLine()
Сообщ. #908954
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 8:20