2011-01-31 3 views
0

Windows CE가있는 PDA에서 GPRS 연결을 생성해야합니다. 이제 정상적으로 제조사의 dll을 사용하여 작성해야했지만 그들은 이것을 달성하기 위해 ras를 사용합니다. 그것을 사용하는 유일한 문제는 .net C#에서 프로그램이며 라이브러리는 관리되지 않는 코드입니다.opennetcf를 사용하여 영구 RAS 연결 만들기 Windows CE 6.0의 Ras

다행히도 나는 창문 라이브러리 라이브러리에 필요한 pInvokes를 제공하는 opennetcf ras 라이브러리를 사용했다. 유일한 문제는 빈약 한 문서이다.

Windows에서 필요한 GPRS 연결을 호출하고 설정하는 라이브러리를 생성했습니다. 나는 다음과 같은 정의를 사용하는 포르투갈어 통신 사업자가 사용하고는 GSM 모듈 정의를 컨설팅

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

을, 나는 다음과 같은 모뎀 설정했다 :

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

물론 추가 설정 (또는 방법 내가

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

내가 컨트롤 패널을 사용하고 해당 프로필로 연결합니까이 설정은, 그것을 연결하고 내가 가진 모든 웹 서비스를 호출 할 수있어 그것을 atCall)를 호출 오류가 발생했습니다. 또한 장치의 설정 (예 : ipaddress, 서브넷 마스크 및 기본 게이트웨이 포함)을 표시하는 모뎀의 추가 프로필을 보여줍니다.

문제는 내가 프로그래밍 방식으로 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 라이브러리와의 가능한 연결을 만들 수있는 방법입니다 재개

최저 인사말

답변

0

그것은 보인다 GPRS 연결을위한 네트워크 인터페이스에 전화를 걸 때 당신이 얻을 간 설정되어 있지 않은 경우로 올바른 DNS 서버와 빨간색. 또는 서비스 호출에 필요한 도메인 이름이 잘못되었을 수 있습니다.

이를 확인하려면 다음

이 그 도메인 이름을 확인할 수 없습니다 만 특정 웹 서비스인가? 항상 같은가요? 다른 사람들은 일합니까? 연결이 설정되면 프로그래밍 방식으로 http://stackoverflow.com과 같은 HTTP를 간단하게 얻을 수 있습니까?

+0

www.google.com에서 HTTP GET을 수행하고 페이지를 가져올 수 있기 때문에 도메인 이름이 정확합니다. 또한 제어판에서 연결하면 내 프로그램이 매력처럼 작동합니다. 이 문제가 발생했을 때 나는 programaticaly 연결을 할 때만입니다. – Sorcerer86pt