2011-01-31 7 views
0

私は、Windows CE 6を持つPDAでGPRS接続を作成する必要があります。今は通常、製造元のDLLを使用して作成する必要があります彼らはこれを達成するためにrasを使用しています。それを使用する唯一の問題は、私のプログラムは.net c#であり、ライブラリはアンマネージコード1です。opennetcfとの永続的なRAS接続の作成Windows CE 6.0のRas

幸運にも私はopenNetcf rasライブラリにアクセスしました。これは、すでにWindows rasライブラリに必要なpInvokesを提供しています。唯一の問題は、貧弱なドキュメントです。

Windowsで必要なGPRS接続を呼び出してセットアップするライブラリを作成しました。私は以下の定義を使用してポルトガルテレコムオペレータ使用しています:

Operator Name: Optimus P 
Apn: umts 
Password: ******* 
User: ****** 

は、GSMモジュールの定義をコンサルティングし、私は次のモデム設定を持っていた:

Connection Name: GPRS 
Device: Hayes Compatible on COM1: 
Baund Rate:115200 
Data Bits: 8 
Parity:1 
Stop Bits: 1 
Flow Control: Hardware 

そしてもちろん、余分な設定(またはどのように私は、コントロールパネルを使用し、そのプロファイルに接続しないとき、それは接続して、私はすべてのWebサービスを呼び出すことができるよ。この設定

+cgdcont=1, "ip", "umts" 

)atCallそれを呼び出しますエラーを出します。また、デバイスの設定(ipaddress、サブネットマスク、デフォルトゲートウェイなど)を示すモデムの追加プロファイルも表示されます。

問題は、プログラムでgprs接続を作成し、Webサービスをある時点で呼び出すと、Web例外がスローされます。リモート名を解決できなかったということです。私もチェックして余分なアイコンは表示されませんが、GPRSステータスが表示されている場合は、接続されているように表示されます。

作成するコード、破壊して、クエリ、接続が存在する場合は、次のとおりです。

using System; 
using System.Linq; 
using System.Collections.Generic; 
using System.Text; 
using OpenNETCF.Net; 
using OpenNETCF.Diagnostics; 

namespace gsmAdapterNet 
{ 
/// <summary> 
/// GPRS Connection class 
/// </summary> 
public class GPRS 
{ 
    private static string connectionName = "GPRS"; 


    /// <summary> 
    /// Connects the GPRS. 
    /// </summary> 
    /// <returns></returns> 
    public static bool ConnectGPRS() 
    { 

      //precisamos de obter as connecoes e ligar 

      RasEntryCollection connecoesPossiveis = Ras.Entries; 
      RasEntry _currentEntry = connecoesPossiveis[connectionName]; 
      _currentEntry.RasStatus += new RasNotificationHandler(RasStatusHandler); 
      RasError resultado = _currentEntry.Dial(false); 
      if (resultado == RasError.Success) 
       return true; 
      else 
       return false; 


    } 

    static void RasStatusHandler(int hConn, RasConnState State, RasError ErrorCode) 
    { 
     Logger.WriteLine(""); 
     Logger.WriteLine("RAS STATUS: " + ErrorCode.ToString() + " , State: " + State.ToString()); 
    } 


    /// <summary> 
    /// Disconnects the GPRS. 
    /// </summary> 
    /// <returns></returns> 
    public static void DisconnectGPRS() 
    { 
     RasEntryCollection entradas = Ras.Entries; 
     foreach (RasEntry possivelEntrada in entradas) 
     { 
      if (possivelEntrada.Name == connectionName) 
      { 
       possivelEntrada.Hangup(); 
      } 
     } 


    } 

    /// <summary> 
    /// Determines whether this instance is connected. 
    /// </summary> 
    /// <returns> 
    ///  <c>true</c> if this instance is connected; otherwise, <c>false</c>. 
    /// </returns> 
    public static bool isConnected() 
    { 

     RasConnection[] conecoes = Ras.ActiveConnections; 
     foreach (RasConnection conecao in conecoes) 
     { 
      if (conecao.Name == connectionName) 
       return true; 
     } 
     return false; 

    } 

    /// <summary> 
    /// Dumps the ras entries. 
    /// </summary> 
    public static void DumpRasEntries() 
    { 
     foreach (RasEntry entry in Ras.Entries) 
     { 
      Logger.DumpRasEntry(entry); 
     } 
    } 

} 

}

そこで質問を再開すると、私はopennetcfのRASライブラリと実行可能な接続を作成する方法であります

ベスト挨拶

答えて

0

あなたがダイヤルインを取得することをGPRS接続のためのネットワーク・インタフェースがconfiguではないかのように思えます適切なDNSサーバーで赤色に点灯します。また、サービスコールに必要なドメイン名が間違っている可能性があります。

はこれを確認するには、次の

がそのドメイン名を解決できないだけで、特定のWebサービスですか?それはいつも同じですか?他の人は働きますか?接続が確立された後に、http://stackoverflow.comのようなHTTPをプログラムで簡単に取得できますか?

+0

www.google.comのHTTP GETを実行してページを取得できるので、ドメイン名が正しいです。また、コントロールパネルで接続すると、私のプログラムは魅力的に機能します。これが起こるのは、プログラマティックな接続を行うときだけです。 – Sorcerer86pt

関連する問題