Форумы  ·  Войти  · 

Тема: Проблема с Ldk-100 и Tapi

01.12.06 12:37   Antonariy  (10/05.09.06)  

На сервере настроено 3rd party соединение с атс, пытаюсь писать софт на VB. Не получается правильно инициализировать тапи - события не приходят. Пробовал и hidden window и events и самые разные версии тапи - результат нулевой. C атс, драйверами и т.п. все в порядке, это кривые руки. Трейсер стороннего производителя прекрасно все ловит.

Код такой

‘в форме
Private Sub Form_Load()
  InitializeTAPI
End Sub

‘в модуле
Option Explicit
Private Declare Function lineInitializeEx Lib “tapi32.dll” Alias “lineInitializeExA” (ByRef lphLineApp As Long, ByVal hInstance As Long, ByVal lpfnCallback As Long, ByVal lpszFriendlyAppName As String, ByRef lpdwNumDevs As Long, ByRef lpdwAPIVersion As Long, ByRef lpLineInitializeExParams As LINEINITIALIZEEXPARAMS) As Long

Private Type LINEINITIALIZEEXPARAMS
  dwTotalSize As Long
  dwNeededSize As Long
  dwUsedSize As Long
  dwOptions As Long
  hEvent As Long
  dwCompletionKey As Long
End Type

Private hTAPI As Long
Private lLowAPI As Long
Private lHiAPI As Long
Private lLinesCount As Long

Public Function InitializeTAPI() As Boolean
Dim rc As Long
Dim Lip As LINEINITIALIZEEXPARAMS
  Lip.dwTotalSize = Len(Lip)
  Lip.dwOptions = 1 ‘LINEINITIALIZEEXOPTION_USEHIDDENWINDOW
  lLowAPI = &H10003; ‘1.3
  lHiAPI = &H20001; ‘2.1
  rc = lineInitializeEx(hTAPI, App.hInstance, AddressOf LineCallbackProc, App.Title, _
      lLinesCount, lHiAPI, Lip)
  InitializeTAPI = rc = 0
End Function

Public Sub LineCallbackProc(ByVal hDevice As Long, ByVal dwMsg As Long, _
  ByVal dwCallbackInstance As Long, ByVal dwParam1 As Long, ByVal dwParam2 As Long, ByVal dwParam3 As Long)
  Debug.Print dwMsg
End Sub

[ #1 ]  05.12.06 7:23   0xALLeX  (125/07.03.05)  

Создано Antonariy
Пробовал и hidden window и events и самые разные версии тапи - результат нулевой.

USEHIDDENWINDOW не помню пробовал или нет, а USEEVENT работает ок с LDK TSP.

[ #2 ]  05.12.06 10:19   Antonariy  (10/05.09.06)  

USEEVENT я тоже пробовал.
После lineInitializeEx запускал WaitForSingleObject lip.hEvent, -1 и так ничего и не дождался.

[ #3 ]  05.12.06 22:30   0xALLeX  (125/07.03.05)  

Ну не знаю.. Выводы можно сделать только увидев ваш код. (Повторяю: за метод hidden window ручатся не могу, а useevent в моем коде прекрасно работает.)

Хинт насчет hidden window (MSDN):

When the message is received (which can happen only when the application calls the Windows GetMessage function), Windows switches the process context..

[ #4 ]  06.12.06 10:09   Antonariy  (10/05.09.06)  

Да ради бога.
Public Function InitializeTAPI() As Boolean
Dim rc As Long
Dim Lip As LINEINITIALIZEEXPARAMS
  Lip.dwTotalSize = Len(Lip)
  Lip.dwOptions = 2 ‘LINEINITIALIZEEXOPTION_USEEVENT
  lLowAPI = &H10003; ‘1.3
  lHiAPI = &H20001; ‘2.1
  rc = lineInitializeEx(hTAPI, App.hInstance, AddressOf LineCallbackProc, App.Title, _
lLinesCount, lHiAPI, Lip)
  If rc = 0 Then rc = WaitForSingleObject(lip.hEvent, -1)
End Function

Хотелось бы увидеть код, который железно работает у вас. Добавлю, все это делается под 2003м сервером.

[ #5 ]  06.12.06 11:03   0xALLeX  (125/07.03.05)  

rc = lineInitializeEx(hTAPI, App.hInstance, NULL, App.Title, _
lLinesCount, lHiAPI, Lip)

Так попробуйте.

Мой код могу выслать по емайл (код на asm’е если не смущает...)

[ #6 ]  06.12.06 16:45   Antonariy  (10/05.09.06)  

Для LINEINITIALIZEEXOPTION_USEEVENT третий параметр игнорируется... так что null, не null…

Асм смущает. На чем-нибудь другом нет? Или для начала какой-нибудь exe-шник, который как-то сообщит, если что-то поймает. anton на gisoft в ru

[ #7 ]  07.12.06 11:46   0xALLeX  (125/07.03.05)  

Есть ещё исходники на С++. Насчет экзешника, вас чем то не устраивает -

Создано Antonariy
Трейсер стороннего производителя..

? Зачем нужен ещё один? Как поможет exe побороть проблему в ваших исходниках?

[ #8 ]  08.12.06 10:31   Antonariy  (10/05.09.06)  

Не устраивает тем, что не могу посмотреть его исходников. А невбшные исходники не смогу откомпилировать, чтобы проверить работоспособность. Если то, что вы пришлете заработает, я в точности повторю на вб. Если на вб опять не заработает, значит это он виноват каким-то боком, попробую под .net.

[ #9 ]  08.12.06 12:12   0xALLeX  (125/07.03.05)  

Т. е. exe + исходники на cpp подойдет? Высылать?

[ #10 ]  08.12.06 13:50   Antonariy  (10/05.09.06)  

Да!)
А если что, то вы сможете проверить мой exe у себя?

[ #11 ]  08.12.06 14:33   0xALLeX  (125/07.03.05)  

Ответ ушел почтой.

[ #12 ]  08.12.06 14:45   Antonariy  (10/05.09.06)  

Спасибо, буду пробовать.

Komendant.pro
 ©1999-2025  Инженерная лаборатория "Комендантъ"