ldj/wince/NetworkDemo/Backup/Form1.cs

431 lines
14 KiB
C#
Raw Normal View History

2023-05-23 16:13:17 +08:00
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Urovo;
using Microsoft.WindowsCE.Forms;
namespace NetworkDemo
{
public partial class Form1 : Form
{
public enum NetImageType
{
NoConnect = 0,
Connecting = 1,
WlanConnected = 2,
GprsConnected = 3
}
public enum SignalImageType
{
None = 0,
Low = 1,
Normal = 2,
Good = 3,
Strong = 4,
}
public enum BatteryImageType
{
Danger = 0,
Low = 1,
Normal = 2,
Good = 3,
Full = 4,
AC = 5
}
NetworkManager networkMgr = new NetworkManager();
public NetworkManager NetworkMgr
{
get { return networkMgr; }
set { networkMgr = value; }
}
PowerManager powerMgr = new PowerManager();
public PowerManager PowerMgr
{
get { return powerMgr; }
set { powerMgr = value; }
}
private int signalCount = 0; //取信号计数器
private DateTime lastAlertTime = DateTime.Now;
private string JianPanInput = "42429667-ae04-11d0-a4f8-00aa00a749b9";
public Form1()
{
InitializeComponent();
networkMgr.ConnectNotify += new ConnectNotifyEventHandler(ConnectNotify);
powerMgr.PowerNotify += new PowerNotifyEventHandler(PowerNotify);
batteryStatus.BackgroundImage = Properties.Resources.battery;
netStatus.BackgroundImage = Properties.Resources.net;
signalStatus.BackgroundImage = Properties.Resources.signal;
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
CreateIMEMenu();
timer1.Enabled = true;
NetworkManager.ConnectType = rbGprs.Checked ? ConnType.Gprs : ConnType.Wlan;
this.lblNetType.Text = rbGprs.Checked ? "GPRS" : "WIFI";
networkMgr.Start();
powerMgr.Start();
}
catch (Exception ex)
{
MessageBox.Show("程序启动失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
//26秒取一次信号
#region
if (++signalCount % 26 == 0)
{
signalCount = 0;
SignalImageType signalImageType = SignalImageType.None;
if (NetworkManager.ConnectType == ConnType.Gprs)
{
if (Device.GetGsmPowerStatus() == 1)
{
int iStrength = Device.GetGsmSignalStrength();
this.lblSignalStrength.Text = iStrength.ToString();
if (iStrength == 99 || iStrength == 0)
{
signalImageType = SignalImageType.None;
}
else if (iStrength > 21)
{
signalImageType = SignalImageType.Strong;
}
else if (iStrength > 16)
{
signalImageType = SignalImageType.Good;
}
else if (iStrength > 11)
{
signalImageType = SignalImageType.Normal;
}
else
{
signalImageType = SignalImageType.Low;
}
}
else
{
lblSignalStrength.Text = "无";
}
}
else if (NetworkManager.ConnectType == ConnType.Wlan)
{
if (Device.GetWlanPowerStatus() == 1)
{
int iStrength = Device.GetWlanSignalStrength();
this.lblSignalStrength.Text = iStrength.ToString();
if (iStrength == 0)
{
signalImageType = SignalImageType.None;
}
else if (iStrength >= -57)
{
signalImageType = SignalImageType.Strong;
}
else if (iStrength >= -70)
{
signalImageType = SignalImageType.Good;
}
else if (iStrength >= -81)
{
signalImageType = SignalImageType.Normal;
}
else if (iStrength >= -91)
{
signalImageType = SignalImageType.Low;
}
}
else
{
lblSignalStrength.Text = "无";
}
}
this.signalStatus.ImageIndex = (int)signalImageType;
}
#endregion
}
#region
/// <summary>
/// 检查网络连接和传输数据
/// </summary>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
public void ConnectNotify(object sender, ConnectNotifyEventArgs e)
{
if (this.InvokeRequired)
{
object[] param = new object[2] { sender, e };
this.BeginInvoke(new ConnectNotifyEventHandler(OnConnectNotify), param);
}
else
{
OnConnectNotify(sender, e);
}
}
/// <summary>
/// 检查网络连接和传输数据
/// </summary>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
private void OnConnectNotify(object sender, ConnectNotifyEventArgs e)
{
try
{
#region Signal
NetImageType netImageType = NetImageType.NoConnect;
switch (e.ConnectResult)
{
case ConnState.ConnectSuccess:
{
switch (e.ConnectType)
{
case ConnType.Gprs:
netImageType = NetImageType.GprsConnected;
lblNetStatus.Text = "已连接";
break;
case ConnType.Wlan:
netImageType = NetImageType.WlanConnected;
lblNetStatus.Text = "已连接";
break;
default:
netImageType = NetImageType.NoConnect;
lblNetStatus.Text = "未连接";
break;
}
}
break;
case ConnState.Connecting:
netImageType = NetImageType.Connecting;
lblNetStatus.Text = "正在连接...";
break;
case ConnState.Disconnectiong:
netImageType = NetImageType.Connecting;
lblNetStatus.Text = "正在断开连接...";
break;
default:
netImageType = NetImageType.NoConnect;
lblNetStatus.Text = "未连接";
break;
}
this.netStatus.ImageIndex = (int)netImageType;
#endregion
}
catch (Exception ex)
{
}
}
#endregion
#region
void PowerNotify(object sender, PowerNotifyEventArgs e)
{
if (this.InvokeRequired)
{
object[] param = new object[2] { sender, e };
this.BeginInvoke(new PowerNotifyEventHandler(OnPowerNotify), param);
}
else
{
OnPowerNotify(sender, e);
}
}
void OnPowerNotify(object sender, PowerNotifyEventArgs e)
{
if (e.ACLineStatus != 0x01)
{
if (e.BatteryLifePercent <= 7)
{
if (DateTime.Now - lastAlertTime > new TimeSpan(60 * 10))
{
lastAlertTime = DateTime.MaxValue;
MessageBox.Show("电量太低,请注意换电池", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
Application.DoEvents();
lastAlertTime = DateTime.Now;
}
}
}
BatteryImageType batteryImageType = BatteryImageType.Danger;
if (e.ACLineStatus == 0x01)
{
batteryImageType = BatteryImageType.AC;
}
else if (e.BatteryLifePercent > 80)
{
batteryImageType = BatteryImageType.Full;
}
else if (e.BatteryLifePercent > 60)
{
batteryImageType = BatteryImageType.Good;
}
else if (e.BatteryLifePercent > 40)
{
batteryImageType = BatteryImageType.Normal;
}
else if (e.BatteryLifePercent > 20)
{
batteryImageType = BatteryImageType.Low;
}
this.batteryStatus.ImageIndex = (int)batteryImageType;
}
#endregion
private void Form1_Closed(object sender, EventArgs e)
{
try
{
networkMgr.Stop();
powerMgr.Stop();
}
catch (Exception ex)
{
}
}
private void btnNetChange_Click(object sender, EventArgs e)
{
if (rbGprs.Checked)
{
networkMgr.Connect(ConnType.Gprs);
this.lblNetType.Text = "GPRS";
}
else
{
networkMgr.Connect(ConnType.Wlan);
this.lblNetType.Text = "WIFI";
}
}
private void gbtnCloseNetwork_Click(object sender, EventArgs e)
{
networkMgr.Disconnect();
}
private void picClose_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Exit?[Y/N]", "Tip", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
this.Close();
}
}
private void imageButton1_Click(object sender, EventArgs e)
{
this.contextMenu1.Show(this.imageButton1, new Point(-100, -80));
}
private void IMEMenu_Click(object sender,EventArgs e)
{
try
{
MenuItem item = (MenuItem)sender;
if (item.Text == "隐藏输入面板")
{
this.inputPanel1.Enabled = false;
}
else
{
foreach (InputMethod im in inputPanel1.InputMethods)
{
if (im.Name == item.Text)
{
inputPanel1.CurrentInputMethod = im;
}
}
inputPanel1.Enabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show("软键盘出现错误,详细情况请参阅日志!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
}
}
private void CreateIMEMenu()
{
MenuItem item;
foreach (InputMethod im in this.inputPanel1.InputMethods)
{
item = new MenuItem();
item.Text = im.Name;
item.Click += new EventHandler(IMEMenu_Click);
this.contextMenu1.MenuItems.Add(item);
}
item = new MenuItem();
item.Text = "-";
contextMenu1.MenuItems.Add(item);
item = new MenuItem();
item.Text = "隐藏输入面板";
item.Click += new EventHandler(IMEMenu_Click);
contextMenu1.MenuItems.Add(item);
}
public void EnableInputMethod()
{
try
{
foreach (InputMethod im in this.inputPanel1.InputMethods)
{
string clsid = im.Clsid.ToString();
if (im.Clsid.ToString() == JianPanInput)
{
this.inputPanel1.CurrentInputMethod = im;
this.inputPanel1.Enabled = true;
break;
}
}
}
catch (Exception ex)
{
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.F2:
{
EnableInputMethod();
}
break;
}
}
}
}