📄 program.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.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
namespace EM9000_GPRS_Dial
{
static class Program
{
#region ISA-DIO动态链接库函数声明
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?InitEM9000ISA@@YAHXZ")] ///使用Win32的DLL动态链接库EM9000_ISA_DLL.dll里的函数
public static extern int InitEM9000ISA();
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?Swap2DIO@@YAHH@Z")]
public static extern int Swap2DIO(int Port);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?Swap2ISA@@YAHH@Z")]
public static extern int Swap2ISA(int Port);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?EM9000_WRITE@@YAHHIE@Z")]
public static extern int EM9000_WRITE(int nSeg, uint nOffset, byte Value);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?EM9000_READ@@YAEHI@Z")]
public static extern byte EM9000_READ(int nSeg, uint nOffset);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?SetPortDir@@YAHHH@Z")]
public static extern int SetPortDir(int Port, int Mode);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?GetPortState@@YAHH@Z")]
public static extern int GetPortState(int Port);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?EM9000_INB@@YAEH@Z")]
public static extern byte EM9000_INB(int Port);
[DllImport("EM9000_ISA_DLL.dll", EntryPoint = "?EM9000_OUTB@@YAHHE@Z")]
public static extern int EM9000_OUTB(int Port, byte Value);
const int ISA_P1 = 1; ///相当于VC里面的#define ISA_P1 1;
const int ISA_P2 = 2;
const int ISA_P3 = 3;
const int ISA_P4 = 4;
const int ISA_P5 = 5;
const int ISA_CS0n = 0;
const int ISA_CS1n = 1;
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[MTAThread]
static void Main()
{
int i1 = InitEM9000ISA();
if (i1 < 0)
{
MessageBox.Show("EM9000 ISA初始化失败!!!");
}
else
{
i1 = Swap2DIO(ISA_P4); // P4设为IO模式
}
i1 = SetPortDir(ISA_P4, 0); // set P4 Dout mode
EM9000_OUTB(ISA_P4, 0);
Thread.Sleep(2000);
GPRS_Reset();
Thread.Sleep(10000);
Application.Run(new GPRS_FORM());
}
// GPRS_STB: P4 - D3 GPRS_AUX: P4 - D2
static void GPRS_PowerOn()
{
EM9000_OUTB(ISA_P4, 0);
EM9000_OUTB(ISA_P4, 0x08);
Thread.Sleep(200);
EM9000_OUTB(ISA_P4, 0);
Thread.Sleep(200);
}
static void GPRS_PowerOff()
{
EM9000_OUTB(ISA_P4, 0x08); // GPRS_STB
Thread.Sleep(3000);
EM9000_OUTB(ISA_P4, 0); // GPRS_STB
}
static void GPRS_Reset()
{
EM9000_OUTB(ISA_P4, 0x04); // GPRS_AUX
Thread.Sleep(200);
EM9000_OUTB(ISA_P4, 0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -