私は、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ライブラリと実行可能な接続を作成する方法であります
ベスト挨拶
www.google.comのHTTP GETを実行してページを取得できるので、ドメイン名が正しいです。また、コントロールパネルで接続すると、私のプログラムは魅力的に機能します。これが起こるのは、プログラマティックな接続を行うときだけです。 – Sorcerer86pt