На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Проблема c GPRS ConnMgrReleaseConnection WM6 + телефон Samsung , Проблема c GPRS ConnMgrReleaseConnection WM6 + телефон Samsung
    День добрый.
    Есть проблема, не могу нормально разорвать соединение ЖПРС на телефоне при связке КПК WM6 и телефона модели Samsung
    Подключаюсь к Интернет через телефон (bluetooth) со своего приложения при помощи ConnMgrEstablishConnectionSync
    Происходит коннект, отправка данных и дисконект. ЖПРС на телефоне и передача данных на КПК после команды ConnMgrReleaseConnection отключается. Тестировал на аппаратах
    ipaq 2410 (WM 2003 SE)
    ipaq 2490 (WM5)
    в связке со многими моделями телефонов (в том числе и с samsung). И все было ОК.
    Когда попытался проделать это с КПК
    ipaq 114 (WM6) и телефон samsung (c5212 и e250) то первый коннект проходит. Потом после команды ConnMgrEstablishConnectionSync на телефоне пропадает значок соединения с GPRS, а на КПК не пропадает соединение. При попытке еще раз соединится, и отправить данные, долго висит и вываливается с ошибками. Тестировал с разными моделями Nokia и Motorola - все работает. Буду благодарен помощи в решении этой проблемы.

    Net CF 2
    VS 2008
    VBNet

    ExpandedWrap disabled
      Imports System.IO
      Imports System.Threading
      Imports System.Runtime.InteropServices
       
      Module Module_GPRSConnection
       
          Public Function GPRSConnectionSetup() As Boolean
       
              Dim t As String = System.IO.Path.AltDirectorySeparatorChar.ToString() + System.IO.Path.DirectorySeparatorChar.ToString()
              Dim url As String = "www.msn.com"
              GPRSConnectionSetup = GPRSConnection.Setup(Uri.UriSchemeHttp + Uri.SchemeDelimiter + url + Path.AltDirectorySeparatorChar)
       
          End Function
       
          Public Sub GPRSConnectionRelease()
              GPRSConnection.ReleaseAll()
          End Sub
       
       
          Public Class GPRSConnection
       
              Const S_OK As Integer = 0
              Const CONNMGR_PARAM_GUIDDESTNET As Integer = &H1
              Const CONNMGR_FLAG_PROXY_HTTP As Integer = &H1
              Const CONNMGR_PRIORITY_USERINTERACTIVE As Integer = &H8000
              Const INFINITE As UInteger = &HFFFFFFFFUI
              Const CONNMGR_STATUS_CONNECTED As Integer = &H10
              Shared ht As New Hashtable()
       
              Shared Sub New()
                  Dim mre As New ManualResetEvent(False)
                  mre.Handle = ConnMgrApiReadyEvent()
                  mre.WaitOne()
                  CloseHandle(mre.Handle)
              End Sub
       
              Protected Overrides Sub Finalize()
                  Try
                      ReleaseAll()
                  Finally
                      MyBase.Finalize()
                  End Try
              End Sub
       
              Public Shared Function Setup(ByVal url As Uri) As Boolean
                  Return Setup(url.ToString())
              End Function
       
              Public Shared Function Setup(ByVal urlStr As String) As Boolean
                  Dim ci As New ConnectionInfo()
                  Dim phConnection As IntPtr = IntPtr.Zero
                  Dim status As Integer = 0
       
                  If ht(urlStr) IsNot Nothing Then
                      Return True
                  End If
       
                  If ConnMgrMapURL(urlStr, ci.guidDestNet, IntPtr.Zero) <> S_OK Then
                      Return False
                  End If
       
                  ci.cbSize = CUInt(Marshal.SizeOf(ci))
                  ci.dwParams = CONNMGR_PARAM_GUIDDESTNET
                  ci.dwFlags = CONNMGR_FLAG_PROXY_HTTP
                  ci.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE
                  ci.bExclusive = 0
                  ci.bDisabled = 0
                  ci.hWnd = IntPtr.Zero
                  ci.uMsg = 0
                  ci.lParam = 0
       
                  If ConnMgrEstablishConnectionSync(ci, phConnection, INFINITE, status) <> S_OK AndAlso status <> CONNMGR_STATUS_CONNECTED Then
                      Return False
                  End If
       
                  ht(urlStr) = phConnection
                  Return True
              End Function
       
              Public Shared Function Release(ByVal url As Uri) As Boolean
                  Return Release(url.ToString())
              End Function
       
              Public Shared Function Release(ByVal urlStr As String) As Boolean
                  Return Release(urlStr, True)
              End Function
       
              Private Shared Function Release(ByVal urlStr As String, ByVal removeNode As Boolean) As Boolean
                  Dim res As Boolean = True
                  Dim ph As IntPtr = IntPtr.Zero
                  If ht(urlStr) Is Nothing Then
                      Return True
                  End If
                  ph = DirectCast(ht(urlStr), IntPtr)
                  If ConnMgrReleaseConnection(ph, 0) <> S_OK Then
                      res = False
                  End If
                  CloseHandle(ph)
                  If removeNode Then
                      ht.Remove(urlStr)
                  End If
                  Return res
              End Function
       
              Public Shared Sub ReleaseAll()
                  For Each de As DictionaryEntry In ht
                      Release(DirectCast(de.Key, String), False)
                  Next
                  ht.Clear()
              End Sub
       
              <StructLayout(LayoutKind.Sequential)> _
              Public Structure ConnectionInfo
                  Public cbSize As Integer
                  Public dwParams As Integer
                  Public dwFlags As Integer
                  Public dwPriority As Integer
                  Public bExclusive As Integer
                  Public bDisabled As Integer
                  Public guidDestNet As Guid
                  Public hWnd As IntPtr
                  Public uMsg As Integer
                  Public lParam As Integer
                  Public ulMaxCost As Integer
                  Public ulMinRcvBw As Integer
                  Public ulMaxConnLatency As Integer
              End Structure
       
              <DllImport("cellcore.dll")> _
              Private Shared Function ConnMgrMapURL(ByVal pwszURL As String, ByRef pguid As Guid, ByVal pdwIndex As IntPtr) As Integer
              End Function
       
              <DllImport("cellcore.dll")> _
              Private Shared Function ConnMgrEstablishConnectionSync(ByRef ci As ConnectionInfo, ByRef phConnection As IntPtr, ByVal dwTimeout As UInteger, ByRef pdwStatus As Integer) As Integer
              End Function
       
              <DllImport("cellcore.dll")> _
              Private Shared Function ConnMgrApiReadyEvent() As IntPtr
              End Function
       
              <DllImport("cellcore.dll")> _
              Private Shared Function ConnMgrReleaseConnection(ByVal hConnection As IntPtr, ByVal bCache As Integer) As Integer
              End Function
       
              <DllImport("coredll.dll")> _
              Private Shared Function CloseHandle(ByVal hObject As IntPtr) As Integer
              End Function
          End Class
       
       
      End Module
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0596 ]   [ 16 queries used ]   [ Generated: 8.07.25, 03:33 GMT ]