|
; Public Internal As Integer Public InternalHigh As Integer Public Offset As Integer Public OffsetHigh As Integer Public hEvent As Integer End Structure#End Region #Region "Windows API" <DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _ Private Shared Function CreateFile( _ ByVal lpFileName As String, _ ByVal dwDesiredAccess As UInt32, _ ByVal dwShareMode As Integer, _ ByVal lpSecurityAttributes As Integer, _ ByVal dwCreationDisposition As Integer, _ ByVal dwFlagsAndAttributes As Integer, _ ByVal hTemplateFile As Integer) As Integer End Function ''''参数介绍: ''''lpFileName 要打开的串口名称 ''''dwDesiredAccess 指定串口的访问方式,一般设置为可读可写方式 ''''dwShareMode 指定串口的共享模式,串口不能共享,所以设置为0 ''''lpSecurityAttributes 设置串口的安全属性,WIN9X下不支持,应设为NULL ''''dwCreationDisposition 对于串口通信,创建方式只能为OPEN_EXISTING ''''dwFlagsAndAttributes 指定串口属性与标志,设置为FILE_FLAG_OVERLAPPED(重叠I/O操作),指定串口以异步方式通信 ''''hTemplateFile 对于串口通信必须设置为NULL <DllImport("kernel32.dll")> _ Private Shared Function GetCommState(ByVal hFile As Integer, ByRef lpDCB As DCB) As Boolean End Function ''''参数介绍 ''''hFile 通信设备句柄 ''''DCB lpDCB 设备控制块DCB <DllImport("kernel32.dll")> _ Private Shared Function BuildCommDCB(ByVal lpDef As String, ByRef lpDCB As DCB) As Boolean End Function ''''参数介绍 ''''lpDef 设备控制字符串 ''''lpDCB 设备控制块DCB <DllImport("kernel32.dll")> _ Private Shared Function SetCommState(ByVal hfile As Integer, ByRef lpDCB As DCB) As Boolean End Function ''''参数说明 ''''hFile 通信设备句柄 ''''lpDCB 设备控制块 <DllImport("kernel32.dll")> _ Private Shared Function GetCommTimeouts(ByVal hfile As Integer, ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean End Function ''''参数说明 ''''hFile 通信设备句柄 handle to comm device ''''lpCommTimeouts 超时时间 time-out values <DllImport("kernel32.dll")> _ Private Shared Function SetCommTimeouts(ByVal hfile As Integer, ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean End Function ''''参数说明 ''''hFile 通信设备句柄 handle to comm device ''''lpCommTimeouts 超时时间 time-out values <DllImport("kernel32.dll")> _ Private Shared Function ReadFile(ByVal hFile As Integer, ByVal lpBuffer() As Byte, _ ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesRead As Integer, _ ByRef lpOverlapped As OVERLAPPED) As Boolean End Function ''''参数说明 ''''hFile 通信设备句柄 handle to file ''''lpBuffer 数据缓冲区 data buffer ''''nNumberOfBytesToRead 多少字节等待读取 number of bytes to read ''''lpNumberOfBytesRead 读取多少字节 number of bytes read ''''lpOverlapped 溢出缓冲区 overlapped buffer <DllImport("kernel32.dll")> _ Private Shared Function WriteFile(ByVal hFile As Integer, ByVal lpBuffer() As Byte, _ ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesWritten As Integer, _ ByRef lpOverlapped As OVERLAPPED) As Boolean End Function ''''参数介绍 ''''hFile 通信设备句柄 handle to file ''''lpBuffer 数据缓冲区 data buffer ''''nNumberOfBytesToWrite 多少字节等待写入 number of bytes to write ''''lpNumberOfBytesWritten 已经写入多少字节 number of bytes written ''''lpOverlapped 溢出缓冲区 overlapped buffer <DllImport("kernel32.dll")> _ Private Shared Function CloseHandle(ByVal hObject As Integer) As Boolean End Function ''''参数hObject 要被关闭的句柄 handle to object <DllImport("kernel32.dll")> _ Private Shared Function GetLastError() As UInt32 End Function #End Region Public Sub open() Dim dcbCommPort As New DCB Dim ctoCommPort As New COMMTIMEOUTS ''''// 打开串口 OPEN THE COMM PORT. hComm = CreateFile(PortNum, UInt32.Parse(GENERIC_READ Or GENERIC_WRITE), 0, 0, OPEN_EXISTING, 0, 0) ''''// 如果串口没有打开,就打开 IF THE PORT CANNOT BE OPENED, BAIL OUT. If hComm = INVALID_HANDLE_VALUE Then Throw (New ApplicationException("非法操作,不能打开串口!")) End If ''''// 设置通信超时时间 SET THE COMM TIMEOUTS. GetCommTimeouts(hComm, ctoCommPort) ''''ref ctoCommPort.ReadTotalTimeoutConstant = ReadTimeout ctoCommPort.ReadTotalTimeoutMultiplier = 0 ctoCommPort.WriteTotalTimeoutMultiplier = 0 ctoCommPort.WriteTotalTimeoutConstant = 0 SetCommTimeouts(hComm, ctoCommPort) ''''ref ''''// 设置串口 SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS. GetCommState(hComm, dcbCommPort) ''''ref dcbCommPort.BaudRate = BaudRate dcbCommPort.flags = 0 ''''//dcb.fBinary=1; &nbs 上一页 [1] [2] [3] 下一页 [C语言系列]NET 中C#的switch语句的语法 [系统软件]托拽Explore中的文件到VB.net的窗口 [系统软件]Boost库在XP+Visual C++.net中的安装 [常用软件]新配色面板:Paint.Net3.0RC1官方下载 [常用软件]用内建的“Net Meeting”聊天 [VB.NET程序]Henry的VB.NET之旅(三)—共享成员 [VB.NET程序]Henry的VB.NET之旅(二)—构造与析构 [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体 [VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET) [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
|