|
GRUPOS DE DISCUSSÃO PROFISSIONAL WINDEV, WEBDEV e WINDEV Mobile |
| | | | | |
[WM14] Activation GPRS via Connection manager |
Iniciado por Olivier, jan., 08 2010 12:52 AM - 5 respostas |
| |
| | | |
|
| |
Publicado em janeiro, 08 2010 - 12:52 AM |
Bonjour,
Lorsqu'on utilise Internet Explorer sous Windows Mobile, il lance automatiquement la connexion GPRS (si necessaire), c'est le principe de Connection Manager qui gère l'ouverture du meilleur "tuyau" disponible pour faire passer le trafic IP.
Sous Windev Mobile, lorsqu'on fait une requete (simulation d'un ping via l'ouverture d'une socket par exemple) le connection manager ne semble pas sollicité et l'ouverture de la connection GPRS ne se fait pas.
Y'a t'il une solution pour contourner cela ?
Merci pour le coup de main,
PS: je sais qu'il existe une fonction de connection sous Windev, mais elle est synchrone et c'est finalement pas interessant pour nos utilisateurs d'être bloqué pendant l'envoi de données qui normalement se fait en tache de fond... |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 15 2010 - 4:11 PM |
Bonjour,
En fait je vous recommande cette solution qui fonctionne dans mon cas :
1- utiliser NetListeAccèsDistant() pour lister toutes les connexions disponibles sur le PDA 2- utiliser NetInfoAccèsDistant() pour vérifier si la connexion que vous voulez utiliser est deja montée (dans mon cas les PDA son parfois connectés au business mail) 3- Ouvrir la connexion si besoin par NetOuvreAccèsDistant() 4- si elle était fermée lorsque vous appeler votre code, vous pouvez la refermer avant la fin du programme par exemple NetFermeAccèsDistant().
Attention, la focntion d'ouverture de connexion est bloquante il me semble. Je ne pense pas qu'utiliser un thread secondaire soit une solution.
Du coup vous ne passez pas par le CommManager. A noter que l'icone de connexion GPRS/EDGE/3G n'est pas géré, vous devrez le faire vous même si besoin.
Cdt
Laurent. |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 16 2010 - 6:33 PM |
Comme je l'indiquais la fonction de connexion de Windev est effectivement bloquante, et le fait de la mettre dans un thread ne change rien: l'application se retrouve bloquée.
Par contre les tests que j'avais fait montrait que l'état de l'icone GPRS/EDGE se retrouvait impactée par la fonction de connexion Windev (PDA sous WM5.0).
Je me suis tourné vers OpenNetCF ou j'ai trouvé toutes les fonctions nécessaires pour implémenter un assemblage en C#, et ca roule.... |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 25 2010 - 9:14 AM |
Bj Laurent mon programme est comme vous indiquez (poste http://forum.pcsoft.fr/post.awp…&) est ce que vous pouvez jeter 1 coup d'oeil ? merci a+
Laurent a écrit dans le message de news <a2bd6e549c56cc3745bda1ef42fd4e54@news.pcsoft> :
Bonjour,
En fait je vous recommande cette solution qui fonctionne dans mon cas :
1- utiliser NetListeAccèsDistant() pour lister toutes les connexions disponibles sur le PDA 2- utiliser NetInfoAccèsDistant() pour vérifier si la connexion que vous voulez utiliser est deja montée (dans mon cas les PDA son parfois connectés au business mail) 3- Ouvrir la connexion si besoin par NetOuvreAccèsDistant() 4- si elle était fermée lorsque vous appeler votre code, vous pouvez la refermer avant la fin du programme par exemple NetFermeAccèsDistant().
Attention, la focntion d'ouverture de connexion est bloquante il me semble. Je ne pense pas qu'utiliser un thread secondaire soit une solution.
Du coup vous ne passez pas par le CommManager. A noter que l'icone de connexion GPRS/EDGE/3G n'est pas géré, vous devrez le faire vous même si besoin.
Cdt
Laurent.
|
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 27 2010 - 7:56 AM |
Désolé, je ne parle pas windev mais voilà ce que j'écris en delphi dotnet :
//GPRS Connection Manager [DllImport('cellcore.dll')] function ConnMgrEstablishConnectionSync(ci:ConnMgrConnectionInfo;var hConnexion:intptr;dwTimeout:uint32;var pdwStatus:uint32):int32;external; [DllImport('cellcore.dll')] function ConnMgrMapURL(pwszURL:string;var unGuid:Guid;pdwIndex:intptr):int32;external; [DllImport('cellcore.dll')] function ConnMgrReleaseConnection(hConnexion:IntPtr;bCache:int32):int32;external;
function OuvreGPRS(var hconnexion:intptr;labelaffiche:system.windows.forms.label):string; const IID_Gprs:TGuid='{adb0b001-10b5-3f39-27c6-9742e785fcd4}'; var infoconnexion:ConnMgrConnectionInfo; dwstatus:uint32; ret:int32; msg:string; begin if LabelAffiche<>nil then begin LabelAffiche.text:='Ouverture GPRS'; LabelAffiche.update; end; msg:=''; hconnexion:=intptr.zero; infoconnexion:=ConnMgrConnectionInfo.create; ret:=0; with infoconnexion do begin cbsize:=Marshal.SizeOf(typeof(ConnMgrConnectionInfo)); dwParams:=1; dwFlags:=1; dwPriority:=$2000; bExclusive:=0; bDisabled:=0; guidDestNet:=IID_Gprs; //'{adb0b001-10b5-3f39-27c6-9742e785fcd4}' for gprs (vu dans Opennetcf) //'{A1182988-0D73-439e-87AD-2A5B369F808B}' for work //'{436ef144-b4fb-4863-a041-8f905a62c572}' for internet hwnd:=intPtr.zero; uMsg:=0; lparam:=0; ulMaxCost:=0; ulMinRcvBw:=0; ulMaxConnLatency:=0; end; dwstatus:=0; try //pas mettre moins de 25000 soit 25 secondes ret:=ConnMgrEstablishConnectionSync(infoconnexion,hconnexion, 25000, dwStatus); except hconnexion:=intptr.zero; msg:='GPRS activation impossible'; end; infoconnexion:=nil; if msg='' then begin //si le ret=0 et dwstatus=16 alors on est connecté : la fonction sort dès que l'on on se connecte donc avant timeout //le retour est immédiat avec ret=0 et dwstatus=16 si on est déja connecté //quand cela ne va pas ret=-2147467259 et //si dwstatus=0 : raison inconnue // dwstatus=39 : le téléphone n'est pas activé // dwstatus=64 : le timeout d'attente doit être trop bas car 64 veut dire attente de connexion // dommage que si on rappelle à nouveau ConnMgrEstablishConnectionSync avec les mêmes // paramètres on échoue encore avec 64 alors qu'on voit les flèches du gprs bouger //msgbox(ret.tostring+' x='+dwstatus.tostring); if ret<0 then begin hconnexion:=intptr.zero; case dwstatus of 39:msg:='Téléphonie non active'; else msg:='GPRS non disponible'; end; end; end; if LabelAffiche<>nil then begin LabelAffiche.text:=''; LabelAffiche.update; end; result:=msg; end;
procedure FermeGPRS(hConnexion:intptr); //lu chez microsoft : cela ne ferme pas le gprs car microsoft considère que cela ne coute rien // de le laisser connecté car la facturation ne se fait que quand il y a des datas // le côté consommation en énergie est malheureusement oubliée !!! begin try //cela ne change rien, que l'on mette 0 ou 1 en bcache ou une autre valeur, le GPRS reste activé if hconnexion<>intptr.zero then ConnMgrReleaseConnection(hConnexion,0); except end; hconnexion:=intptr.zero; end; |
| |
| |
| | | |
|
| | |
| |
Publicado em março, 23 2010 - 3:13 PM |
bonjour, savez vous s'il est possible de détecter un streaming, ou un envoi de SMS avec l'api connection manager.
merci d'avance |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|