Frage

Ich muss in einer PDA mit Windows CE 6 eine GPRS -Verbindung herstellen. Normalerweise müsste ich die DLL des Herstellers verwenden, um dies zu erstellen, aber sie sagten, dass sie RAS verwenden, um dies zu erreichen. Das einzige Problem dabei ist, dass ich in .NET C#programmiere und die Bibliothek ein nicht verwalteter Code ist.

Glücklicherweise kam ich in der OpenNetCF Ras -Bibliothek, die bereits die erforderlichen Steigungen für die Windows Ras -Bibliothek ausführt. Das einzige Problem ist die schlechte Dokumentation.

Ich habe dann eine Bibliothek erstellt, die die erforderliche GPRS-Verbindung unter Windows anruft und einrichten würde. Ich verwende einen portugiesischen Telekommunikationsbetreiber, der die folgenden Definitionen verwendet:

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

Bei der Konsultation der Definition des GSM -Moduls hatte ich die folgenden Modemeinstellungen:

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

Und natürlich die zusätzlichen Einstellungen (oder wie ich es als ATCall nenne)

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

Diese Einstellungen, wenn ich das Bedienfeld verwende und eine Verbindung mit diesem Profil herstellt, stellt eine Verbindung her und ich kann alle Webservices ohne Fehler aufrufen. Es zeigt auch ein zusätzliches Profil für das Modem an, das die Einstellungen für das Gerät anzeigt, einschließlich der iPadresse, der Subnetzmaske und sogar des Standardgateways.

Das Problem ist, dass wenn ich die Bibliothek verwende, die ich erstellt habe, um ein GPRS -Verbindungsverbindungsprogramm programmiert zu erstellen, und dann die Webservices irgendwann aufzurufen, löst mir eine Webausnahme aus: Der Remote -Name konnte nicht behoben werden. Ich habe auch überprüft und das zusätzliche Symbol wird nicht angezeigt, aber wenn ich den GPRS -Status sehe, wird er angezeigt, wie es angeschlossen ist.

Der Code, der erstellt, zerstört und abfragt, wenn er eine Verbindung besteht, lautet wie folgt:

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);
        }
    }

}

}

Die Frage wieder aufnimmt, kann ich eine praktikable Verbindung mit der OpenNetCF Ras Library herstellen

Beste Grüße

War es hilfreich?

Lösung

Es scheint, als ob die Netzwerkschnittstelle für die GPRS -Verbindung, die Sie beim Wählen erhalten haben, nicht mit den richtigen DNS -Servern konfiguriert ist. Alternativ können die Domainnamen für Ihre Serviceanrufe falsch sein.

Um dies zu überprüfen:

Ist es nur ein bestimmter Webdienst, dessen Domain -Name nicht behoben werden kann? Ist es immer dasselbe? Arbeiten andere? Kannst du einfach so etwas wie http bekommen wie http://stackoverflow.com Programmatisch nach der Herstellung der Verbindung?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top