Работа с COM портами в VB????

Узнай цену своей работы

Формулировка задачи:

Подскажите, пожалуйста возможные способы программирования работы с СОМ портами!!! Использование MSComm мне не особенно подходит, поскольку складывается впечатление, что это дело хорошо работает лишь с модемами. Возможно есть к.л процедуры WinApi? Я побывал на многих сайтах. Для С++ и иже с ними ссылок и примеров полно, а для VB - практически ничего!!! Что за дискриминация такая???? ((

Решение задачи: «Работа с COM портами в VB????»

textual
Листинг программы
  1. Declare Function WriteFile& Lib 'kernel32' _
  2.             (ByVal hFile As Long, lpBuffer As Any, _
  3.             ByVal nNumberOfBytesToWrite&, _
  4.             lpNumberOfBytesWritten&, ByVal lpOverlapped&)
  5. Declare Function CreateFile& Lib 'kernel32' Alias 'CreateFileA' _
  6.             (ByVal lpFileName$, ByVal dwDesiredAccess&, _
  7.             ByVal dwShareMode&, ByVal lpSecurityAttributes&, _
  8.             ByVal dwCreationDisposition&, ByVal dwFlagsAndAttributes&, _
  9.             ByVal hTemplateFile&)
  10. Declare Function CloseHandle& Lib 'kernel32' (ByVal hObject&)
  11.  
  12. Declare Function FlushFileBuffers& Lib 'kernel32' (ByVal hFile&)
  13.  
  14. Function DialNumber(PhoneNumber, CommPort As String)
  15.   Const WAITSECONDS=5
  16.   Dim bModemCommand(256) As Byte, ModemCommand As String
  17.   Dim OpenPort As Long
  18.   Dim RetVal As Long, RetBytes as Long, i as integer
  19.   Dim StartTime
  20.     OpenPort = CreateFile(CommPort, &HC0000000, 0, 0, 3, 0, 0)
  21.     If OpenPort = -1 Then Exit Sub
  22.     ModemCommand = 'ATDT' & PhoneNumber & vbCrLf
  23.     For i = 0 To Len(ModemCommand) - 1
  24.         bModemCommand(i) = Asc(Mid(ModemCommand, i + 1, 1))
  25.       Next
  26.     RetVal = WriteFile(OpenPort, bModemCommand(0), _
  27.                Len(ModemCommand), RetBytes, 0)
  28.     If RetVal = 0 Then GoTo Err_DialNumber
  29.     RetVal = FlushFileBuffers(OpenPort)
  30.     StartTime = Timer
  31.       While Timer < StartTime + WAITSECONDS
  32.         DoEvents
  33.       Wend
  34.     ModemCommand = 'ATH0' & vbCrLf
  35.     For i = 0 To Len(ModemCommand) - 1
  36.         bModemCommand (i) = Asc(Mid(ModemCommand, i + 1, 1))
  37.       Next
  38.     RetVal = WriteFile(OpenPort, bModemCommand(0), _
  39.                Len(ModemCommand), RetBytes, 0)
  40.     RetVal = FlushFileBuffers(OpenPort)
  41. Err_DialNumber:
  42.     RetVal = CloseHandle(OpenPort)
  43. End Function
  44.  
  45. Буффер bModemCommand можно описать как я показывал раньше (тип buf), я там только ошибся.
  46. Надо так (буффер должен быть фиксированной длины иначе прога будет просто вылетать):
  47. Type buf
  48.   b as string*1 этом примере b as string*256)
  49. End Type

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут