蓝牙实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式技术应用实践
实习报告
(蓝牙)
通信工程
龚惠祯
121041A班
121041109
一、学习目的
了解处理器的发展
掌握WinCE嵌入式系统开发方法和开发流程。
掌握WinCE嵌入式C#编程方法。
掌握WinCE嵌入式网络通信技术。
掌握Bluetooth编码技术
二、嵌入式系统
(一)什么是嵌入式系统:
●嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
●它是完成特定任务的计算机系统。
嵌入式系统一般由硬件设备、嵌入式操作系统、嵌入式应用软件组成。
(二)嵌入式系统的特点
传统PC机是面向个人的一个通用操作平台,而嵌入式计算机系统是面向专业设备的一个特定平台。
专用性:面向特定用户和特定行业的
高效简洁性:对嵌入式系统设备的软件和硬件能够进行裁剪和定制。
高可靠和低能耗性:保证嵌入式系统设备运行安全可靠、实时操作和较低的耗电量。
自身特殊性:所需的软件需要在特定的开发环境中进行定制开发。
三、PC上模拟运行WinCE
(一)实验目的
✧ 熟悉Windows CE 6.0的开发环境
✧ 掌握新建Windows CE 6.0平台的方法
✧ 了解模拟器的工作原理及用途
(二)实验设备
1) 硬件:
✧ PC机一台
2) 软件:
✧ Visual Studio 2005
✧ Windows CE 6.0
(三)实验原理
模拟器(Emulator)是Windows CE开发一直以来被广大开发人员所使用的一个软件工具,它是在X86架构的开发机上模拟X86或者ARM的处理器。
开发人员可以利用这个工具来测试编译生产的映像或者应用程序,虽然模拟器和真实设备还有一定的区别,有时候会出现在模拟器上运行很好的程序,在真实设备上却不能运行或者运行出错的情况,但是可以肯定的是,模拟器可以为开发人员节约很多时间。
在安装了Windows CE 6.0之后会默认安装好Emulator的BSP包,可以直接使用而不用额外安装。
另外也可以从微软官方网站下载最新的Emulator BSP 安装包更新。
这里使用默认的Emulator BSP。
(四)实验内容
1) 新建Emulator工程并编译
2) 导出SDK
3) 安装SDK并尝试使用模拟器
四、Visual Studio 2005 开发环境简介
了解编写应用程序的流程
理解 Windows 窗体
使用基本控件如标签、文本、按钮、列表框和组合框
掌握窗体的常用属性和方法
编写应用程序的流程
创建项目、窗体
设置控件属性
编写事件的代码
调试
总结
WinForms可用于Windows 窗体应用程序开发
Windows 窗体控件是从System.Windows.Forms.Control 类派生的类
标签控件用于显示用户不能编辑的文本或图像
按钮控件提供用户与应用程序交互的最简便方法
组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选择项目
窗体提供了收集、显示和传送信息的界面,是GUI的重要元素
消息框显示消息,用于与用户交互
五、蓝牙通信技术
(一)蓝牙技术概述
蓝牙(Bluetooth)是目前比较流行的一种短距离无线通讯技术,其主要目的就是要在全世界范围内建立一个短距离的无线通信标准。
设计者的初衷是用隐形的连接线代替线缆。
它取代目前多种电缆连接方案,通过统一的短程无线链路,在各信息设备之间可以穿过墙壁或公文包,实现方便快捷、灵活安全、低成本小功
耗的话音和数据通信。
•“蓝牙”技术的目的是使特定的移动电话、便携式电脑以及各种便携式通信设备的主机之间在近距离内实现无缝的资源共享。
•具体地说,“蓝牙”技术的作用就是简化小型网络设备(如移动PC、掌上电脑、手机)之间以及这些设备与Internet之间的通信,免除在无绳电话或移动电话、调制解调器、头套式送/受话器、PDA、计算机、打印机、幻灯机、局域网等之间加装电线、电缆和连接器。
蓝牙技术使用全球通行的、无需申请即可使用的2.45GHzISM(工业Industry、科学Science、医学Medicine)频段(2.400—2.4835GHz)。
若以2.45GHz为中心频率,在这个频段上最多可设立79个带宽为1MHz的信道。
采用跳频扩谱的低功率传输外,蓝牙还采用鉴权和加密等措施来提高通信的安全性。
(二)蓝牙技术的特点
蓝牙技术是为了实现以无线电波替换移动设备所使用的电缆而产生的。
它试图以相同成本和安全性完成一般电缆的功能,从而使移动用户摆脱电缆束缚,这就决定了蓝牙技术具备以下技术特性。
1.成本低
为了能够替代一般电缆,它必须具备和一般电缆差不多的价格,这样才能被接受,也才能普及开来。
2. 功耗低、体积小
蓝牙技术本来目的就是用于互连小型移动设备及其外设,它的市场目标是移动笔记本电脑、移动电话、小型的PDA以及它们的外设,因此蓝牙芯片必须具有功耗低、体积小的特点,以便于集成到小型便携设备中去。
蓝牙产品输出功率很小(只有1mW),仅是微波炉使用功率的百万分之一,是移动电话的一小部分。
3.近距离通信
蓝牙技术通信距离为10m,如果需要的话,还可以选用放大器使其扩展到100m。
这已经足够在办公室内任意摆放外围设备,而不用再担心电缆长度是否够用。
4.安全性
同其它无线信号一样,蓝牙信号很容易被截取,因此蓝牙协议提供了认证和加密功能,以保证链路级的安全。
蓝牙系统认证与加密服务由物理层提供,适合于硬件实现,密钥由高层软件管理。
除此之外,跳频技术的保密性和蓝牙有限的传输范围也使窃听变得困难。
(三)蓝牙设计实验步骤
1.先在Microsoft Visual Studio 20005中建立一个新的设备应用程序项目,在Form1中添加三个Button,一个Combobox,两个Label,及一个Texbox。
排列如图所示。
2.更改按钮属性中的内容Text分别为sousuo、浏览文件、发送文件,更改Label命名lanya,更改combobox命名为list
3.打开按钮程序设计程序
4.添加ARM工具,form1属性栏中单击右键添加。
完成的应用程序如下图所示。
5.连接实验箱,部署程序,在实验箱显示屏上测试蓝牙功能。
(四)制作CAB安装包
当用户需要在开始菜单中点击安装程序之后的快捷方式,就能运行程序。
这就需要使用CAB安装包进行程序的部署。
2005对CAB安装包制作提供了良好的支持,开发者只需进行一些操作,无需编写一行代码就能完成安装包的制作。
创建CAB安装包项目的步骤
2005专门为制作安装包提供了项目类型和专用的项目模板,因此,一个CAB安装包的制作工作是从创建一个项目开始的。
1.选择“Add”/“New Project”,这样将弹出“New Project”对话框,选择智能设备CAB项目,输入项目名称。
2.在解决方案资源管理器上,项目-右键-添加-新建项目
3.安装和部署-智能设备CAB项目-名称和位置
4.添加可执行文件
可执行文件通常放在“应用程序文件夹”中,通过鼠标右键,依次选择“添加”/“项目输出”菜单项,这时将弹出“添加项目输出组”如图所示,选中“主输出”单击确定,对应项目输出的可执行文件添加到安装包中。
5.创建快捷方式
快捷方式通常是应用程序向用户展现的窗口,通过使用2005为应用程序制作安装包时,可以和方便地创建快捷方式。
右键鼠标目标计算机上的文件系统,添加Start Menu文件夹。
在编辑器右侧列表视图中,单击鼠标右键,选择“创建新的快捷方式”菜单项。
-应用程序文件夹-主输出来自…(活动)
将快捷方式改一个容易记住的名字,不能为中文名字,此名称即为实验箱-
开始-程序-中的名字,该名字即快捷方式名称。
6.生成安装包和分发安装包
在解决方案资源管理器“Solution Explorer”窗口右键单击安装包项目,选择”生成”菜单项,等待片刻之后,生成扩展名为.cab的安装文件。
如果生成错误,选择部署项目属性-manufacturer-微软中国-改成英文,重新生成
7.运行
在CAB项目文件夹下,debug子文件夹-选择压缩文件。
通过同步软件-我的电脑-智能设备,复制到设备端。
嵌入式设备上运行生成.CAB安装文件,即可自动完成程序的各项配置。
点击开始-程序-快捷方式就会自动运行程序。
PC端程序打包步骤和设备端基本一致
◆首先在资源方案管理器中添加新建项目,我们选择安装和部署中的安装项目,重命名为…setup
◆添加可执行文件:选则应用程序文件夹中添加项目输出,主输出
◆添加快捷方式:在开始程序中添加快捷方式,并改用英文名字。
◆生成
◆安装
◆运行
(五)实验箱中运行程序
1.在开始程序中打开lanya程序
2.点击sousuo 会显示“正在搜索。
”,搜索完成后显示“搜索完成”。
3.在下拉列表中选择设备进行配对
4.配对完成后,点击浏览文件,选择要发送的文件后,点击Ok,文件名称会自动在选择要发送的文件下表中显示。
5.点击发送文件按钮,接受设备选择接收后,发送完成。
显示频上就会出现“OK,Final”的字样。
六、知识拓展
51单片机的特点:
易学易用,常是一个人的项目
接口方便
从事51研发的人力资源丰富
51单片机的不足:
运行速度慢
无法满足中、高端产品的需要
对存储器的管理能力比较差
对操作系统的支持比较差
ARM的优点:
低功耗、低成本、高性能
带DSP及JA V A支持
RISC指令集、支持ARM/THUMB
芯片型号多
支持的操作系统多、支持的开发工具多
性价比的变化
调试技术的革新
对操作系统的更好的支持
更好的存储器管理
ARM开发的特点:
要求比较多的相关知识
微处理器及接口技术
高频电路、多层板的设计
嵌入式汇编程序
BSP
C语言
嵌入式操作系统
嵌入式应用程序
七、实习心得
经过了一个礼拜的学习,嵌入式程序跟我们曾经学习过的C语言程序和matlab程序还是有很大的相通性,对比起来学习还是能够收获更多的。
这个实习相比起电子技术应用设计实习简单很多,但是仅仅依靠自己的力量还是很有难度的,这时候多问多讨论显得尤其重要。
一开始不明白这种程序到底怎么写,在刚开始的时候遇到了很多难题,要么是编译出错,要么是调试部署出错,最后小组三人还是把精力集中在一个程序上,而不是同一开始一样各人人做个人的。
三个人的力量比一个人的力量强大很多,不仅仅有了成果,小组三人也都明白了是怎么回事。
附录
(程序部分)
using System; //基础核心命名空间//
using System.Collections.Generic;//ArrayList、BitArray、Hashtable、Stack、StringCollection 和StringTable 类//
using ponentModel;
using System.Data;
using System.Drawing;//提供大量绘图工具的访问权限//
using System.Text;
using System.Windows.Forms;//大量窗体和控件//
using ;
using .Bluetooth;
using .Sockets;
using System.Threading;
namespace sousuo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_ParentChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e) {
BluetoothRadio radio = BluetoothRadio.PrimaryRadio;//定义为主设备
if (radio == null)//如果没有蓝牙协议则
{
MessageBox.Show("没有蓝牙设备或者没有支持的蓝牙协
议栈!");//消息框用于显示消息
return;
}
radio.Mode = RadioMode.Discoverable;//设置为可发现设备BluetoothClient client = new BluetoothClient();//声明一个新的客户端
client = new BluetoothClient();
nya.Text = "正在搜索蓝牙设备...";
Application.DoEvents();//立即执行
BluetoothDeviceInfo[] cbbthDevices =
client.DiscoverDevices();
list.DataSource = cbbthDevices;
list.DisplayMember = "DeviceName";//蓝牙设备名字
list.ValueMember = "DeviceAddress";//蓝牙地址
lanya.Text = "蓝牙设备搜索完成";//搜索完成
Application.DoEvents();
}
private void label1_ParentChanged_1(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e) {
}
private void button3_Click(object sender, EventArgs e) {
ObexWebResponse response = null;//新建一个变量
System.Uri uri = new Uri("obex://" +
list.SelectedValue.ToString() + "/"+//获取服务器obex的uri,获取要传送的文件名
System.IO.Path.GetFileName(txtFile.Text.Trim()));
ObexWebRequest request = new ObexWebRequest(uri);//通过obexWebRequest来推送目标文件到目标机器,发送请求,等待回应
request.ReadFile(txtFile.Text.Trim());//读出txtFile.Text.Trim的文件内容
try
{
response =
(ObexWebResponse)request.GetResponse();//回应封装在ObexWebResponse类里面。
如果目标机器中的obex服务器没有打开,会发生文件传输的错误
MessageBox.Show(response.StatusCode.ToString());
}
catch//若以上不执行则下文
{
MessageBox.Show("传输文件失败");//若发送文件失败则显示传输文件失败
}
;
}
private void button2_Click(object sender, EventArgs e) {
OpenFileDialog ofd = new OpenFileDialog();//浏览文件
if(ofd.ShowDialog() == DialogResult.OK)//判断是否点击确定按钮
{
txtFile.Text = ofd.FileName;//txtFile为变量名,可自定义
}
}//以上是选择浏览文件选择文件功能
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void list_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}。