Создание постоянного соединения RAS с OpenNetCF RAS в Windows CE 6.0
-
27-10-2019 - |
Вопрос
Мне нужно создать соединение 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"
Эти настройки, когда я использую панель управления и делаю подключение с этим профилем, он подключается, и я могу вызвать все веб -сервисы без ошибки. Он также показывает дополнительный профиль для модема, который показывает настройки для устройства, включая iPaddress, Subnet Mask и даже шлюз по умолчанию.
Проблема в том, что когда я использую библиотеку, которую я создал для программного создания подключения 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
С наилучшими пожеланиями
Решение
Кажется, что сетевой интерфейс для подключения GPRS, который вы получаете при наборе, не настроен с правильными серверами DNS. В качестве альтернативы, доменные имена, необходимые для ваших сервисных звонков, могут быть неправильными.
Чтобы проверить это:
Это только конкретная веб -служба, доменное имя, нельзя разрешить имя, чье имя нельзя? Это всегда то же самое? Другие работают? Можете ли вы просто получить что -то вроде http://stackoverflow.com Программно после установки соединения?