我需要在具有windows ce 6的PDA中創建GPRS連接。現在通常我不得不使用製造商的dll來創建該連接,但他們說他們使用ras來實現這一點。使用它的唯一問題是我在.net c#中編程,而庫是一個非託管代碼。在Windows CE 6.0中使用opennetcf Ras創建持久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
,當然還有額外的設置(或如何我把它叫做atCall)
+cgdcont=1, "ip", "umts"
當我使用的控制面板,做一個與曲線連接這設置,它連接和我能夠調用所有的web服務與出錯。它還顯示調制解調器的額外配置文件,其中顯示了設備的設置,包括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並獲取頁面,並且如果我通過控制面板進行連接,我的程序就像魅力一樣。只有當我做連接programaticaly,這發生。 – Sorcerer86pt 2011-02-01 11:57:02