中国民航大学嵌入式系统实习报告.docx
《中国民航大学嵌入式系统实习报告.docx》由会员分享,可在线阅读,更多相关《中国民航大学嵌入式系统实习报告.docx(12页珍藏版)》请在冰点文库上搜索。
中国民航大学嵌入式系统实习报告
中国民航大学2013-2014年度第一学期
嵌入式系统实习报告
嵌入式系统实习报告
1、实习目的
1.1了解处理器的发展
1.2掌握WinCE嵌入式系统开发方法和开发流程。
1.3掌握WinCE嵌入式C#编程方法。
1.4掌握WinCE嵌入式网络通信技术。
1.5掌握Bluetooth编码技术
2、实习内容
蓝牙搜索、浏览与发送,蓝牙设备列表,配对设备清空,删除。
主要步骤:
服务端
A、设置本设备为可发现。
B、公开服务给其他Bluetooth设备访问。
C、接受其他Bluetooth设备的链接。
D、与链接上的Bluetooth设备进行通信。
客户端
A、发现周边Bluetooth设备。
B、主动与被发现的设备发起连接。
C、与链接上的Bluetooth设备进行通信。
3、实验要求:
课程资源:
BP教学平台
完成形式:
程序+实践报告
参考资料:
齐治昌等,《C#编程技术》,人民大学出版社,
钱哨等,《C#WinForm实践开发教程》
验收方式:
课堂检查
发送文件到指定的计算机
4、基础知识:
4.1嵌入式系统
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它是完成特定任务的计算机系统。
嵌入式系统一般由硬件设备、嵌入式操作系统、嵌入式应用软件组成。
4.2蓝牙技术
蓝牙(Bluetooth)是目前比较流行的一种短距离无线通讯技术,其主要目的就是要在全世界范围内建立一个短距离的无线通信标准。
设计者的初衷是用隐形的连接线代替线缆。
它取代目前多种电缆连接方案,通过统一的短程无线链路,在各信息设备之间可以穿过墙壁或公文包,实现方便快捷、灵活安全、低成本小功耗的话音和数据通信。
“蓝牙”技术的目的是使特定的移动电话、便携式电脑以及各种便携式通信设备的主机之间在近距离内实现无缝的资源共享。
具体地说,“蓝牙”技术的作用就是简化小型网络设备(如移动PC、掌上电脑、手机)之间以及这些设备与Internet之间的通信,免除在无绳电话或移动电话、调制解调器、头套式送/受话器、PDA、计算机、打印机、幻灯机、局域网等之间加装电线、电缆和连接器。
5、具体操作
5.1新建项目程序
向窗口添加标签,按钮,文本框。
5.2蓝牙设备搜索
点击“搜索蓝牙设备按钮”,添加程序
具体程序如下:
BluetoothRadioradio=BluetoothRadio.PrimaryRadio;
if(radio==null)
{
MessageBox.Show("没有蓝牙设备或者没有支持的蓝牙设备栈");
return;
}
radio.Mode=RadioMode.Discoverable;//蓝牙模式设置为可搜索//
BluetoothClientclient=newBluetoothClient();
this.statusBar1.Text="正在搜索蓝牙设备...";
Application.DoEvents();
BluetoothDeviceInfo[]cbbthDevices=client.DiscoverDevices();
comboBox1.DataSource=cbbthDevices;
comboBox1.DisplayMember="DeviceName";
comboBox1.ValueMember="DeviceAddress";
this.statusBar1.Text="蓝牙设备搜索完成";
Application.DoEvents();
5.3浏览和发送文件
双击“浏览文件”和“发送文件”,分别输入程序,具体如下:
浏览文件:
OpenFileDialogofd=newOpenFileDialog();//浏览文件//
if(ofd.ShowDialog()==DialogResult.OK)//如果用户在对话框中单击“确定”//
{textBox1.Text=ofd.FileName;}//将查找到的文件名显示在要发送的文件的文本框里//
发送文件:
System.Uriuri=newUri("obex:
//"+comboBox1.SelectedValue.ToString()+"/"+System.IO.Path.GetFileName(textBox1.Text.Trim()));//获取服务器obex的uri,获取要传送的文件名//
ObexWebResponseresponse=null;//新建response变量//
ObexWebRequestrequest=newObexWebRequest(uri);//通过ObexWebRequest推送文件到目标机器,发送请求//
try
{
request.ReadFile(textBox1.Text.Trim());//读出textbox1的文件内容
response=(ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse类里面。
如果目标机器的Obex服务没有打开,会发生文件传输错误//
MessageBox.Show("发送成功!
");
listBox1.Items.Add(textBox1.Text.Trim());//将文本框中的内容添加到列表中
}
catch
{
MessageBox.Show("传输失败");
}
finally//发送完成释放资源
{
if(response!
=null)
{
response.Close();
}
}
5.4拓展功能
5.4.1清空设备列表
功能:
把搜索到的蓝牙设备列表清空。
程序如下:
privatevoidbutton2_Click(objectsender,EventArgse)
{
comboBox1.Items.Clear();
}
5.4.2发送进度条
功能:
显示文件发送进度。
程序添加到发送程序下:
(红色标记的两句)
try
{
request.ReadFile(textBox1.Text.Trim());//读出textbox1的文件内容
response=(ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse类里面。
如果目标机器的Obex服务没有打开,会发生文件传输错误//
intC;
for(C=0;C<=100;C++)progressBar1.Value=C;
MessageBox.Show("发送成功!
");
listBox1.Items.Add(textBox1.Text.Trim());//将文本框中的内容添加到列表中
}
5.4.3发送文件历史列表及清空
功能:
保留发送文件历史,清空。
程序设计两部分:
A、保留历史(红色部分)
request.ReadFile(textBox1.Text.Trim());//读出textbox1的文件内容
response=(ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse类里面。
如果目标机器的Obex服务没有打开,会发生文件传输错误//
intC;
for(C=0;C<=100;C++)progressBar1.Value=C;
MessageBox.Show("发送成功!
");
listBox1.Items.Add(textBox1.Text.Trim());//将文本框中的内容添加到列表中
B、清空历史:
privatevoidbutton1_Click(objectsender,EventArgse)
{
listBox1.Items.Clear();//清空列表
}
5.4.4添加时间框
5.4.5添加背景图片
5.5接收端
程序如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingInTheHand.Net;
usingInTheHand.Net.Bluetooth;
usingInTheHand.Net.Sockets;
usingSystem.Threading;
namespaceWindowsApplication1
{
publicpartialclassForm1:
Form
{
privateThreadthreadfile;
privateObexListenerlistener;
privateboollistening;
publicForm1()
{
InitializeComponent();
}
privatedelegatevoidSafeWinFormsThreadDelegate(stringmsg);//监听线程
privatevoidWriteMsg(stringmsg)
{
SafeWinFormsThreadDelegated;
d=newSafeWinFormsThreadDelegate(UpdateUI);
Invoke(d,newobject[]{msg});
}
publicvoidDealWithRequest()//处理请求
{
while(this.listener.IsListening)
try
{
ObexListenerContextolc=listener.GetContext();
ObexListenerRequestolr=olc.Request;
stringfilename=olr.RawUrl.TrimStart(newchar[]{'/'});
olr.WriteFile(DateTime.Now.ToString("2012-12-12")+filename);
}
catch
{continue;}
}
privatevoidUpdateUI(stringmsg)
{
listBox1.Items.Add(msg);
}
privatevoidstart_Click(objectsender,EventArgse)
{
if(listener==null)
{
listener=newObexListener();
BluetoothRadio.PrimaryRadio.Mode=RadioMode.Discoverable;
}
listener.Start();
listening=true;
threadfile=newThread(DealWithRequest);
threadfile.Start();
start.Enabled=false;
STOP.Enabled=true;
UpdateUI("监听开始!
");
}
privatevoidSTOP_Click(objectsender,EventArgse)
{
if(listener!
=null)
{
listener.Stop();
}
if(threadfile!
=null)
{
threadfile.Abort();
}
start.Enabled=true;
STOP.Enabled=false;
UpdateUI("监听停止!
");
}
privatevoidtabPage1_Click(objectsender,EventArgse)
{
}
}
}
6、心得体会
开学就有三周的实习感觉有点不太适应,但是嵌入式系统的实习让我找到了乐趣,让我感觉到了电子世界的丰富多彩以及更深入的了解日常生活中的蓝牙背后的故事。
从一点都没有接触过,到后来的可以说是喜欢上这个实验课了。
当然,在实验中,我还是有过许多错误的操作,在这次设计中还是走了很多弯路,运用软件不熟悉,但在老师的指导下以及同学的帮助下,现在基本能够熟练操作。
在不断摸索和查找资料的过程中,学会了迅速检索资料的能力,就是感觉这种实习是对自己的一种锻炼,发现困难,克服困难,很充实。
大三的我开始学习专业课,这次的实习是我专业课的开始,也激起了我对通信专业的热爱。