Мне нужно создать GPRS-соединение в КПК с Windows CE 6. Теперь обычно мне нужно было использовать dll производителя для создания этого, но они сказали, что для этого используют ras. Единственная проблема использования этого заключается в том, что я программирую на .net c #, а библиотека является неуправляемой кодовой.
К счастью, я пришел из библиотеки opennetcf ras, которая уже делает необходимые pInvokes для библиотеки windows ras, единственная проблема - плохая документация.
Затем я создал библиотеку, которая будет вызывать и настраивать необходимое соединение GPRS в Windows. Я использую португальского оператора связи, который использует следующие определения:
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"
Эти настройки, когда я использую панель управления и подключаюсь к этому профилю, он подключается, и я могу вызвать все веб-службы без ошибок. Он также показывает дополнительный профиль для модема, который показывает настройки устройства, включая IP-адрес, маску подсети и даже шлюз по умолчанию.
Проблема в том, что когда я использую библиотеку, которую я создал, для программного создания соединения gprs, а затем вызываю веб-сервисы, в какой-то момент возникает веб-исключение: удаленное имя не может быть разрешено. Я также проверил, и дополнительный значок не появляется, но если я вижу статус 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
С наилучшими пожеланиями