📄 form1.cs
字号:
/// Copyright(c) Emtronix Inc.
///
/// 程序作者:李林 leeleen@emtronix.com
/// leeleen@sjtu.org
/// leeleen@263.net
///
/// 最后修改时间:2008-05-23 汶川8级地震余震期间
/// +86-28-86180660
/// 成都英创信息技术有限公司
/// Emtronix是英创公司的注册商标
/// 本程序免费提供给购买英创公司EM9000产品的客户使用
/// 未购买英创公司产品的客户或未获得英创授权的客户不得使用
///
/// 本程序注意事项:
/// (1)由于调用WIN32 API RASDial需要用到不安全代码,需要在『项目』—『属性』—『生成』里面选择“允许不安全代码”;
/// (2)上电过程需要调用EM9000_ISA_DLL.dll动态链接库,所以请将该动态链接库下载到目标平台的相关目录里;
/// (3)GPRS模块上电过程在Program.cs里面实现(调用ISA动态链接库),拨号过程在Form1.cs里面实现;
/// (4)本程序上电过程适用于华为GTM9000 GPRS模块。
using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace EM9000_GPRS_Dial
{
public partial class GPRS_FORM : Form
{
#region Win32 API RASDial函数声明
[DllImport("coredll.dll")]
public static extern uint RasDial(IntPtr dialExtensions, IntPtr phoneBookPath, IntPtr rasDialParam, uint NotifierType, IntPtr notifier, ref IntPtr pRasConn);
[DllImport("coredll.dll")]
public static extern uint RasHangUp(IntPtr pRasConn);
#endregion
//再次提醒:GPRS模块上电过程在Program.cs里实现,请在Program.cs里参见相关代码
IntPtr Connect = IntPtr.Zero;
public GPRS_FORM()
{
InitializeComponent();
}
private void Exit_button_Click(object sender, EventArgs e)
{
this.Close();
}
private void Dial_button_Click(object sender, EventArgs e)
{
Connect = IntPtr.Zero;
uint result = myRasDial("GPRS", "", "", out Connect);
if (result != 0)
{
MessageBox.Show("连接失败!");
RasHangUp(Connect);
}
else
MessageBox.Show("连接成功!");
}
private void Hang_button_Click(object sender, EventArgs e)
{
if (RasHangUp(Connect) == 0)
{
MessageBox.Show("挂断成功!");
}
else
MessageBox.Show("挂断失败!");
}
unsafe public static uint myRasDial(string EntryName, string UserName, string Password, out IntPtr RasConn)
{
/*EntryName ,UserName,Password - same as in RASDIALPARAMS structure (see MSDN)*/
uint r = 0;
RasConn = IntPtr.Zero;
byte[] bRASDIALPARAMS = new byte[1464];
fixed (byte* pAddr = bRASDIALPARAMS)
{
byte* pCurrent = pAddr;
Marshal.WriteInt32((IntPtr)pCurrent, bRASDIALPARAMS.Length);
pCurrent += 4;
foreach (byte b in Encoding.Unicode.GetBytes(EntryName))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
pCurrent = pAddr + 0x192;//0x192 - offset for RASDIALPARAMS.UserName
foreach (byte b in Encoding.Unicode.GetBytes(UserName))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
pCurrent = pAddr + 0x394;//0x394 - offset for RASDIALPARAMS.Password
foreach (byte b in Encoding.Unicode.GetBytes(Password))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
r = RasDial(IntPtr.Zero, IntPtr.Zero, (IntPtr)pAddr, 0, IntPtr.Zero, ref RasConn);
}
return r;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -