WinCE5.0移动平台开发笔记(OpenNETCF.Desktop.Communication连接和断开使用心得)
2010-03-20 08:27
656 查看
当用PC机读取和操作PDA时候,需要用到RAPI,那么为了更好的使用RAPI,我们会使用到OpenNETCF.Desktop.Communication.dll文件,这个文件在Rapi.dll(win32 api)的基础上进行了NET封装。我们更能方便的使用它。对于连接和断开移动设备的方法,在使用过程中出现了一点问题,这里将记录下来,和朋友们分享:
1、当我们首先实例化时:RAPI m_rapi = new RAPI();调用:m_rapi.Connect(false, 2).如果当PDA和PC没有连接成功时候,根据OpenNetCF.Desktop.Communication里面的方法,就会在子线程中抛出异常,主线程不能Catch获取子线程中异常,导致程序无法正常运行下去。相关代码如下:
代码
public partial class MainForm : Form
{
internal class MyEventArgs : EventArgs
{
public Control Target;
public string Text;
public MyEventArgs(Control target, string text)
{
Target = target;
Text = text;
}
}
private RAPI m_rapi = new RAPI();
private EventHandler statusUpdate;
public MainForm()
{
InitializeComponent();
m_rapi.RAPIConnected += new RAPIConnectedHandler(m_rapi_RAPIConnected);
m_rapi.RAPIDisconnected += new RAPIConnectedHandler(m_rapi_RAPIDisconnected);
m_rapi.ActiveSync.Listen += new ListenHandler(ActiveSync_Listen);
m_rapi.ActiveSync.Answer += new AnswerHandler(ActiveSync_Answer);
m_rapi.ThrowException += new ExceptionEventHandler(m_rapi_ThrowException);
statusUpdate = new EventHandler(StatusUpdate);
m_rapi.Connect(false, 2);
}
private void StatusUpdate(object sender, EventArgs args)
{
(sender as Label).Text = (args as MyEventArgs).Text;
}
void m_rapi_ThrowException(RAPIException e)
{
MessageBox.Show("连接超时!请确认把PDA和PC机连接好!");
}
void ActiveSync_Answer()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:连接中...!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:连接中...!"));
}
}
void ActiveSync_Listen()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:设备未连接!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:设备未连接!"));
}
}
void m_rapi_RAPIDisconnected()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:连接关闭!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:连接关闭!"));
}
}
void m_rapi_RAPIConnected()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:设备已连接!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:设备已连接!"));
}
}
private void MainForm_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (m_rapi.DeviceFileExists(@"\***\****.sdf"))
{
MessageBox.Show("文件存在!连接是成功的!");
}
else
{
MessageBox.Show("文件不存在!,连接不成功!");
}
}
}
通过demo发现,连接状态的变化过程:
1.连接pda时候:设备未连接---->连接中...----->设备已连接
2.断开pda上:设备已连接----->连接关闭------->设备未连接
Best Regards,
Charles Chen
1、当我们首先实例化时:RAPI m_rapi = new RAPI();调用:m_rapi.Connect(false, 2).如果当PDA和PC没有连接成功时候,根据OpenNetCF.Desktop.Communication里面的方法,就会在子线程中抛出异常,主线程不能Catch获取子线程中异常,导致程序无法正常运行下去。相关代码如下:
代码
public partial class MainForm : Form
{
internal class MyEventArgs : EventArgs
{
public Control Target;
public string Text;
public MyEventArgs(Control target, string text)
{
Target = target;
Text = text;
}
}
private RAPI m_rapi = new RAPI();
private EventHandler statusUpdate;
public MainForm()
{
InitializeComponent();
m_rapi.RAPIConnected += new RAPIConnectedHandler(m_rapi_RAPIConnected);
m_rapi.RAPIDisconnected += new RAPIConnectedHandler(m_rapi_RAPIDisconnected);
m_rapi.ActiveSync.Listen += new ListenHandler(ActiveSync_Listen);
m_rapi.ActiveSync.Answer += new AnswerHandler(ActiveSync_Answer);
m_rapi.ThrowException += new ExceptionEventHandler(m_rapi_ThrowException);
statusUpdate = new EventHandler(StatusUpdate);
m_rapi.Connect(false, 2);
}
private void StatusUpdate(object sender, EventArgs args)
{
(sender as Label).Text = (args as MyEventArgs).Text;
}
void m_rapi_ThrowException(RAPIException e)
{
MessageBox.Show("连接超时!请确认把PDA和PC机连接好!");
}
void ActiveSync_Answer()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:连接中...!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:连接中...!"));
}
}
void ActiveSync_Listen()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:设备未连接!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:设备未连接!"));
}
}
void m_rapi_RAPIDisconnected()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:连接关闭!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:连接关闭!"));
}
}
void m_rapi_RAPIConnected()
{
if (this.label1.InvokeRequired)
{
this.Invoke(statusUpdate, new object[] { this.label1, new MyEventArgs(this.label1, "连接状态:设备已连接!") });
}
else
{
statusUpdate(this.label1, new MyEventArgs(this.label1, "连接状态:设备已连接!"));
}
}
private void MainForm_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (m_rapi.DeviceFileExists(@"\***\****.sdf"))
{
MessageBox.Show("文件存在!连接是成功的!");
}
else
{
MessageBox.Show("文件不存在!,连接不成功!");
}
}
}
通过demo发现,连接状态的变化过程:
1.连接pda时候:设备未连接---->连接中...----->设备已连接
2.断开pda上:设备已连接----->连接关闭------->设备未连接
Best Regards,
Charles Chen
相关文章推荐
- WinCE5.0移动平台开发笔记(c#中使用多线程访问winform中控件的若干问题(zt))
- C#使用OpenNETCF.Desktop.Communication,实现对ActiveSync状态的判断,及对移动设备文件的操作!
- WinCE5.0移动平台开发笔记(XmlDocument.Load与OpenFileDialog对话框选择冲突引起的思考)
- 在Window Embedded CE(Wince)下使用OpenNETCF进行路由表的开发
- iFly Mobile Speech Platform Mobile Speech Client 5.0(移动语音讯飞平台开发手册)
- 使用phonegap开发移动应用-学习笔记
- 一些微信公众平台开发、百度地图API使用、移动平台方面的资料
- WinCE5.0移动平台开发笔记(.Net主线程扑捉子线程中的异常)
- windows mobile开发循序渐进(7)windows mobile device center连接windows mobile 5.0及简单移动程序开发
- 使用APPCAN开发移动应用APP心得
- 跨平台移动开发_Android 平台使用 PhoneGap 方法
- 架设移动开发环境一:Qt-wince 平台
- 【hadoop】Hadoop学习笔记(九):如何在windows上使用eclipse远程连接hadoop进行程序开发
- 使用Xamarin.Forms平台开发移动应用指南
- hololens开发笔记-DEP6957未能使用“通用身份验证”连接到设备
- SAP企业移动平台开发探索系列8 – 使用SenchaTouch开发HTML5跨平台应用
- android平台开发笔记1----Spinner不能在sub activity中使用
- C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码
- WPF下的地图开发控件(GMap.NET)使用心得—— GMap学习笔记(二)
- 移动平台网页开发笔记