簡體   English   中英

在Windows CE 6.0中使用opennetcf Ras創建持久RAS連接

[英]Creating persistent RAS connection with opennetcf Ras in Windows CE 6.0

我需要在具有Windows ce 6的PDA中創建GPRS連接。現在通常我必須使用制造商的dll來創建該連接,但是他們說他們使用ras來完成此操作。 使用它的唯一問題是我在.net c#中編程,而該庫是不受管的代碼之一。

幸運的是,我來自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服務。 它還顯示了調制解調器的額外配置文件,其中顯示了設備的設置,包括ip地址,子網掩碼,甚至是默認網關。

問題是,當我使用自己創建的庫以編程方式創建gprs連接,然后在某個時候調用webservices時,將引發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庫建立可行的連接

最好的問候

似乎您撥入時獲得的GPRS連接的網絡接口未使用正確的DNS服務器進行配置。 或者,您的服務呼叫所需的域名可能是錯誤的。

要驗證這一點:

僅僅是域名無法解析的特定Web服務嗎? 總是一樣嗎? 別人工作嗎? 建立連接后,能否通過編程方式簡單地通過HTTP GET來獲取類似http://stackoverflow.com的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM