Работа с COM портами в VB????
Формулировка задачи:
Подскажите, пожалуйста возможные способы программирования работы с СОМ портами!!!
Использование MSComm мне не особенно подходит, поскольку складывается впечатление, что это дело
хорошо работает лишь с модемами. Возможно есть
к.л процедуры WinApi?
Я побывал на многих сайтах. Для С++ и иже с ними
ссылок и примеров полно, а для VB - практически ничего!!! Что за дискриминация такая???? ((
Решение задачи: «Работа с COM портами в VB????»
textual
Листинг программы
Declare Function WriteFile& Lib 'kernel32' _ (ByVal hFile As Long, lpBuffer As Any, _ ByVal nNumberOfBytesToWrite&, _ lpNumberOfBytesWritten&, ByVal lpOverlapped&) Declare Function CreateFile& Lib 'kernel32' Alias 'CreateFileA' _ (ByVal lpFileName$, ByVal dwDesiredAccess&, _ ByVal dwShareMode&, ByVal lpSecurityAttributes&, _ ByVal dwCreationDisposition&, ByVal dwFlagsAndAttributes&, _ ByVal hTemplateFile&) Declare Function CloseHandle& Lib 'kernel32' (ByVal hObject&) Declare Function FlushFileBuffers& Lib 'kernel32' (ByVal hFile&) Function DialNumber(PhoneNumber, CommPort As String) Const WAITSECONDS=5 Dim bModemCommand(256) As Byte, ModemCommand As String Dim OpenPort As Long Dim RetVal As Long, RetBytes as Long, i as integer Dim StartTime OpenPort = CreateFile(CommPort, &HC0000000, 0, 0, 3, 0, 0) If OpenPort = -1 Then Exit Sub ModemCommand = 'ATDT' & PhoneNumber & vbCrLf For i = 0 To Len(ModemCommand) - 1 bModemCommand(i) = Asc(Mid(ModemCommand, i + 1, 1)) Next RetVal = WriteFile(OpenPort, bModemCommand(0), _ Len(ModemCommand), RetBytes, 0) If RetVal = 0 Then GoTo Err_DialNumber RetVal = FlushFileBuffers(OpenPort) StartTime = Timer While Timer < StartTime + WAITSECONDS DoEvents Wend ModemCommand = 'ATH0' & vbCrLf For i = 0 To Len(ModemCommand) - 1 bModemCommand (i) = Asc(Mid(ModemCommand, i + 1, 1)) Next RetVal = WriteFile(OpenPort, bModemCommand(0), _ Len(ModemCommand), RetBytes, 0) RetVal = FlushFileBuffers(OpenPort) Err_DialNumber: RetVal = CloseHandle(OpenPort) End Function Буффер bModemCommand можно описать как я показывал раньше (тип buf), я там только ошибся. Надо так (буффер должен быть фиксированной длины иначе прога будет просто вылетать): Type buf b as string*1 (в этом примере b as string*256) End Type
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д