读书人

VB串行通信,该怎么处理

发布时间: 2012-04-06 12:22:24 作者: rapoo

VB串行通信
高手可以看下我的程序为什么不能收发数据么?那个com_h总反回-1是为什么?


Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Type CREATE_PROCESS_DEBUG_INFO
hFile As Long
hProcess As Long
hThread As Long
lpBaseOfImage As Long
dwDebugInfoFileOffset As Long
nDebugInfoSize As Long
lpThreadLocalBase As Long
lpStartAddress As Long
lpImageName As Long
fUnicode As Integer
End Type
Private Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type

Private Sub Command1_Click()
com1_h = CreateFile("com1", (GENERIC_READ Or GENERIC_WRITE), 0, ByVal 0&, OPEN_EXISTING, 0, 0) '打开COM1串行,把其句柄传给变量COM1_H
Print com1_h
End Sub
Private Sub Command2_Click()
Dim t1 As Long
Text1.Text = String(1, "1")
' t1 = 1
WriteFile com1_h, Asc(Text1.Text), Len(Text1.Text), t1, 0
'Text1.Text = dcb0.BaudRate
'Timer2.Enabled = True
End Sub
Private Sub Command3_Click()
Dim t1 As Long
Text2.Text = String(1, "2")
' t1 = 1
ReadFile com1_h, Asc(Text2.Text), Len(Text2.Text), t1, 0

'Text1.Text = dcb0.BaudRate
'Timer2.Enabled = True
End Sub

[解决办法]
给段能用的API串口通信代码:

VB code
Option Explicit    Private ComNum As Long    Private bRead(255) As Byte    Private Type COMSTAT        fCtsHold As Long        fDsrHold As Long        fRlsdHold As Long        fXoffHold As Long        fXoffSent As Long        fEof As Long        fTxim As Long        fReserved As Long        cbInQue As Long        cbOutQue As Long    End Type    Private Type COMMTIMEOUTS        ReadIntervalTimeout As Long        ReadTotalTimeoutMultiplier As Long        ReadTotalTimeoutConstant As Long        WriteTotalTimeoutMultiplier As Long        WriteTotalTimeoutConstant As Long    End Type    Private Type DCB        DCBlength As Long        BaudRate As Long        fBinary As Long        fParity As Long        fOutxCtsFlow As Long        fOutxDsrFlow As Long        fDtrControl As Long        fDsrSensitivity As Long        fTXContinueOnXoff As Long        fOutX As Long        fInX As Long        fErrorChar As Long        fNull As Long        fRtsControl As Long        fAbortOnError As Long        fDummy2 As Long        wReserved As Integer        XonLim As Integer        XoffLim As Integer        ByteSize As Byte        Parity As Byte        StopBits As Byte        XonChar As Byte        XoffChar As Byte        ErrorChar As Byte        EofChar As Byte        EvtChar As Byte    End Type    Private Type OVERLAPPED        Internal As Long        InternalHigh As Long        offset As Long        OffsetHigh As Long        hEvent As Long    End Type        Private Type SECURITY_ATTRIBUTES        nLength As Long        lpSecurityDescriptor As Long        bInheritHandle As Long    End Type    Private sa As SECURITY_ATTRIBUTES    'Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long    Private Declare Function GetLastError Lib "kernel32" () As Long    Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long    Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As Long    Private Declare Function SetCommTimeouts Lib "kernel32" (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long    Private Declare Function GetCommTimeouts Lib "kernel32" (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long    Private Declare Function BuildCommDCB Lib "kernel32" Alias "BuildCommDCBA" (ByVal lpDef As String, lpDCB As DCB) As Long    Private Declare Function SetCommState Lib "kernel32" (ByVal hCommDev As Long, lpDCB As DCB) As Long    Private Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long    Private strData1 As String    Private strData As String    Private intOutMode As ByteEnd Sub 

读书人网 >VB

热点推荐