亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? crs232.vb

?? rs232程序 可以實現單片機的遠程控制 初學者可以下載參考
?? VB
字號:
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Threading
Imports System.ComponentModel
Imports System.IO



#Region "RS232"
Public Class Rs232 : Implements IDisposable
   '===================================================
   '
   '	Module				:	Rs232
   '	Description		:	Class for handling RS232 comunication with VB.Net
   '	Created				:	10/08/2001 - 8:45:25
   '	Author				:	Corrado Cavalli (corrado@mvps.org)
    'WebSite				:	www.codeworks.it/net/index.htm
   '
   '	Notes					:	
   '-----------------------------------------------------------------------------------------------
	'																	*	Revisions *
	'
	'	02/12/2000		First internal alpha version built on framework beta1
	'
   '	1st Public release Beta2 (10/08/2001)
   '
   '	Rev.1	(28.02.2002)
   '	1.	Added ResetDev, SetBreak and ClearBreak to the EscapeCommFunction constants
   '	2.	Added the overloaded Open routine.
   '	3.	Added the modem status routines, properties and enum.
   '	4.	If a read times out, it now returns a EndOfStreamException (instead of a simple Exception).
   '	5.Compiled with VS.Net final

   '	Rev.2	(01.03.2002)
   '	Added Async support
   '
   '  Rev.3	(07.04.2002)
   '	Minor bugs fixed
   '
   '  Rev.3 (05/05/2002)
   '  Fixed BuildCommmDCB problem
   '
   '  Rev.4 (24/05/2002)
   '  Fixed problem with ASCII Encoding truncating 8th bit
   '
   '  Rev.5 (27/05/2002)
   '  Added IDisposable / Finalize implementation
   '
   '  Rev.6 (14/03/2003)
   '  Fixed problem on DCB fields Initialization
   '
   '  Rev.7 (26/03/2003)
   '  Added XON/XOFF support
   '
   '  Rev.8 (12/07/2003)
	'  Added support to COM port number greater than 4
	'
	'	Rev.9 (15/07/2003)
	'	Added CommEvent to detect incoming chars/events
	'	Updated both Tx/Rx method from Non-Ovelapped to Overlapped mode
	'	Removed unused Async methods and other stuff.
	'
	'	Rev.10 (21/07/2003)
    '    Fixed incorrect character handling when using EnableEvents()
   '
    '   Rev.11 (12/08/2003)
    '   Fixed some bugs signaled by users
   ' 
	'	Rev.12 (01/09/2003)
	'	Removed AutoReset of internal buffers and added PurgeBuffer() method
	'	
	'	Rev.13 (02/09/2003)
	'	Removed GetLastErrorUse in favour of Win32Exception()
	'
	'	Rev.14 (14/09/2003)
	'	Added IsPortAvailable() function
	'  Revised some API declaration
    '  Fixed problem with Win98/Me OS
   '
    '   Rev.15 (24/09/2003)
    '  	Fixed bug introduced on Rev.14
   '
    '   Rev.16 (12/10/2003)
    '	Added SetBreak/ClearBreak() methods
   '
    '   Rev.17 (02/11/2003)
    '   Fixed field on COMMCONFIG
	'
	'   Rev.18 (03/03/2004)
	'   Fixed bug: Testing mhRS for <>0 is not correct
	'
	'   Rev.19 (08/04/2004)
	'   Fixed bug: Fixed bug on DTR property
	'
	'   Rev.20 (12/07/2004)
	'   CommEvent is no more raised on a secondary thread
    '	pEventsWatcher now uses a background thread
	'
	'   Rev.21 (24/10/2004)
	'   EscapeCommFunction declaration fixed
	'	Pariti enum fixed to Parity
	'
	'	Rev. 22 (05/03/2005)
    '	Fixed memory leak problem causing program closing
    '	without any message on some systems.
    '	Thanks to Ralf Gedrat for testing this scenario
    '
    '   Rev.23 (05/04/2005)
    '   Fixed bug DisableEvents not working bug 
    '
    '   Rev.24 (20/04/2005) 
    '   Fixed memory leak on Read method
    '   Added InBufferCount property
    '   IsPortAvailable method is now shared
    '   Thanks to Jean-Pierre ZANIER for the feedback

    '===================================================  
   '// Class Members		
	Private mhRS As IntPtr = New IntPtr(0)	  '// Handle to Com Port									
   Private miPort As Integer = 1   '//  Default is COM1	
   Private miTimeout As Int32 = 70   '// Timeout in ms
   Private miBaudRate As Int32 = 9600
   Private meParity As DataParity = 0
   Private meStopBit As DataStopBit = 0
   Private miDataBit As Int32 = 8
   Private miBufferSize As Int32 = 512   '// Buffers size default to 512 bytes
   Private mabtRxBuf As Byte()   '//  Receive buffer	
   Private meMode As Mode  '//  Class working mode	
	Private moThreadTx As Thread
	Private moThreadRx As Thread
	Private moEvents As Thread
   Private miTmpBytes2Read As Int32
   Private meMask As EventMasks
   Private mbDisposed As Boolean
	Private mbUseXonXoff As Boolean
	Private mbEnableEvents As Boolean
	Private miBufThreshold As Int32 = 1
	Private muOvlE As OVERLAPPED
	Private muOvlW As OVERLAPPED
	Private muOvlR As OVERLAPPED
	Private mHE As GCHandle
	Private mHR As GCHandle
	Private mHW As GCHandle
	'----------------------------------------------------------------------------------------

#Region "Enums"
	'// Parity Data
	Public Enum DataParity
		Parity_None = 0
        Parity_Odd
		Parity_Even
		Parity_Mark
	End Enum
	'// StopBit Data
	Public Enum DataStopBit
		StopBit_1 = 1
		StopBit_2
	End Enum
	<Flags()> Public Enum PurgeBuffers
		RXAbort = &H2
		RXClear = &H8
		TxAbort = &H1
		TxClear = &H4
	End Enum
	Private Enum Lines
		SetRts = 3
		ClearRts = 4
		SetDtr = 5
		ClearDtr = 6
		ResetDev = 7		 '	// Reset device if possible
		SetBreak = 8		 '	// Set the device break line.
		ClearBreak = 9		 '	// Clear the device break line.
	End Enum
	'// Modem Status
	<Flags()> Public Enum ModemStatusBits
		ClearToSendOn = &H10
		DataSetReadyOn = &H20
		RingIndicatorOn = &H40
		CarrierDetect = &H80
	End Enum
	'// Working mode
	Public Enum Mode
		NonOverlapped
		Overlapped
	End Enum
	'// Comm Masks
	<Flags()> Public Enum EventMasks
		RxChar = &H1
		RXFlag = &H2
		TxBufferEmpty = &H4
		ClearToSend = &H8
		DataSetReady = &H10
		CarrierDetect = &H20
		Break = &H40
		StatusError = &H80
		Ring = &H100
	End Enum

#End Region
#Region "Structures"
	<StructLayout(LayoutKind.Sequential, Pack:=1)> Private Structure DCB
		Public DCBlength As Int32
		Public BaudRate As Int32
		Public Bits1 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 Char
		Public XoffChar As Char
		Public ErrorChar As Char
		Public EofChar As Char
		Public EvtChar As Char
		Public wReserved2 As Int16
	End Structure
	<StructLayout(LayoutKind.Sequential, Pack:=1)> Private Structure COMMTIMEOUTS
		Public ReadIntervalTimeout As Int32
		Public ReadTotalTimeoutMultiplier As Int32
		Public ReadTotalTimeoutConstant As Int32
		Public WriteTotalTimeoutMultiplier As Int32
		Public WriteTotalTimeoutConstant As Int32
	End Structure
    <StructLayout(LayoutKind.Sequential, Pack:=8)> Private Structure COMMCONFIG
        Public dwSize As Int32
        Public wVersion As Int16
        Public wReserved As Int16
        Public dcbx As DCB
        Public dwProviderSubType As Int32
        Public dwProviderOffset As Int32
        Public dwProviderSize As Int32
        Public wcProviderData As Int16
    End Structure
    <StructLayout(LayoutKind.Sequential, Pack:=1)> Public Structure OVERLAPPED
        Public Internal As Int32
        Public InternalHigh As Int32
        Public Offset As Int32
        Public OffsetHigh As Int32
        Public hEvent As IntPtr
    End Structure
    <StructLayout(LayoutKind.Sequential, Pack:=1)> Private Structure COMSTAT
        Dim fBitFields As Int32
        Dim cbInQue As Int32
        Dim cbOutQue As Int32
    End Structure

#End Region
#Region "Constants"
	Private Const PURGE_RXABORT As Integer = &H2
	Private Const PURGE_RXCLEAR As Integer = &H8
	Private Const PURGE_TXABORT As Integer = &H1
	Private Const PURGE_TXCLEAR As Integer = &H4
	Private Const GENERIC_READ As Integer = &H80000000
	Private Const GENERIC_WRITE As Integer = &H40000000
	Private Const OPEN_EXISTING As Integer = 3
	Private Const INVALID_HANDLE_VALUE As Integer = -1
	Private Const IO_BUFFER_SIZE As Integer = 1024
	Private Const FILE_FLAG_OVERLAPPED As Int32 = &H40000000
	Private Const ERROR_IO_PENDING As Int32 = 997
	Private Const WAIT_OBJECT_0 As Int32 = 0
	Private Const ERROR_IO_INCOMPLETE As Int32 = 996
	Private Const WAIT_TIMEOUT As Int32 = &H102&
	Private Const INFINITE As Int32 = &HFFFFFFFF


#End Region
#Region "Win32API"
	'// Win32 API
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function SetCommState(ByVal hCommDev As IntPtr, ByRef lpDCB As DCB) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function GetCommState(ByVal hCommDev As IntPtr, ByRef lpDCB As DCB) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True, CharSet:=CharSet.Auto)> Private Shared Function BuildCommDCB(ByVal lpDef As String, ByRef lpDCB As DCB) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function SetupComm(ByVal hFile As IntPtr, ByVal dwInQueue As Int32, ByVal dwOutQueue As Int32) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function SetCommTimeouts(ByVal hFile As IntPtr, ByRef lpCommTimeouts As COMMTIMEOUTS) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function GetCommTimeouts(ByVal hFile As IntPtr, ByRef lpCommTimeouts As COMMTIMEOUTS) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function ClearCommError(ByVal hFile As IntPtr, ByRef lpErrors As Int32, ByRef lpComStat As COMSTAT) As Int32
   End Function
   <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function PurgeComm(ByVal hFile As IntPtr, ByVal dwFlags As Int32) As Int32
   End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function EscapeCommFunction(ByVal hFile As IntPtr, ByVal ifunc As Int32) As Boolean
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function WaitCommEvent(ByVal hFile As IntPtr, ByRef Mask As EventMasks, ByRef lpOverlap As OVERLAPPED) As Int32
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function WriteFile(ByVal hFile As IntPtr, ByVal Buffer As Byte(), ByVal nNumberOfBytesToWrite As Integer, ByRef lpNumberOfBytesWritten As Integer, ByRef lpOverlapped As OVERLAPPED) As Integer
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function ReadFile(ByVal hFile As IntPtr, <Out()> ByVal Buffer As Byte(), ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesRead As Integer, ByRef lpOverlapped As OVERLAPPED) As Integer
    End Function
    <DllImport("kernel32.dll", SetlastError:=True, CharSet:=CharSet.Auto)> Private Shared Function CreateFile(ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As IntPtr
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function CloseHandle(ByVal hObject As IntPtr) As Boolean
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Public Shared Function GetCommModemStatus(ByVal hFile As IntPtr, ByRef lpModemStatus As Int32) As Boolean
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function SetEvent(ByVal hEvent As IntPtr) As Boolean
    End Function
    <DllImport("kernel32.dll", SetlastError:=True, CharSet:=CharSet.Auto)> Private Shared Function CreateEvent(ByVal lpEventAttributes As IntPtr, ByVal bManualReset As Int32, ByVal bInitialState As Int32, ByVal lpName As String) As IntPtr
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function WaitForSingleObject(ByVal hHandle As IntPtr, ByVal dwMilliseconds As Int32) As Int32
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function GetOverlappedResult(ByVal hFile As IntPtr, ByRef lpOverlapped As OVERLAPPED, ByRef lpNumberOfBytesTransferred As Int32, ByVal bWait As Int32) As Int32
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function SetCommMask(ByVal hFile As IntPtr, ByVal lpEvtMask As Int32) As Int32
    End Function
    <DllImport("kernel32.dll", SetlastError:=True, CharSet:=CharSet.Auto)> Private Shared Function GetDefaultCommConfig(ByVal lpszName As String, ByRef lpCC As COMMCONFIG, ByRef lpdwSize As Integer) As Boolean
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function SetCommBreak(ByVal hFile As IntPtr) As Boolean
    End Function
    <DllImport("kernel32.dll", SetlastError:=True)> Private Shared Function ClearCommBreak(ByVal hFile As IntPtr) As Boolean
    End Function


#End Region
#Region "Events"
	Public Event CommEvent As CommEventHandler
#End Region
#Region "Delegates"
	Public Delegate Sub CommEventHandler(ByVal source As Rs232, ByVal Mask As EventMasks)
#End Region

	Public Property Port() As Integer
		'===================================================
		'
		'		Description	:		Comunication Port
		'		Created			:		21/09/2001 - 11:25:49
		'
		'												*Parameters Info*
		'
		'		Notes				:
		'===================================================
		Get
			Return miPort
		End Get
		Set(ByVal Value As Integer)
			miPort = Value
		End Set
	End Property
	Public Sub PurgeBuffer(ByVal Mode As PurgeBuffers)
		'===================================================
		'												

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级韩国三级日本三斤| 捆绑变态av一区二区三区| 一区二区三区欧美| 日韩精彩视频在线观看| 精品在线观看视频| 91在线视频观看| 欧美一二区视频| 国产精品色婷婷| 偷拍亚洲欧洲综合| 国产成人精品午夜视频免费| 91福利精品第一导航| 精品1区2区在线观看| 日韩一区欧美小说| 看电视剧不卡顿的网站| av不卡免费在线观看| 欧美精品九九99久久| 国产精品激情偷乱一区二区∴| 亚洲一级二级在线| 国产精品1024久久| 欧美一区二区视频在线观看| 国产精品久久久久三级| 毛片一区二区三区| 在线观看亚洲成人| 国产精品久久影院| 蜜桃精品视频在线观看| 色综合久久中文字幕综合网| 精品少妇一区二区三区日产乱码 | 亚洲精品第1页| 国产一区二区在线电影| 欧美精品日日鲁夜夜添| 亚洲欧洲av在线| 精品亚洲国产成人av制服丝袜| 91福利资源站| 国产精品看片你懂得| 国内成人精品2018免费看| 欧美日韩免费观看一区二区三区| 国产日本亚洲高清| 免费一级片91| 欧美日韩专区在线| 综合久久久久久久| 国产成人免费视频精品含羞草妖精| 欧美高清视频不卡网| 亚洲日本电影在线| 国产一区二区福利| 精品国产一区二区三区不卡 | 在线免费精品视频| 国产精品日产欧美久久久久| 国内精品久久久久影院一蜜桃| 欧美日韩一区高清| 亚洲欧美一区二区三区久本道91| 国产精品一区在线观看你懂的| 日韩一区二区三区精品视频| 亚洲国产精品一区二区久久恐怖片| 99精品欧美一区二区三区小说| 国产偷国产偷精品高清尤物| 精品一区二区国语对白| 日韩欧美亚洲一区二区| 亚洲成人资源在线| 色婷婷av一区二区三区gif| 国产精品青草久久| 国产精品羞羞答答xxdd| 久久中文娱乐网| 国产一区二区在线看| 久久丝袜美腿综合| 激情综合色综合久久综合| 日韩一区二区高清| 免费观看久久久4p| 日韩一区二区三区观看| 捆绑紧缚一区二区三区视频| 91精品国产高清一区二区三区蜜臀| 亚洲在线成人精品| 在线欧美一区二区| 亚洲国产中文字幕在线视频综合 | 午夜精品一区二区三区电影天堂| 欧美特级限制片免费在线观看| 一区二区高清免费观看影视大全| 91蜜桃婷婷狠狠久久综合9色| 最好看的中文字幕久久| 91免费国产视频网站| 亚洲日本va午夜在线影院| 色综合天天综合在线视频| 亚洲女女做受ⅹxx高潮| 色综合欧美在线| 亚洲影视在线观看| 7777精品伊人久久久大香线蕉完整版 | 亚洲成人激情av| 欧美二区乱c少妇| 久久成人18免费观看| 精品国产伦一区二区三区观看方式| 国产精品91xxx| 国产精品五月天| 91免费版pro下载短视频| 亚洲成人一区在线| 日韩精品在线一区二区| 国产精品综合网| 国产精品久久久久影院老司 | 亚洲一区二区三区四区在线观看| 欧美色图激情小说| 久久国产剧场电影| 亚洲国产成人一区二区三区| 97久久超碰精品国产| 天堂va蜜桃一区二区三区漫画版 | 国产麻豆精品在线观看| 国产精品免费看片| 欧美日韩精品高清| 国产精品综合视频| 亚洲综合色噜噜狠狠| 日韩免费高清电影| 91亚洲精品乱码久久久久久蜜桃| 亚洲国产va精品久久久不卡综合| 欧美大片在线观看| 91亚洲精华国产精华精华液| 午夜精品久久久久影视| 精品国产3级a| 欧洲一区二区三区在线| 精品一区二区在线免费观看| 国产精品久久久久影院| 欧美一区二区三区在线视频| 成人黄页毛片网站| 日本色综合中文字幕| 国产精品福利一区二区| 6080日韩午夜伦伦午夜伦| 成人午夜又粗又硬又大| 午夜视频在线观看一区二区三区| 久久综合狠狠综合久久综合88 | 亚洲成人av中文| 久久这里只精品最新地址| 色狠狠一区二区三区香蕉| 九色porny丨国产精品| 国产精品久久久久久久久快鸭| 欧美日韩成人综合在线一区二区| 国产剧情一区二区三区| 日韩精品视频网| 亚洲欧美日韩中文播放| 精品国产乱码久久久久久影片| 色久综合一二码| 东方欧美亚洲色图在线| 麻豆久久久久久久| 亚洲一区二区高清| 中文字幕日韩一区| 精品毛片乱码1区2区3区| 欧美优质美女网站| 成人蜜臀av电影| 激情久久久久久久久久久久久久久久| 亚洲精品伦理在线| 中文字幕精品一区二区三区精品| 91精品国产综合久久福利软件| 色综合久久久久综合99| 国产99精品在线观看| 久久国产三级精品| 亚洲va天堂va国产va久| 亚洲视频一区二区免费在线观看| 2021国产精品久久精品| 91麻豆精品国产自产在线观看一区| 色综合久久久久综合99| 欧美极品美女视频| 精品久久国产老人久久综合| 欧美亚州韩日在线看免费版国语版 | 欧美三级日韩三级| 成人黄色片在线观看| 国产精品影视天天线| 久久精品国产一区二区三区免费看| 亚洲一级电影视频| 亚洲人一二三区| 亚洲日本在线天堂| 国产精品免费视频观看| 欧美激情综合网| 久久久国产精品不卡| 久久香蕉国产线看观看99| 日韩午夜精品视频| 日韩免费在线观看| 日韩免费电影一区| 欧美不卡一区二区三区四区| 欧美一区二区三区的| 91精品国产全国免费观看| 欧美美女直播网站| 欧美视频一区二区在线观看| 欧美亚洲动漫另类| 欧美日韩一区中文字幕| 精品视频在线免费观看| 欧美男生操女生| 4hu四虎永久在线影院成人| 91 com成人网| 91精品国产欧美一区二区| 日韩欧美黄色影院| 欧美成人bangbros| 久久久午夜精品理论片中文字幕| 26uuu精品一区二区 | 成人伦理片在线| caoporm超碰国产精品| 99精品视频在线观看免费| 91丨porny丨中文| 在线观看视频一区二区欧美日韩| 欧美三级日韩在线| 91精品视频网| 久久蜜桃av一区二区天堂| 日本一区二区在线不卡| 亚洲色图在线播放| 亚洲18色成人| 久久aⅴ国产欧美74aaa|