
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Сообщ.
#1
,
|
|
|
День добрый.
Есть проблема, не могу нормально разорвать соединение ЖПРС на телефоне при связке КПК 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 ![]() ![]() 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 |