当前位置:文档之家› 在Windows mobile 6模拟器中实现蓝牙数据采集

在Windows mobile 6模拟器中实现蓝牙数据采集

在Windows mobile 6模拟器中实现蓝牙数据采集
在Windows mobile 6模拟器中实现蓝牙数据采集

本文由changesway贡献

pdf1。

在 Windows mobile 6.0 模拟器中实现蓝牙数据采集 一、Windows mobile 6.0 中蓝牙驱动的加载

大家知道,Windows Mobile 6.0 SDK 自带了 cellular emulator 和 fake GPS,使 得我们可以在模拟器上调试 radio 级的 phone call 和基于 GPS 的地理位置应用。 我们来看看实现Bluetooth的架构,参考下图(来源于 Bluetooth for Microsoft Device Emulator),主要包括emulator端和PC端:

1.1 软硬件条件

1. Emulator 端

Bluetooth HCI Transport Driver Serial Port Driver

Microsoft Remote Tools Framework remote agent 2. PC 端 Microsoft Remote Tools Framework desktop plugin FreeBT USB Driver runtime

Driver Connected Bluetooth USB device 注意:作者采用了FreeBT这个开源的工程来控制Bluetooth的接入。 在 Windows Mobile 模拟器上使用蓝牙的必要条件有: 1. Visual studio 2005 with SP1 或者 Visual studio 2008 2. Windows Mobile 5.0 Pocket PC/Smartphone SDK and/or Windows Mobile 6 Standard/Professional SDK emulator images 3. Device Emulator 3.0 4. Microsoft Remote Tools Framework 1.00 5. 一个具有 USB 接口的 Bluetooth dongle

FreeBT USB

1.2 模拟环境搭建 (一)安装 FreeBT 蓝牙驱动

在Windows Mobile模拟器上使用蓝牙,即在PC端安装下载的FreeBT的蓝牙驱 动,方法自然是通过“windows设备管理器” ,为新的硬件设备(也就是连接的 Bluetooth USB device)添加下载过来的驱动(主要是找到fbtusb.inf文件) 。具体 如下: 1、打开 Windows 设备管理器。 2、在设备管理器,找到蓝牙设备将设备用作 FreeBT USB 接口。 3、点击鼠标右键并选择“更新驱动程序……”在弹出的菜单。 4、选择“否,暂时不”,然后点击“下一步>”。 5、选择“安装从列表或指定位置”,然后点击“下一步>”。 6、选择“不要搜索。我将选择要安装的驱动”,然后点击“下一步>”。 7、选择设备驱动程序,然后点击“从磁盘安装…… ”. 8、在查找文件对话框中,浏览到 fbtusb.inf 文件,然后点击“下一步>”。 9、当一个“硬件安装警告”出现后,点击“仍然继续”。 10、一旦安装完毕后,点击“完成”。 11、设备管理器现在应显示“FreeBT USB 驱动”在名单的 USB 控制器。

(二)安装加载 Bluetooth for Microsoft Device Emulator

1、安装 FreeBT USB 驱动中描述了蓝牙 USB 驱动安装部分。 2、安装要求如描述的安装步骤。 3、 在 Remote Tools Framework plugin 中运行 BthEmulManager.cetool,将其 和模拟器建立连接。 4、从列表中选择一个仿真图像。 5、等待模拟器连接。 6、选择“Bluetooth for Microsoft Device Emulator”节点。 7、如果你有一个蓝牙设备连接成功,那么蓝牙设备信息(地址,制造商, 人机交互版本和 LMP 版本)将被显示。现在,蓝牙应该运行在你的模拟器上。

如果有一个错误代码,则将被显示。如图 9 所示。

8、要清除通讯记录,点击鼠标右键,选择“清除”。 9、当前设备信息复制到剪贴板,选择“蓝牙为微软装置模拟器"节点,点击 鼠标右键,选择“拷贝到剪贴板” 。 10、关掉蓝牙的模拟器,点击“连接”菜单,选择“脱离…模拟器” 。 11、 微软远程工具结构允许你在同一时间启动两个装置模拟器。如果您已经 安装了两个或两个以上 FreeBT USB 设备, 点击“窗口”菜单并选择“切分窗口查看”。

重复步骤 3-6。你将得到两个同时运行的蓝牙驱动仿真器。 12、很可能要启用/禁用设备端日志记录。如果您启用“设备日志记录”复选 框,然后将启用远程登录在模拟器上。关注\ \ Temp 的模拟器目录。应该有建立 btd_bthemul_0.txt,btd_BthEmulAgent_0.txt,btd_bthemulcom_0.txt 文件。 13、很可能要启用/禁用桌面端日志记录。如果您启用“桌面日志记录”复选 框, 那么就将启用本地记录。 查看你的安装目录, 应该有建立 BthEmulManager.txt 文件。 14、很可能要启用/禁用通讯记录。通讯记录可以看到仿真器和蓝牙设备之 间的通信活动。

(三)连通测试

连接建立以后,蓝牙设备的信息(Address, Manufacturer, HCI Version, LMP Version)就会显示在界面上。 在程序启动后,首先搜索附近的蓝牙设备,搜索过程完成以后,将其设备的 名字和蓝牙地址显示在下拉列表中,然后就可以进行双向的消息发送和接收了。 程序运行界面如下图 10 所示: 需要注意的是,在设备蓝牙的时候,如果没有将“对其他设备可见”选项打 上勾,即只是将蓝牙打开,如下图所示。 可能无法正常通信,应用程序会提示无法发送消息。选中“对其他设备可见” 之后,就能够正常通信了,如下图 12 所示: 在蓝牙配对中,当 Windows Mobile 找到了蓝牙设备金瓯,金瓯设置的蓝牙 连接密码是 1234。如图 13 所示。

成功后,选择打开蓝牙时不会出错

正在搜索设备过程中

搜索完成

建立连接过程中要求输入连接密码

选择蓝牙服务——串口连接服务

创建成功 COM 端口

二、Bluetooth 操作的软件实现

由于蓝牙无线协议在手机中的应用较为广泛, 因此, 无论是 Windows Mobile SDK,还是其他第三方商业或开源软件组织,都对蓝牙程序设计有较好的支持。

如 著 名 的 OpenNETCF , 在 其 早 期 的 版 本 中 就 提 供 了 OpenNETCF.Bluetooth.WidComm 库 , 而 微 软 则 有 官 方 版 本 的 Microsoft Bluetooth Stack 提供,目前,比较流行的库有 32feet.net。三方的地址 列表如下: 1. InTheHand.NET项目(即 32feet.net) 2. OpenNETCF项目 在.NET Compact Framework 下进行 Bluetooth 开发有几个可选解决方案 ? 可以 P/Invoke 直接调用 Bluetooth 的 API(btdrt.dll) ? 使用 MS 的 Windows Embedded Source Tools for Bluetooth ? 使用 32feet.NET 库 而这些库里, 对蓝牙串口服务的支持均存在一定的缺陷,如 Feet32.Net 的作 者甚至声称其中建立串口连接的代码是不安全的。这个问题在模拟器下更显突 出,原因是模拟器下,对串口的支持仅是从 COM0~COM2,而在使用 SDK 中列 举时,得到的结果却是 COM0~COM10,这样,如果随机选择了大于 COM2 的虚 拟端口,程序便会报错。而这个问题,在手动创建蓝牙虚拟串口服务时也会不时 发生。由于暂时没有真实的 Mobile 设备进行测试,不能完全证明,是由于模拟 器的问题还是 SDK 使用不当的问题,留待购置了 Mobile 设备后再来研究。 OpenNETCF 的新版本中,不知何故去除了 WidComm 的包,但仍有网友在其 源代码上进行部分的改造利用, 下文就针对上面所列的两种库的使用进行简要的 说明。

2.1 利用 32feet.net 实现 Windows Mobile 上的蓝牙数据传输

(一)32feet.NET 简介

32feet.net 是由 InTheHand 公司所属的一个开源项目组织, 专门针对基于.NET 平台的无线数据传输(如蓝牙,红外等)提供技术支持。目 前已经发布的组件有: ? Bluetooth(蓝牙) ? IrDA(红外) ? ObjectExchange(OBEX 文件交换) 对蓝牙的支持需要设备兼容 Microsoft Bluetooth 协议栈。CE.NET4.2 或 XP 以

上的操作系统。

(二)32feet.NET 类库结构 表 1:InTheHand 类库结构 名字空间 InTheHand 描述 The InTheHand namespace contains

classes for working with the Uri class for personal area networks. The InTheHand.Net namespace contains classes for working with addressing on personal area networks. The InTheHand.Net.Bluetooth namespace contains classes for working with Bluetooth functionality such as Radio hardware.

InTheHand.Net

InTheHand.Net.Bluetooth

The InTheHand.Net.Bluetooth.AttributeIds InTheHand.Net.Bluetooth.AttributeIds namespace contains definitions of Service Discovery Protocol attributes. The InTheHand.Net.IrDA namespace contains classes for working with Infrared functionality. The InTheHand.Net.Mime namespace holds types that

 are used to represent Multipurpose Internet Mail Exchange (MIME) headers The InTheHand.Net.Ports namespace contains classes for working with legacy virtual COM ports over Bluetooth. The InTheHand.Net.Sockets namespace provides added functionality for working with IrDA and Bluetooth Sockets. The InTheHand.Windows.Forms namespace contains forms related to networking functionality.

InTheHand.Net.IrDA

InTheHand.Net.Mime

InTheHand.Net.Ports

InTheHand.Net.Sockets

InTheHand.Windows.Forms

现仅列举 32feet.NET 中的 Buletooth 及 Sockets 名字空间,以供参考。 表 2:InTheHand.Net.Bluetooth 名字空间 类 AttributeIdLookup 描述 Retrieves the name of the SDP Attribute

ID with the given value in the specified Attribute ID class sets. Implementing Enum-like behaviour. Configures what type of element will be added by the ServiceRecordBuilder for the ProtocolDescriptorList attribute. Represents a Bluetooth Radio device. Handles security between bluetooth devices. Standard Bluetooth Profile identifiers. Provides Bluetooth authentication services on desktop Windows.

BluetoothProtocolDescriptorType

BluetoothRadio BluetoothSecurity BluetoothService BluetoothWin32Authentication

Provides data for an authentication BluetoothWin32AuthenticationEventArgs event. Describes the device capabilities of a device. and service

ClassOfDevice

DeviceClass

Class of Device flags as assigned in the Bluetooth specifications. Represents the types that an SDP element can hold. Represents the type of the element in the SDP record binary format, and is stored as the higher 5 bits of the header byte. Specifies the current status of the Bluetooth hardware. Represents a member of the SDP LanguageBaseAttributeIdList, Attribute which provides for

ElementType

ElementTypeDescriptor

HardwareStatus

LanguageBaseItem

multi-language strings in a record. LinkPolicy Manufacturer Flags to describe Link Policy. Manufacturer codes. Gets a list of enum-like classes containing SDP Service Attribute Id definitions for a particular Service Class. Determine all the possible modes of operation of the Bluetooth radio. Holds an attribute from an SDP service record. A Service Attribute Id identifies each attribute within an SDP service record.

MapServiceClassToAttributeIdList

RadioMode

ServiceAttribute

ServiceAttributeId ServiceClass ServiceElement ServiceRecord

Holds an SDP data element. Holds an SDP service record. Provides a simple way to build a ServiceRecord, including ServiceClassIds and ServiceNames attributes etc. Creates a Service Record byte array from the given ServiceRecord object. Some useful methods for working with a SDP ServiceRecord including creating and accessing the ProtocolDescriptorList for an RFCOM

M service. Parses an array of bytes into the contained SDP ServiceRecord. Utilities method working on

ServiceRecordBuilder

ServiceRecordCreator

ServiceRecordHelper

ServiceRecordParser ServiceRecordUtilities

SDP ServiceRecords, for instance to produce a 'dump' of the record's contents. Represents the size of the SDP element in the record binary format, and is stored as the lower 3 bits of the header byte. Indicates that the field to which it is applied represents an SDP Attribute that can exist in multiple language instances and thus has a language base offset applied to its numerical ID when added to a record.

SizeIndex

StringWithLanguageBaseAttribute

表 3: InTheHand.Net.Sockets 名字空间 Type

AddressFamily32

Description

Specifies additional addressing schemes that an instance of the Socket class can use. Provides client connections for Bluetooth network services. Provides information about an available device obtained by the client during device discovery. Listens for connections from Bluetooth network clients. Specifies additional protocols that the Socket class supports. Defines additional Bluetooth socket option levels for the SetSocketOption(SocketOptionLevel, SocketOptionName, Int32) and GetSocketOption(SocketOptionLevel, SocketOptionName) methods. Defines Socket configuration option names for the Socket class. Describes the character sets supported by the device. Makes connections to services on peer IrDA devices.

BluetoothClient

BluetoothDeviceInfo

BluetoothListener BluetoothProtocolType

BluetoothSocketOptionLevel

BluetoothSocketOptionName

IrDACharacterSet IrDAClient

IrDADeviceInfo

Provides information about remote devices connected by infrared communications. Describes an enumeration of possible device types, such as Fax. Places a socket in a listening state to monitor infrared connections from a specified service or network address. Defines additional IrDA socket option levels for the SetSocketOption(SocketOptionLevel, SocketOptionName, Int32) and GetSocketOption(SocketOptionLevel, SocketOptionName) methods. Socket option constants to set IrDA specific connection modes, and get/set IrDA specific features.

IrDAHints

IrDAListener

IrDASocketOptionLevel

IrDASocketOptionName

2.2 基于 32feet.NET 的蓝牙程序设计

Bluetooth 的应用十分广泛,基于 Bluetooth 的通信程序开发主要有以下几个 步骤: 1. 服务端 ? 设置本设备为可发现。 ? 公开服务给其他 Bluetooth 设备访问。 ? 接受其他 Bluetooth 设备的链接。 ? 与链接上的 Bluetooth 设备进行通信。 2. 客户端 ? 发现周边 Bluetooth 设备。 ? 主动与被发现的设备发起连接。 ? 与链接上的 Bluetooth 设备进行通信。 (一) 蓝牙功能设置 (1)服务端 开启蓝

public static void DisplayBluetoothRadio() { BluetoothRadio myRadio = BluetoothRadio.PrimaryRadio; if (myRadio == null) {

WriteMessage("No radio hardware or unsupported software stack"); return; } // Enable discoverable mode myRadio.Mode = RadioMode.Discoverable; } 开启服务

private static void StartService() { BluetoothListener listener = new BluetoothListener(BluetoothService.SerialPort); listener.Start(); WriteMessage("Service started!"); BluetoothClient client = listener.AcceptBluetoothClient(); WriteMessage("Got a request!"); Stream peerStream = client.GetStream(); string dataToSend = "Hello from service!"; // Convert dataToSend into a byte array byte[] dataBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(dataToSend); // Output data to stream peerStream.Write(dataBuffer, 0, dataBuffer.Length); byte[] buffer = new byte[2000]; while (true) { if (peerStream.CanRead) { peerStream.Read(buffer, 0, 50); string data = System.Text.ASCIIEncoding.ASCII.GetString(buffer, 0, 50); WriteMessage("Receiving data: " + data); } } }

DisplayBluetoothRadio 用来展现本端设备的信息, 以及把本端 bluetooth 设备 设置为可发现。如果使用 32feet.NET 2.3,也就是当前最新的 release 版本,wince 不支持读取和设置 radio mode。 服务端的侦听 BluetoothListener 还是使用 winsock 实现和 Windows Embedded Source Tools for Bluetooth 的实现类似。

(2)客户端

private static void ConnectService() { BluetoothClient client = new BluetoothClient(); BluetoothDeviceInfo[] devices = client.DiscoverDevices(); BluetoothDeviceInfo device = null; foreach (BluetoothDeviceInfo d in devices) { if (d.DeviceName == "BLUETOOTH_DEVICE") { device = d; break; } } if (device != null) { WriteMessage(String.Format("Name:{0} Address:{1:C}", device.DeviceName, device.DeviceAddress)); client.Connect(device.DeviceAddress, BluetoothService.SerialPort); Stream peerStream = client.GetStream(); // Create storage for receiving data byte[] buffer = new byte[2000]; // Read Data peerStream.Read(buffer, 0, 50); // Convert Data to String string data = System.Text.ASCIIEncoding.ASCII.GetString(buffer, 0, 50); WriteMessage("Receiving data: " + data); int i = 0; while (true) { WriteMessage("Writing: " + i.ToString()); byte[] dataBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(i.ToString()); peerStream.Write(dataBuffer, 0, dataBuffer.Length); ++i; if (i >= int.MaxValue) { i = 0; } System.Threading.Thread.Sleep(500); }

// Close network stream peerStream.Close(); } }

32feet.NET 2.3 提供了自发现功能,通过 client.DiscoverDevices()寻找附近的 bluetooth 设备。在上述例子中指定连接名字为"BLUETOOTH_DEVICE"的设备。 Winsock 通 信 和 Windows Embedded Source Tools for Bluetooth 类 似 。 client.Connect(device.DeviceAddress, BluetoothService.SerialPort)用于连接名字为 "BLUETOOTH_DEVICE"的设备,同样指定串口服务。传输的数据为字节流(byte[]), 因此可以传输任意类型的数据。 客户端在接收回应信息后,不断的往服务端发送 数据。 (二) 蓝牙配对 Connect() 函数的第二个参数是服务类型,十分重要,通信双方必须使用同 样的服务类型。 如果通信双方的程序都是由我们负责开发,可以使用通用的服务 类型,例如 BluetoothService.SerialPort。但是如果要与第三方设备进行通信,需 要查出该设备的服务类型,在设备端的通信服务类型一般编写在 Firmware(固件) 里 面 , 而 且 会 按 照 规 范 编 写 , 例 如 Bluetooth 耳 机 会 使 用 BluetoothService.Handsfree。

try { BluetoothAddress deviceAddress = deviceAddresses[listBoxDevices

.SelectedItem.ToString()]; client.SetPin(deviceAddress, textBoxPin.Text.Trim()); //client.Connect(deviceAddress, BluetoothService.Handsfree); //if connect ot Hands free. client.Connect(deviceAddress, BluetoothService.SerialPort); //if connect to cell phone and so forth. MessageBox.Show("Pair successful."); //transfer data.. } catch (Exception ex) { MessageBox.Show(ex.Message); }

SetPin()的功能是设置连接密码的,其函数原型如下:

[DllImport("btdrt.dll", SetLastError=true)] public static extern int BthSetPIN(byte[] pba, int cPinLength, byte[] ppin);

(三) 虚拟串口 所谓 Bluetooth Virtual Serial Port,其实是从软件的角度看,把 Bluetooth 的 通信转化成 Serial Port(串口)。经过这样的转换后,使用 Bluetooth 的 Client 程 序可以像使用串口一样操作 Bluetooth。这个应用方式的出现是为了支持现有应 用(Legacy system,遗产应用)。举个例子,在 Bluetooth 出现以前,大部分移动 设备都是通过串口连接的 GPS receiver 的,基于 GPS 应用程序的开发也就通过的 串口通信取出 NMEA data。 所谓 Bluetooth Virtual Serial Port,其实是从软件的角度看,把 Bluetooth 的 通信转化成 Serial Port(串口)。经过这样的转换后,使用 Bluetooth 的 Client 程 序可以像使用串口一样操作 Bluetooth。这个应用方式的出现是为了支持现有应 用(Legacy system,遗产应用)。举个例子,在 Bluetooth 出现以前,大部分移动 设备都是通过串口连接的 GPS receiver 的,基于 GPS 应用程序的开发也就通过的 串口通信取出 NMEA data。随着 Bluetooth 的普及,移动设备可以通过 Bluetooth 来连接 GPS receiver 了,那么原先基于 GPS 的应用程序需要重新开发通信部分去 读取 NMEA data,这为现有应用带来很多麻烦,所有的现有应用都需要重写通信 部分,因此人们想出解决方法,把 Bluetooth 的通信转化成 Serial Port(串口)。 硬件上使用 Bluetooth 来进行通信,在软件上虚拟一个串口给应用程序,应用程 序不需要任何的修改就可以支持 Bluetooth 的 GPS Receiver 了。这就像设计模式 里面的 Adapter 模式,但是这里是为新设备提供原有的接口,使得原先的 Client 不需要更改。 由于 Bluetooth Virtual Serial Port 的出现基于对现有系统(Legacy System)支持 的需求,所以对于新的系统,MS 不推荐使用 Bluetooth Virtual Serial Port,而是 直接使用 Winsock 进行通信。 在使用 Winsock 进行 Bluetooth 通信需要指定服务, 因此可以指定使用串口服务进行通信。Bluetooth Virtual Serial Port 和 Winsock 的 Bluetooth 通信都是使用 RFCOMM 协议, 所以两者等同。 使用 Winsock 的 Bluetooth 通信比 Bluetooth Virtual Serial Port 更简单,不需要配置。而且更强壮(robust), 因为使用 Winsock 的 Bluetooth 通信可以直接监听到蓝牙设备关闭或者离开通信 范围,而 Bluetooth Virtual Serial Port 只能通过 Timeout 来检查。 由于支持现有系统(Legacy System),Bluetooth Virtual Serial Port 还是有存在 的价值,下面讲述 Bluetooth Virtual Serial Port 的开发。在 Windows Mobile 下有 两种方法可以建立 Bluetooth Virtual Serial Port:调用 API 建立 Bluetooth Virtual Serial Port 和修改注册表建立 Bluetooth Virtual Serial Port。 (1) 使用 32feet.net API 在 32feet.net 里 面 , 创 建 虚 拟 串 口 这 些 API 封 装 在 InTheHand.Net.Ports.BluetoothSerialPort,可以直接使用。但是 32feet.net 的作者 提醒这些 API 是不是可信赖的(unreliable),所以在使用之前请要谨慎考虑和详细 测试。我在 wince 5 下测试过,不能成功建立 Bluetooth Virtual Serial Port。 ? 使用 32feet.net 建立服务端口

public static void CreateIncomingPort() { BluetoothSerialPort port = BluetoothSerialPort.CreateServer(BluetoothService.SerialPort); Console.WriteLine(port.PortName);

使用 32feet.net 建立客户端口

public static void CreateIncomingPort() { BluetoothClient client = new BluetoothClient(); BluetoothDeviceInfo[] devices = client.DiscoverDevices(); BluetoothDeviceInfo device = null; foreach (BluetoothDeviceInfo d in 

devices) { if (d.DeviceName == "BLUETOOTH_DEVICE") { device = d; break; } } BluetoothEndPoint endPoint = new BluetoothEndPoint(device.DeviceAddress, BluetoothService.SerialPort); BluetoothSerialPort port = BluetoothSerialPort.CreateClient(endPoint); Console.WriteLine(port.PortName); }

(2)使用修改注册表法创建虚拟串口

if (state) { //write registry settings for WM5 Serial Port support //get available ports Microsoft.Win32.RegistryKey rkPorts = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Micro soft\\Bluetooth\\Serial\\Ports", true); string[] supportedPorts = (string[])rkPorts.GetValue("SupportedPorts"); System.Collections.ArrayList alPorts = new System.Collections.ArrayList(supportedPorts); //check availability foreach (string deviceid in rkPorts.GetSubKeyNames()) { Microsoft.Win32.RegistryKey rkDevice = rkPorts.OpenSubKey(deviceid); //remove port from arraylist if unavailable string port = rkDevice.GetValue("Port").ToString(); int nullPos = port.IndexOf('\0'); if (nullPos > -1)

{ port = port.Substring(0, nullPos); } if (alPorts.Contains(port)) { alPorts.Remove(port); } rkDevice.Close(); } if (alPorts.Count == 0) { throw new InvalidOperationException("No ports available"); } //write port details to registry Microsoft.Win32.RegistryKey rkNewPort = rkPorts.CreateSubKey(this.DeviceAddress.ToString("8")); rkNewPort.SetValue("KeepDCB", 0); rkNewPort.SetValue("RemoteDCB", 0); rkNewPort.SetValue("Encryption", 0); rkNewPort.SetValue("Authentication", 0); rkNewPort.SetValue("Port", alPorts[0]); rkNewPort.SetValue("Server", 0); rkNewPort.Close(); rkPorts.Close(); //try open port now try { InTheHand.Net.Ports.BluetoothSerialPort.CreateClient(alPorts[0].T oString(), new BluetoothEndPoint(this.DeviceAddress, BluetoothService.SerialPort)); } catch { } } else { //find and remove registry entries Microsoft.Win32.RegistryKey rkPorts = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Micro soft\\Bluetooth\\Serial\\Ports", true); foreach (string deviceAddress in rkPorts.GetSubKeyNames()) {

if (deviceAddress == this.DeviceAddress.ToString("8")) { rkPorts.DeleteSubKeyTree(deviceAddress); break; } } rkPorts.Close(); }

当 state 为 true 时为注册,当 state 为 false 时为反注册。

三、蓝牙—串口模块 3.1 蓝牙串口模块简介

蓝牙内嵌模块可以应用于各种家电、仪器(如医疗设备)等电子信息产品。 作为一种线缆取代方案, 它可以直接与单片机或处理器相连,采用即插即用的方 式实现设备间透明的无线数据传输。 蓝牙内嵌模块可以设置为主设备或从设备, 一个主设备与一个从设备配套使 用即可实现线缆替代。当蓝牙内嵌模块硬件电路连接正确,并且加电启动之后, 主从设备会自动建立连接,并且识别与记忆对方设备,之后,用户的设备就可以 像使用一条串口线一样的使用蓝牙内嵌模块。 蓝牙内嵌模块除了一对配套使用之外,也可以独立使用。如用户的设备连接 一个从设备的蓝牙内嵌模块,这样其它的蓝牙设备如蓝牙 PDA 可以搜索到此内 嵌模块,并且发现其提供的服务,通过此服务可以与其建立连接并进行通讯。对 于用户设备的通讯,仍然像使用串口线一样的使用此模块。 蓝牙内嵌模块提供了安全认证功能,当用户设置使用安全认证时,连接的设 备必须要进行鉴权, 只有通过鉴权的用户才能与其进行通讯,如果是一对蓝牙内 嵌模块,这些过程都将自动完成。

蓝牙内嵌模块引脚分配

蓝牙内嵌模块实物图

表 蓝牙内嵌模块引脚说明 序号 1 名称 CLR 描述 状态切换开关(输入) ,当采用正常模式:低电平为参数 设置状态,高电平为正常工作状态;当采用低功耗模式:

2 3 4 5 6 7,8,9,10 11,12,13,14 15 16 17 18 19,20,21,22 23,24

LNK CTS RTS TXD RXD NC

SLP PioA PioB Aio GND VCC

高电平为参数设置状态,低电平为正常工作状态。 连接指示(输出) ,处于连接状态时输出高电平,没有连 接输出低电平。 清除发送(输入) 请求发送(输出) 串行数据输出 串行数据输入 不接 不存在的引脚,是 DIP24(双排直插)删去的引脚,此产 品外型兼容 DIP24。 睡眠/唤醒/清地址(输入) ,当采用正常模式:不用时接 高电平;当采用低功耗模式:不用时接低电平。 输出备用端 0 输出备用端 1 可以用于电池电压监控,当电池最大电压高于 VCC 时, 需要分压(如下图说明) 。不用时可以悬空。 电源地 电源电压(输入)

3.2 注意事项及使用说明

(一)蓝牙模块间的通讯 启动后,对于主设备,如果没有记忆地址,则首先查询附近的蓝牙设备,如 果查询到蓝牙设备,主设备进入匹配状态,如果鉴权通过,主设备就会记忆(保 存)该设备的地址,并与该设备建立连接,如果连接成功,LINK 灯熄灭;如果 已经记忆地址,则主设备直接与记忆的设备相连,而不会进行查询与匹配。如果 模块没有设置绑定地址的选项, 主设备连接一段时间如果连接不成功,会主动清 除匹配的蓝牙设备地址, 重新查询蓝牙设备进行匹配连接;如果模块设置了绑定 地址的选项,当主设备已经记忆了某个蓝牙设备的地址时,无论是否连接成功, 都会不断进行连接尝试。 对于从设备,则等待其它设备的查询与连接,如果连接成功,LINK 灯熄灭。 如果模块没有设置绑定地址的选项, 只要设备没有被连接都可以被其它主设备查 询到并与其完成匹配连接的过程;如果模块设置了绑定地址的选项,当从设备已 经记忆了某个蓝牙设备的地址时,无论是否被连接,任何主设备都无法查找到该 设备,只有记忆的主设备能够连接上来。 记忆的地址可以通过 AT 指令和 SLP 按键清除。 (二) 蓝牙手机与蓝牙模块的连接 一般的蓝牙手机由于没有连接串口服务的菜单, 因此不能主动连接其它蓝牙 设备的串口服务。 如果要实现蓝牙手机和内嵌模块的串口服务连接,可以将内嵌 模块设置为主设备, 主动连接蓝牙手机。但是如果要与蓝牙内嵌模块进行数据通 信,一般需要自己编写或向手机生产商所要可以在手机上运行的串口通信软件。 (三)蓝牙 PDA 与蓝牙模块的连接 蓝牙 PDA 一般有自己蓝牙管理器,通过菜单或按钮查询蓝牙设备,搜索到 蓝牙内嵌模块后通过双击内嵌模块图标或长按图标等弹出菜单后选择查询蓝牙 内嵌模块的服务,查询到串口服务后,双击或长按图标等弹出菜单后选择连接。 一般蓝牙 PDA 有配置菜单(具体位置不同 PDA 位置不同) ,可以看到连接 串口服务使用的串口号,分为“入栈”和“出栈”两个串口号,当 PDA 主动连 接内嵌模块时,建立连接后数据收发使用“出栈”的串口号;如果是内嵌模块设 为主设备主动连接到 PDA,PDA 的数据收发使用“入栈”的串口号。

3.3 蓝牙—串口模块与 MCU 的连接

(一)接线 根据以上描述,可确定蓝牙模块与 MCU(此处以 Arduino 为例)的连接方式 如下表所示:

蓝牙引脚

1 2

名称

CLR LNK

MCU 引脚

可否悬空

P12(数字 IO) 否 P13 ( 该 引 脚 外 接 可以, 但建议连接, 以方便观 Arduino 板载指示灯) 察连接状态,或者监听连接状 态

3 4 5 6 15 19,20,21,22 23,24

CTS RTS TXD RXD SLP GND VCC

P11(数字 IO) P10(数字 IO) P0(串口 RXD) P0(串口 TXD) P9(数字 IO) GND 3.3V

否 否 可以,但建议连接,以方便控 制数据采集端为低功耗模式 否 否

(二)连接步骤 ① 首先确认模块在数据模式下指示灯是否闪烁,闪烁表示模块工作正常; ② 使模块进入参数设置状态,此时指示灯全部熄灭;单片机串口是否收到 蓝牙内嵌模块发出的数据“+OPEN:0\r\n”或“+OPEN:1\r\n” ; ③ 确认单片机

串口与内嵌模块的连线是否正常,单片机的 TXD 应该接 内嵌模块的 RXD,单片机的 RXD 应该接内嵌模块的 TXD,单片机与内嵌模块之 间是否使用了流控线 (RTS、 CTS) 如果没有使用流控线应该将内嵌模块的 RTS 和 , CTS 脚之间用 1k 的电阻连接起来;如果使用了流控线,可以用万用表测试内嵌 模块的 CTS 脚是否为低电平,不是低电平需要将其置为低电平。

3.4 蓝牙—串口模块指令及其测试

(一)蓝牙 AT 指令表 序号 1 2 3 4 5 6 指令 AT\r\n AT+BAUD=

\r\n AT+BAUD?\r\n AT+AUTH=< Para1>\r\n AT+AUTH?\r\n AT+PASSWORD=< Para1>\r\n AT+PASSWORD?\r\n AT+NAME=< Para1>\r\n AT+NAME?\r\n AT+CLASS=< Para1>\r\n AT+CLASS? \r\n AT+ROLE=< Para1>\r\n AT+ROLE? \r\n AT+CLEARADDR\r\n AT+SNIFF=

, 

\r\n AT+SNIFF? \r\n 指令说明 测试指令。 设置/查询波特率。 Para1:波特率。 设置/查询是否鉴权。 Para1: 不需鉴权, 0 否则需要鉴权。 设置鉴权密码。 Para1:密码。 设置/查询名称。 Para1:设备名称。 设置/查询设备类型。 Para1:设备类型(长度必须为 6 个字节) 。 设置/查询设备角色。 Para1: 为从设备, 0 否则为主设备。 清除记忆地址。 设置/查询 Sniff 节能方式。 Para1:最大时间;Para2:最小时 间。 Para3:尝试时间;Para4:超时时

7 8 9

10 11

AT+RESET\r\n AT+SCANTIME=

, 

\r\n AT+SCANTIME? \r\n

12

AT+BIND=< Para1>\r\n AT+BIND? \ r \n

13 14

AT+VERSION? \r\n AT+LED=

\r\n AT+LED?\r\n

15 16 17 18

AT+RADDR=

\r\n AT+ RADDR?\r\n AT+LADDR?\r\n AT+ RESTART\r\n AT+UARTMODE=

,< Para2>\r\n AT+ UARTMODE?\r\n AT+INQ\r\n AT+CANCEL\r\n AT+LOWPOWER= \r\n AT+ LOWPOWER?\r\n AT+ DATAMODE=

\r\n AT+ DATAMODE?\r\n

19 20 21

22

23

AT+ FLOWCONTROL=

\r\n AT+ FLOWCONTROL?\r\n ATZ?\r\n

24

间。 恢复默认设置。 设置/查询: 查询扫描与连接扫描参 数。此参数将影响系统的功耗。 Para1:连接间隔时间;Para2:连 接持续时间。 Para3:查询间隔时间;Para4:查 询持续时间。 设置/查询是否绑定。 Para1:0 没有绑定地址,否则绑定 地址。 默认:不绑定地址。 查询程序版本号。 设置/查询指示灯。 Para1: ”连接指示”的 PIO 口,默 认为 PIO0(黄灯);Para2: ”电源指示” 的 PIO 口,默认为 PIO1(红灯) 。 设置/查询远端蓝牙地址。 Para1:远端的蓝牙地址。 查询

本地蓝牙地址。 软件复位:发出该命令后内嵌模块 程序将重新启动,无须断电复位。 设置/查询串口通讯模式。 

: 停止位。0:1 位停止位;1:2 位停止 位

:校验位。0:无校验;1:奇 校验;2:偶校验 在查询远端蓝牙设备。

:蓝 牙地址。 取消查询远端蓝牙设备。 设置/查询低功耗模式。 

:0:不支持低功耗;1:支 持低功耗。 设置/查询未连接时数据处理模式。 :0:数据保存在缓冲中, 待连接建立后发送到对方蓝牙设备。 1:未连接时收到的数据直接丢掉。 设置/查询流量控制模式。 

:0:无流控;1:采用硬件 流控。 查询所有命令。

(二)指令测试

此例中,发送 AT+NAME?\r\n 共 10 个字符,应答收到: +NAME:my-jinou 其他命令就不一一举例了。

3.5 PC 蓝牙 dongle 与蓝牙模块之间的串口连接测试

PC 机 COM 端口示意图

如 PC 串口图中所示,COM20 为 PC 蓝牙选配器与蓝牙模块连接后的虚拟串口 COM2 为 USB 转串口设备 CP21xx 虚拟的串口

3.6 蓝牙模块 MCU 驱动

驱动程序即是对蓝牙模块 AT 指令集的软件封装。本例中,使用 Arduino 中 方便的串口操作实现了部分本例中所用到的 AT 命令。核心代码如下,这里仅以 ByaudRate 的设置与读取为例,其他的命令,可根据相应的代码,简单的修改完 成。

/* Bluetooth module serial Driver capsulate BT module. Receives from serial port 1, sends to the main serial (Serial 0). This example works only on the Arduino Duemi The circuit: * Jinou BTM0704 BT-UART Module * Arduino: created 24 May. 2010 by Changesway@zju */ const int CLR = 12; const char ping[] = "AT"; const char baudSet[] = "AT+BAUD="; const char baudRead[] = "AT+BAUD?"; const char roleSet[] = "AT+ROLE="; const char clearAddr[] = "AT+CLEARADDR"; const char bindSet[] = "AT+BIND="; const char authSet[] = "AT+AUTH="; void setup() { // initialize both serial ports: Serial.begin(9600); pinMode(CLR, OUTPUT); Init(); } boolean isConnected() { Serial.println(ping);//Send Ping Command delay(1000); return isOK(); }

void setBaud(long baudRate){ Serial.flush(); Serial.print(baudSet); Serial.println(baudRate); delay(2000); } void setAuth(int auth){ Serial.flush(); Serial.print(authSet); Serial.println(auth); delay(2000); } void setRole(int role) { Serial.flush(); Serial.print(roleSet); Serial.println(role); delay(2000); } void setBind(int bind) { Serial.flush(); Serial.print(bindSet); Serial.println(bind); delay(2000); } void clearAddress(){ Serial.flush(); Serial.print(clearAddr); delay(2000); } long readBaud(){ int byteCount = 0; char recBuf[20]; char baudRate[8]; boolean readOK = false; long baudRateValue = 0; Serial.println(baudRead);//Send Ping Command

delay(1000); byteCount = Serial.available(); //Serial.println(byteCount); if (byteCount > 0) { for(int i = 0; i < byteCount; i++){ recBuf[i] = Serial.read(); if((char)recBuf[i]== ':'){ //Serial.println("find :"); for(int j= 0; j< sizeof(baudRate); j++){ baudRate[j] = Serial.read(); if((char)baudRate[j] == '\r'){ readOK = true; break; } else{ byte onebit = (byte)baudRate[j] - 48;//ASCII to DEC //Serial.println(onebit, DEC); baudRateValue *= 10; baudRateValue += onebit; } } } if(readOK) break; } } Serial.println(baudRateValue,DEC); return baudRateValue; } boolean isOK() { boolean is_connect = false; int byteCount = 0; char recBuf[10]; byteCount = Serial.available(); Serial.println(byteCount); if (byteCount > 0 && byteCount <= 10) { for(int i = 0; i < byteCount; i++){ recBuf[i] = Serial.read(); if((char)recBuf[i] == 'O'){ recBuf[++i] = Serial.read(); if((char)recBuf[i] == 'K') is_connect = true;

} } } Serial.println(recBuf); return is_connect; }

3.7 蓝牙模块的初始化

初始化过程: ? 打开串口 ? 判断蓝牙模块连接状态 ? 设置蓝牙通信速率 ? 设置蓝牙模块为无安全验证状态 ? 清除绑定地址 ? 设置蓝牙模块为需绑定 ? 设置蓝牙模块为客户端并等待连接 ? 等待连接成功后(得到 LINK 信号) ? 初始化过程完毕 注意: 驱动使用前,必须保证将 CLR 位“拉低”才可将蓝牙模块设置为“参数设置 状态”。

void Init() { digitalWrite(CLR, LOW); delay(5000);

// sets the BT module in Setting Mode

if(isConnected()){ Serial.println("Connected"); long baud = readBaud(); if(baud != 115200){ setBaud(115200); Serial.begin(115200); } else{ Serial.begin(baud); } clearAddress(); // Clear binded Address setBind(0);// needn't binding setRole(0);// Client Mode setAuth(0);// needn't Auth }

digitalWrite(CLR, HIGH); delay(5000); }

3.8 蓝牙数据采集

(一) MCU 端 以 Arduino 为例:

void loop() { int an0 = analogRead(0); Serial.println(an0); delay(2000); }

连接成功后,便直接采集某一模块通道的数据,并通过串口发送到蓝牙模块,远 进无线发送到远端的设备。 如下图所示:

搜索设备 (二) Mobile 端

接收到的数据加入 ListBox

private void menuItem_seek_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; if (BluetoothClient.RadioMode == RadioMode.PowerOff) {

BluetoothClient.RadioMode = RadioMode.Connectable; } client = new BluetoothClient(); devices = client.DiscoverDevices(); Cursor.Current = Cursors.Default; this.listBox1.Items.Clear(); if (devices != null && devices.Length > 0) { for (int i = 0; i < devices.Length; i++) { if (devices[i].DeviceName != null) { this.listBox1.Items.Add(devices[i].DeviceName); } } } } private void menuItem_close_Click(object sender, EventArgs e) { this.timer1.Enabled = false; client.Close(); BluetoothClient.RadioMode = RadioMode.PowerOff; } private void menuItem_connect_Click(object sender, EventArgs e) { this.EpGps = new BluetoothEndPoint(this.address, BluetoothService.SerialPort); this.client.Connect(this.EpGps); } private void menuItem_ReadData_Click(object sender, EventArgs e) { this.timer1.Enabled = true; timer1_Tick(null, null); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (this.listBox1.SelectedIndex >= 0) { int index = this.listBox1.SelectedIndex; this.address = new BluetoothAddress(devices[index].DeviceID); } } private void timer1_Tick(object sender, EventArgs e) { byte[] buffer1 = new byte[0x200]; Stream GpsStream = this.client.GetStream(); int num1 = GpsStream.Read(buffer1, 0, 0x200); string gpsinfo = Encoding.ASCII.GetString(buffer1, 0, num1); listBox1.Items.Add(gpsinfo); } ? menuItem_seek_Click——完成搜索功能 ? menuItem_connect_Click——完成连接功能 ? timer1_Tick——定时接收数据

安卓模拟器4.0安装教学教程全解析

今天巴士HTC小编为大家带来安卓模拟器4.0安装教程全解析,最新版安卓模拟器4.0.4安装教程,如果您还不知道怎么操作的话,可以关注一下。谷歌在最新的安装4.0.3 R2模拟器中,加入了GPU支持,可以支持OpenGL ES 2.0标准,让开发者可以借助模拟器来测试自己的OpenGL游戏。在去年新增了摄像头支持之后,现在的新版安卓模拟器4.0.4也加入了包括多点触摸输入设备的支持,未来还将加入蓝牙和NFC支持。 QVGA (240x320, low density, small screen) WQVGA400 (240x400, low density, normal screen) WQVGA432 (240x432, low density, normal screen) HVGA (320x480, medium density, normal screen) WVGA800 (480x800, high density, normal screen) WVGA854 (480x854 high density, normal screen) WXGA720 (1280x720, extra-high density, normal screen) WSVGA (1024x600, medium density, large screen) WXGA (1280x800, medium density, xlarge screen) 一、运行环境的配置 1、准备你的电脑系统:XP 或 Windows 7 2、由于安卓模拟器4.0需要在Java环境才能运行,先下载Java安装吧:点击下载并安装!(如已有Java环境的可跳过此步)。 二、下载安卓模拟器4.0.4 文件包 1、下载Android SDK starter package【用zip打开,拖出android-sdk-windows 到你想放置的位置】; 2、下载Android SDK API Level【用zip打开,拖放 android-15(文件夹名字叫:android-4.0.4) 到platforms 目录内】; 3、下载安卓模拟器4.0.4 system img【进入android-sdk-windows目录,新建文件夹:system-images,再进入system-images目录,新建文件夹:android-15,用zip打开,拖放 armeabi-v7a 到system- images\android-15目录内】; 4、下载安卓模拟器4.0 Platform-tools【用zip打开,拖放 platform-tools 到 android-sdk-windows目录内】。 三、创建Android 4.0.4 模拟器

对数据采集测试来说

对数据采集测试来说,精度是反映一个数据采集设备读入的信号测量值有多大程度的可能性。不精确的测量可能会使开发项目与方案设计及产品质或自动化测试应用等费工费时全功尽弃,因此确保数据采集系统的精确是设计方案的主要问题。 测量误差分析与试验数据处理是实验中的重要部分,误差分析也是实验的基础。测试数据应注意误差分析。测量误差分为系统误差、随机误差与粗大误差三类。系统误差,在相同条件下多次测量同一量时,误差的大小和方向均保持不变,或在条件变化时按照某种确定规律变化的误差称为系统误差。引起系统误差的因素有很多,常见的有测量仪器不准确、测量方法不完善。测量条件变化以及处理人员不正确的操作等。系统误差是可以根据产生的原因,采取一定措施减小或消除的。随机误差,在相同条件下多次测量同一量时,误差的大小和方向均发生变化但无确定的变化规律,称为随机误差。少数几次测量的午餐没有规律,但是,从统计观点来看,大量测量的随机误差的分布接近正态分布,只有少数服从均匀分布及其他分布。因此,可以采取数理统计的方法来分析随机误差,可以用有限个测量数据来估计总体的数字特征。随机误差主要是由那些对测量值影响较微小,又互不相关的多种因素共同造成的。可以用增加测量次数、取平均值的办法减少随机误差对测量结果的影响。粗大误差通常是由测量人员的不正确操作或疏忽等原因引起的。粗大误差明显地超过正常条件的系统误差和随机误差。凡被确认含有粗大误差的测量数据称为坏值,应该剔除不用。剔除可疑数据的步骤有这些:1、计算算术平均值,均方差的估计值及残差2、判断有无可疑数据。3、剔除Xk,不改变原测量值的顺序,令n=n-1 重复步骤123直到无可疑数据为止。 有些物理量等不便于直接测量,通常采用间接测量方法,如通过测量电压、电阻计算出待测的电流或功率。那么,如何根据直接测量量的误差求间接测量量的误差呢?误差传递公式能较好地解决这类问题。 实验数据的处理,凡测量得到的实验数据,都要先经过整理再进行处理。整理实验数据的方法通常有误差位对齐法及有效数字表示法。实验曲线的绘制,将测量的离散实验数据,绘制成一条光滑的曲线并使其误差最小。通常采取平滑法和分组平均法。无论采用哪种方法,绘制曲线前都要将整理好的实验数据按照坐标关系列表,适当选择横坐标与纵坐标的比例关系与分度,使曲线的变化规律比较明显。 在实验中,数据的准备度是十分重要的,数据的收集与整理都要考虑误差的影响。通过以上方法能够较好的减少误差,使得结果更近准确。

工业数据采集类型与数据采集的方法

工业数据采集类型与数据采集的方法 本篇文章和大家说说数据采集的那些事儿...... 实现工业4.0,需要高度的工业化、自动化基础,是漫长的征程。工业大数据是未来工业在全球市场竞争中发挥优势的关键。无论是德国工业4.0、美国工业互联网还是《中国制造2025》,各国制造业创新战略的实施基础都是工业大数据的搜集和特征分析,及以此为未来制造系统搭建的无忧环境。不论智能制造发展到何种程度,数据采集都是生产中最实际最高频的需求,也是工业4.0的先决条件。 数字化工厂不等于无人工厂,产品配置,制造流程越复杂越多变,越需要人的参与;在数字化工厂当中,工人更多地是处理异常情况,调整设备。但数据采集一直是困扰着所有制造工厂的传统痛点,自动化设备品牌类型繁多,厂家和数据接口各异,国外厂家本地支持有限,不同采购年代。即便产量停机数据自动采集了,也不等于整个制造过程数据都获得了,只要还有其他人工参与环节,这些数据就不完整。 工业数据采集类型 互联网的数据主要来自于互联网用户和服务器等网络设备,主要是大量的文本数据、社交数据以及多媒体数据等,而工业数据主要来源于机器设备数据、工业信息化数据和产业链相关数据。 从数据采集的类型上看,不仅要涵盖基础的数据,还将逐步包括半结构化的用户行为数据,网状的社交关系数据,文本或音频类型的用户意见和反馈数据,设备和传感器采集的周期性数据,网络爬虫获取的互联网数据,以及未来越来越多有潜在意义的各类数据。主要包括以下几种: 1、海量的Key-Value数据。在传感器技术飞速发展的今天,包括光电、热敏、气敏、力敏、磁敏、声敏、湿敏等不同类别的工业传感器在现场得到了大量应用,而且很多时候机器设备的数据大概要到ms的精度才能分析海量的工业数据,因此,这部分数据的特点是每条数据内容很少,但是频率极高。

单片机和蓝牙模块无线传输的数据采集系统

1.引言 蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。利用蓝牙技术构建数据采集无线传输模块,与传统的电线或红外方式传输测控数据相比,在测控领域应用篮牙技术的优点主要有[1][2][3]: 1.采集测控现场数据遇到大量的电磁干扰,而蓝牙系统因采用了跳频扩频技术,故可以有效地提高数据传输的安全性和抗干扰能力。 2.无须铺设线缆,降低了环境改造成本,方便了数据采集人员的工作。 3.可以从各个角度进行测控数据的传输,可以实现多个测控仪器设备间的连网,便于进行集中监测与控制。 2.系统结构原理 本课题以单片机和蓝牙模块ROK 101 008为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。前端数据采集部分由位于现场的传感器、信号放大电路、A/D转换器、单片机、存储器、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。整个系统结构框架图如图1所示。 AT89C51单片机作为下位机主机,传感器获得的信号经过放大后送入12位A/D转换器AD574A进行A/D 转换,然后将转换后的数据存储到RAM芯片6264中。下位机可以主动地或者在接收上位机通过蓝牙模块发送的传送数据指令后,将6264中存储的数据按照HCI-RS232传输协议进行数据定义,通过MAX3232进行电平转换后送至蓝牙模块,由篮牙模块将数据传送到空间,同时上位机的蓝牙模块对此数据进行接收,再通过MAX3232电平转换后传送至PC机,从而完成蓝牙无线数据的交换。

android手机模拟器安装图文教程

android手机模拟器安装图文教程 android手机模拟器安装图文全教程,教你怎么用电脑玩手机游戏,怎么样不买3G手机也可以用3G手机! 如今说到什么智能手机最火,那很多人肯定会说android系统的手机。如果你还没有Android手机,又想买一部试试,可是价格都不便宜,买来不适合自己怎么办?那么可以先在电脑上安装一个Android模拟器,因为它可以在电脑上模拟出Android手机系统,让你提前体验一下它的魅力。 教程一共分为两步,一是安装模拟器,二是模拟器中安装软件 一、在电脑上安装Android模拟器 二、在模拟器安装APK的方法 一、在电脑上安装Android模拟器 1、由于Android模拟器需要在Java环境才能运行,先下载Java安装吧。(如已有Java环境的可跳过此步) Java环境下载:/downloads/widget/jdk6.jsp 选择Windows版本,下载完成后,安装即可。 2、下载安装Android SDK: 下载地址:/android-sdk_r05-windows.zip(目前有很多个版本,你可以随便去下) 下载完成后,解压到某个目录。如:E:\android-sdk-windows(注意,目录不要有中文哦) 然后把E:\android-sdk-windows\Tools 完整路径加入到系统Path变量(这一步主要用于以后安装apk 软件时方便调用) 我的电脑 > 右键属性 > 高级 > 环境变量 注意:增加进Path变量时,路径前面要加一个 ; 号 3、配置Android模拟器 运行 SDK Setup.exe (在E:\android-sdk-windows目录下) 可能会出现错误,访问不了

数据采集统计方法

数据采集统计分析方法 目的:为检验员检验数据收集提供方法 适用范围:本公司内部对产品进行检验从而得到检验数据,为管理评审提供依据。 可用以下方法做为参考 QC旧七种工具 排列图,因果图,散布图,直方图,控制图,检查表与分层法 QC新七种工具(略) 关联图,KJ法,系统图法,矩阵图法,矩阵数据解析法,过程决策程序图法(PDPC)和箭头图法。 数据统计分析方法-排列图 数据统计分析方法-排列图 排列图是由两个纵坐标,一个横坐标,若干个按高低顺序依次排列的长方形和一条累计百分比折线所组成 的,为寻找主要问题或主要原因所使用的图。 例1: 排列图的优点 排列图有以下优点: 直观,明了--全世界品质管理界通用 用数据说明问题--说服力强 用途广泛:品质管理/ 人员管理/ 治安管理 排列图的作图步骤 收集数据(某时间)

作缺陷项目统计表 绘制排列图 画横坐标(标出项目的等分刻度) 画左纵坐标(表示频数) 画直方图形(按每项的频数画) 画右纵坐标(表示累计百分比) 定点表数,写字 数据统计分析方法-因果图 何谓因果图: 对于结果(特性)与原因(要因)间或所期望之效果(特性)与对策的关系,以箭头连接,详细分析原因 或对策的一种图形称为因果图。 因果图为日本品管权威学者石川馨博士于1952年所发明,故又称为石川图,又因其形状似鱼骨,故也可称 其为鱼骨图,或特性要因图 作因果图的原则 采取由原因到结果的格式 通常从‘人,机,料,法,环’这五方面找原因 ‘4M1E’, Man, Machine, Material, Method, Environment 通常分三个层次:主干线、支干线、分支线 尽可能把所有的原因全部找出来列上 对少数的主要原因标上特殊的标志 写上绘制的日期、作者、有关说明等

工业库通过opc采集kingscada数据以及scada展示工业库数据

工业库通过opc采集KingSCADA数据以及scada展示工业库数据 目录 工业库通过opc采集KingSCADA数据 (2) SCADA展示工业库数据 (8) 工业库中变量在KingGraphic引用 (11)

工业库通过opc采集KingSCADA数据 本文档提出的方法是通过导出KS的变量,再编辑成工业库支持的导入表格,直接将KS的变量导入到工业库变量表中完成采集。下面以SCADADEMO工程的float类型变量为例,其他数据类型与此相同。 1.建立OPC采集器 选择“开始—程序—KingHistorian3.0—采集器配置工具—管理员登陆(如图1),密码:sa”。点击“确定”进入图2对话框 图1 管理员登陆界面 图2 采集器安装与配置工具界面 点击“新建”弹出新建采集器配置页面,进行如下图配置 图3 新建采集器基本对话框配置

图4 新建采集器工业库对话框配置 图5 新建采集器配置OPC Server对话框配置 点击“确定”,提示创建成功,完成OPC采集器配置选中opc采集器,点击右边菜单栏“启动” 图6 启动OPC采集器 2.从采集器检索导出变量

选择“开始—程序—KingHistorian3.0—客户端管理工具”,进入到系统管理平台 图7 系统管理平台 点击左边“系统管理—变量管理器”,在变量管理器中通过采集器检索 图8 变量管理器中检索scada变量

图9 变量管理器中检索OPC采集器KS变量 备注:SCADA需要运行,SCADA变量基本属性中“允许其他应用访问”前需要打钩。 选中要导出的变量,保存 图10 检索到的变量导出到excel文件1

单片机和蓝牙模块无线传输的数据采集系统

单片机和蓝牙模块无线传输的数据采集系统

1.引言 蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。利用蓝牙技术构建数据采集无线传输模块,与传统的电线或红外方式传输测控数据相比,在测控领域应用篮牙技术的优点主要有[1][2][3]: 1.采集测控现场数据遇到大量的电磁干扰,而蓝牙系统因采用了跳频扩频技术,故可以有效地提高数据传输的安全性和抗干扰能力。 2.无须铺设线缆,降低了环境改造成本,方便了数据采集人员的工作。 3.可以从各个角度进行测控数据的传输,可以实现多个测控仪器设备间的连网,便于进行集中监测与控制。 2.系统结构原理 本课题以单片机和蓝牙模块ROK 101 008为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。前端数据采集部分由位于现场的传感器、信号放 大电路、A/D转换器、单片机、存储器、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。整个系统结构框架图如图1所示。 AT89C51单片机作为下位机主机,传感器获得的信号经过放大后送入12位A/D转换器AD574A进行A/D 转换,然后将转换后的数据存储到RAM芯片6264中。下位机可以主动地或者在接收上位机通过蓝牙模块发送的传送数据指令后,将6264中存储的数据按照HCI-RS232传输协议进行数据定义, 通过MAX3232进行电平转换后送至蓝牙模块,由篮牙模块将数据传送到空间,同时上位机的蓝牙模块对此数据进行接收,再通过MAX3232电平转换后传送至PC 机,从而完成蓝牙无线数据的交换。

安卓模拟器使用教程

看到网上很多朋友在找怎么在电脑上安装安卓模拟器,安卓模拟器安装方法等.安卓模拟器下载好要进行相对就的操作才可以使用,下面是详细的方法,可以收藏一下! 首先将安卓模拟器下载下来.打开压缩包我们会看到 Java_Runtime_Environment-002d6.1.210.6.exe,及android-sdk-windows文件夹下SDK Setup.exe二个运行程序. Java_Runtime_Environment-002d6.1.210.6.exe为安卓模拟器要配置的JAVA 环境. SDK Setup.exe为安卓模拟器程序.

1.安卓模拟器Java环境安装 运行Java_Runtime_Environment-002d6.1.210.6.exe安装,

完成之后配置环境变量,这个简单,右击计算机,选择属性. 左边的高级系统设置 在系统变量下选择新建 ①JAVA_HOME C:\Program Files\Java\jdk1.6.0_10 ②classpath .;%JAVA_HOME%\lib; ③Path 默认已经有了,找到点编辑,在前面加入这个值 C:\Program Files\Java\jdk1.6.0_10\bin;

安卓模拟器安装包,在android-sdk-windows文件夹下. 2.下载完打开压缩包,运行SDK Setup.exe 自动连接到google的服务器检查可用的包裹 如果你看到一条关于SSL的错误信息,点击Settings标签(在SDK and AVD Manager 窗口左边)。然后把Force https://前面的勾去掉,点确定,然后重新点击 installed packages。

数据采集--心电检测

*数据采集 1: UBWF800高性能数据采集板 主要特点:UBWF800是具有USB接口、WIFI接口以及SD卡接口的高性能数据采集板。板卡具有8路模拟量输入通道,2路模拟量输出通道,16路数字IO,两路PWM信号输出通道,一路PWM信号输入通道,一路脉冲信号输入通道。可用于电力线监控和保护系统、仪表和控制系统、地球物理信息采集系统、大学实验室及其他工业测控系统中。 板卡性能指标: 模拟量输入 有8路独立的模拟量输入通道,可以同时进行AD转换。 AD采样频率最高200Khz。 AD转换精度16位。 AD每个模拟输入通道具有二阶抗混叠模拟滤波器。 输入量程-5V ~ +5V或-10V ~ +10V。 采样通道数:软件可选择:1~8个。 模拟量输入方式:单端模拟输入。 触发模式:内触发(软件触发)和外触发(外部脉冲信号触发,TTL电平)。 板卡为每个模拟量输入通道都配置有缓存区,可实现连续实时数据采集。 板卡同步输出ADC采样时钟,可用于多卡级联。 模拟量输出 两路模拟量输出通道。 DA转换精度12位。 DAC输出建立时间:最大10us。 DAC转换时间:最快12us/点。 0~+5V,0~+10V,-5V~+5V,-10V~+10V四个量程 输出阻抗:50Ω。 输出误差(满量程):±1LSB。 数字IO 8路数字量输。 最大拉电流和灌电流:20mA。 8路数字量输入。 TTL电平标准。 定时器 两路PWM信号输出通道。 PWM信号频率和占空比可调。 通道一启动或停止由软件控制。 通道二启动或停止由外输入门控信号控制。 PWM信号电平标准:TTL电平。 输出信号频率范围0.02hz ~ 42Mhz。 一路PWM信号输入通道。 PWM信号输入通道:检测输入信号的频率和占空比。 可检测输入信号最高600khz。 一路脉冲信号输入通道。 对输入的脉冲信号进行计数(计数时钟可以是板卡内部时钟源,也可以是外输入时钟)。 检测输入的脉冲信号的脉冲宽度。

24位+16位工业数据采集系统原理

YG-EB1209 工业嵌入式数据采集控制系统板 版 本 : V

非常感谢您购买“Yoga ”产品 在打开包装后请首先依据物件清单检查配件,若发现物件有所损坏或是有任何配件短缺的情况,请尽快与您购买的人联络。 长沙业嘉电子科技有限公司,版权所有。 Copyright 2012.08.14

长沙业嘉电子科技有限公司 1. 产品概述 YG-EB1209 嵌入式单板集成了工业级单板和 2 个独立超高精度模拟数据采集卡(16 位/24 位)于一体,是一款结构紧凑,功能强大的复合型功能单板,和以往的 X86 架构单板相比,能耗、体积的优势非常突出,整板功耗低于 5W,同时稳定性经过实际验证,稳定可靠。 集成 16 位高精度模拟数据采集卡使用简单,功能齐全。其 A/D 转换启动方式可以选用程控频率触发、程控单步触发、外部 TTL 信号触发以及外部时钟同步触发等多种方式。A/D 转换后的数据结果通过先进先出存储器(FIFO)缓存后送入嵌入式 ARM 主控部分,可经过众多外围接口送入控制层。 集成 24 位超高精度模拟数据采集卡,功能齐全,操作采用几个寄存器配置的方式就可以轻松实现多通道数据采集,适合对精度和波动要求高,电压不高微传感器信号采集的场合。 为方便用户,本主板还提供了符合 TTL 电平的 8 路数字量输入和 24 路数字量输出信号通道。此数字 输入输出通道并能根据用户定制而灵活配置。 主要特点和技术参数如下: 嵌入式单板部分: ?工业级 ARM9 处理器,400MHZ 频率 ?提供 128MB,64MB 可选内存配置,256MB nandflash,2MB norflash ?标准 VGA 接口,支持 800X600 分辨率 ?一个 TYPE I/II 型 CompactFlash 接口 ?标准 10M/100M 以太网网卡 ?提供两个 USB HOST 接口,可接键盘鼠标等 USB 设备 ?提供三个串口,其中两个为 RS232 接口,其中串口 1 支持流控,串口 3 为 RS485 接口,支持硬件自动转向和程序控制转向两种方式 ?提供 CPLD 寄存器管理接口 ?实时时钟 RTC 接口,配置 RTC 电池 16 位模拟数据采集卡部分: ?输入通道数:单端 16 路* / 双端 8 路 ?输入信号范围:0~10V*;0~5V;±5V;±10V ?输入阻抗:≥10MΩ ?输入通道选择方式:单通道程序指定/多通道自动扫描 ? A/D 转换分辩率:16 位 ? A/D 最高转换速率:200KHz ? A/D 采样程控频率:1KHz/5KHz/10KHz/50KHz/100KHz/200KHZ/外部时钟 ? A/D 启动方式:程控频率触发/程控单步触发/外部 TTL 信号触发 ? A/D 转换输出码制:单极性原码*/双极性偏移码 ? FIFO 存储器容量:8K×16bit(全满)/4K×16bit(半满) ?数据读取识别方式:FIFO 半满查询/FIFO 非空查询/FIFO 半满中断 ?32 通道数字量输出 IO,16 通道数字量输入 IO 24 位模拟数据采集卡部分: ?输入通道数:单端 8 路* / 双端 4 路 ?输入信号范围:0~3V(BUFFER ON MODE);0~5V(BUFFER ON OFF);±3V(BUFFER ON MODE);± 5V(BUFFER OFF MODE) ?输入阻抗:≥10MΩ ?输入通道选择方式:单通道程序指定

蓝牙技术在数据采集系统中的应用

蓝牙技术在数据采集系统中的应用 摘要:蓝牙技术支持点对点和点对多点的通信,支持多设备之间进行无线数据交换,可使计算机与各种便携式、移动式通信设备之间在近距离内实现资源共享,因此在传感技术与数据采集系统中得到了广泛应用。本文介绍了采用蓝牙技术的主要技术特点和性能,并给出了蓝牙技术在几种数据采集系统中的具体应用。 关键词:蓝牙技术,传感器,数据采集系统 0 引言 人们使用的电子设备越来越多,随着电子设备间信息交换的增多,电缆的连接缠绕也变得非常杂乱。为了省去电缆,简化设备间的连接,需要设计一种技术除去“最后”的连接。1994 年,瑞典爱立信公司移动通信部在一项被称为“多通信链路(Multi-Communicator Link)”MC Link 的课题研究中,工程师们发现了不经许可就可以使用的低频无线波段,研制了一种小的无线收发器芯片,使用无线电射频技术实现了移动电话与周围器件之间低成本、低功耗的无线互连,他们将这种互连的技术规范命名为蓝牙(Bluetooth)。 在测控系统中,传感器作为信息采集必不可少的装置,实现其网络化是当前的热点研究问题。当前大多数测控系统中,传感器多是采用有线方式,但是在一些特殊情况下,有线线缆连接显然会造成很多不便,不能够满足现实需要。随着新兴无线技术(如蓝牙技术)的发展以及其芯片价格的降低,无线方式在很多场合都得到应用以取代原有的有线接口方式。无线网络化传感器势必成为传感器发展的一个重要方向。 1 蓝牙技术概念 蓝牙(Bluetooth)技术,实际上是一种短距离无线通信技术。利用“蓝牙”技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化这些设备与Internet 的通信,使这些现代通信设备与因特网的数据传输变得更加迅速高效。作为一种新技术,蓝牙的主要优点是:可以方便地建立无线连接,代替传统的有线电缆连接;移植性较强,适用面广;安全性较高且每一台蓝牙设备的地址全球唯一;支持微微网与分散网等组网工作模式,应用范围广阔;此外,蓝牙设备功耗低,成本也较低,与其他通信设备相比,设计开发较为容易。 2 蓝牙技术特点 蓝牙技术利用短距离、低成本的无线连接替代了电缆连接,从而为现存的数据网络和小型的外围设备接口提供了统一的连接。它具有许多优越的技术性能,以下介绍一些主要的技术特点。 2.1 射频特性 蓝牙设备的工作频段选在全世界范围内都可以自由使用的2.4GHz的ISM(工

数据采集方法有哪些

数据采集方法有哪些 数据采集数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。 数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。比如摄像头,麦克风,都是数据采集工具。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。采集一般是采样方式,即隔一定时间(称采样周期)对同一点数据重复采集。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据测量是数据采集的基础。数据量测方法有接触式和非接触式,检测元件多种多样。不论哪种方法和元件,均以不影响被测对象状态和测量环境为前提,以保证数据的正确性。数据采集含义很广,包括对面状连续物理量的采集。在计算机辅助制图、测图、设计中,对图形或图像数字化过程也可称为数据采集,此时被采集的是几何量(或包括物理量,如灰度)数据。 在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,数据采集领域已经发生了重要的变化。首先,分布式控制应用场合中的智能数据采集系统在国内外已经取得了长足的发展。其次,总线兼容型数据采集插件的数量不断增大,与个人计算机兼容的数据采集系统的数量也在增加。国内外各种数据采集机先后问世,将数据采集带入了一个全新的时代。 现在谈论大数据已经没有新意了,形形色色的产品、平台和公司都贴满大数据标签,但大数据却并没有掀起预期飓风,甚至还被冠以“伪命题”污名。 本末倒置,数据采集才是大数据产业的基石。都在说大数据应用、大数据价值挖掘,却不想,没有数据何来应用、价值一说。就好比不开采石油,一味想得到汽油。当然,石油开采并不容易,各行各业包括政府部门的信息化建设都是封闭式进行,海量数据被封在不同

D上行干扰检测数据采集指导书EACV

TDD-LTE上行干扰检测数据源获取指导书 本指导书主要是针对TDD射频通道上行干扰分析所需要的数据源的获取进行一个基础指导。 TDD的总体介绍: 目前我们PEAC平台针对TDD射频干扰排查需要的数据源一共有四类: 1、现网工程参数表。 2、现网配置文件(.XML结尾和格式) 3、现网原始话统数据(NORMAL.mrf.gz结尾的格式) 4、带有反向频谱的CHR(主要是前三个数据源的基础上筛选出问题小区后,进 行对应问题小区的反向频谱的采集) 1工参表 Action01 针对工参表,一般我们现场的人员基本都是人手一份。下面附件是模板,供参考。 备注:主要关注必选参数就行。 2 配置文件XML和原始话统 这两种数据源的提取主要分为两种:NIC提取与网管提取两种方式。 Action02 方法1:NIC自定义采集项(NIC的采集方式,可以同时将XML和原始话统的数据采集上来) 图表1 NIC采集话统和配置方法示意图(1) ?任务命名 图表2 NIC采集话统和配置方法示意图(2) ?数据时间范围 图表3 NIC采集话统和配置方法示意图(3) ?选择网元对象

图表4 NIC采集话统和配置方法示意图(4) ?选择数据采集项 采集话统和配置时,需选择“获取U2000话统数据”和“基站配置”。 图表5 NIC采集话统和配置方法示意图(5) ?最后Next——>Next——>Finish。 待任务完成之后保存数据并提取即可。 图表6 NIC采集话统和配置方法示意图(6) 最终点击下载即可获得包含了话统以及XML配置文件 Action02 方法2:配置数据采集(网管提取) ?在U2000移动网元管理系统,选中维护/备份管理/网元备份。 图表 1 从服务器提取XML配置文件示意图(1) ?在网元备份标签页左侧的区域(1)勾选网元,点击区域(2)“备份”按钮,配置文件开始备份,在(3)区域显示备份进度,备份完成的文件信息在区域(4)显示,备份完成后,点击区域(5)的“下载到OSS客户端”按钮,选择路径完成下载。 图表 2 从服务器提取XML配置文件示意图(2) Action02 方法2:话统数据采集(网管服务器提取) 使用FTP软件登陆到U2000服务器如下目录 /export/home/sysm/ftproot/nbi/,查看网元文件夹中是否有有效话统数据,若数据存在,则选择所需网元对应的文件夹,拷贝到本地即可。 如路径/export/home/sysm/ftproot/nbi/NE270/gz,其中NE270表示某网元的FDN。 文件包括如下两种, (1)gz 上面的文件包含15分钟粒度的话统信息。 (2)gz 上面的文件包含60分钟粒度的话统信息。

工业4.0智能数据采集解决方案

工业4.0智能数据采集解决方案 近些年在“工业4.0”,“智能制造”,“工业互联网”的大背景下,工业现场设备层的数据采集逐渐成为一个热门话题,实现工业4.0,需要高度的工业化、自动化基础,是漫长的征程。 工业大数据是未来工业在全球市场竞争中发挥优势的关键。无论是德国工业4.0、美国工业互联网还是《中国制造2025》,各国制造业创新战略的实施基础都是工业大数据的搜集和特征分析,及以此为未来制造系统搭建的无忧环境。 华辰智通工业互联网-工业数据采集方案: 大家都认识到实时获取设备层数据、消除自动化孤岛现象是实现智能制造、工业互联网的重要基础环节。但是,工业现场的设备种类繁多,各种工业总线协议并存,这也就导致了数据采集这项工作是一件非常个性化的事情,很难总结出一套放之四海而皆准的方案来。 数据采集一直是困扰着所有制造工厂的传统痛点,自动化设备品牌类型繁多,厂家和数据接口各异,国外厂家本地支持有限,不同采购年代。即便产量停机数据自动采集了,也不等于整个制造过程数据都获得了,只要还有其他人工参与环节,这些数据就不完整,所以不论智能制造发展到何种程度,工业数据采集都是生产中最实际最高频的需求,也是工业4.0的先决条件。

1.工业数据采集工具: 工业数据网关称为工业采集网关,也可以称为工业数据采集网关;它通过以太网接口:RJ45 接口;串行接口:RS485/RS232/RS422接口可以连接西门子、三菱、欧姆龙、施耐德、台达、汇川、和利时、松下、永宏、海为和MODBUS 系列等。PLC、制器、输入/输出等设备,安全准确传输数据。 HINET 系列数据网关由湖南华辰智通科技有限公司自主研发生产,该网关采用高性能工业级32 位处理器和工业级无线模块,以嵌入式实时操作系统为软件支撑平台,是一款高性能、高性价比、适用于工业互联网便于大规模部署的工业数采终端。HINET 系列数据网关自带PLC 等工业控制器协议,一次性解决工业设备联网、工业设备数据采集及传输等难题。 HINET 系列数据网关是一款单协议单接口的工业数采终端,根据不同的型号HINET 数据网关支持的PLC 品牌包含西门子、三菱、欧姆龙、施耐德、台达、汇川、和利时、松下、永宏、海为和MODBUS 系列等。 2.对工业生产设备数据采集:

基于蓝牙的数据采集技术 毕业设计

天津工业大学 毕业论文 基于蓝牙的无线数据采集系统 姓名苏广明 学院电气工程及其自动化专业自动化 指导教师陈云军 职称讲师 2013年6月2日

摘要 本文旨在将无线蓝牙技术和数据采集技术相结合,集成在一起组成数据采集与无线数据传输模块,设计出一种体积小、低功耗、安装维护方便的便携式产品,实现了蓝牙无线数据采集和传输。基于蓝牙的无线数据采集系统由下位机和上位机两部分组成。其中下位机主要由温度传感器、蓝牙主模块和STC89C52RC处理器组成,主要完成数据的采集和处理等功能,并将处理后的数据发送给上位机;上位机由LCD1602显示器、蓝牙从模块和STC89C52RC处理器组成,主要完成数据的接收、显示和存储等功能,并向下位机发送命令。该系统主要实现现场数据高精度、高速度实时采集,利用蓝牙的无线传输特性实现数据的无线传输。本系统中STC89C52RC处理器是系统的核心部分,通过动作指令控制前端温度传感器模块进行数据采集,同时将采集到的数据经STC89C52RC处理,由蓝牙模块将数据传输给上位机,由上位机完成后续的相应处理工作。本设计最终结果经验证,可以达到设计基本要求:能够采集温度信息,将其发送到上位机,并将温度显示出来。 关键词:无线数据采集;蓝牙模块;STC89C52RC;温度传感器

ABSTRACT This paper aims at the wireless Bluetooth technology and data acquisition technology, integrated together to form a data acquisition and wireless data transmission module. And design a kind of small volume, low power consumption, easy installation and maintenance of portable products, realize the wireless data acquisition and transmission of Bluetooth.Wireless data acquisition system based on Bluetooth is consists of two parts that are lower place machine and position machine. Lower place machine is mainly made up of several parts, for example, temperature transmitter, Bluetooth module and STC89C52RC processing module. The mainly function are completing data collection ,processing and transfer the data to position machine. Position machine is mainly made up of LCD1602 display, Bluetooth module and STC89C52RC processing module completing data receiving, display, storage and other functions. Position machine sends commends to lower place machine. This system mainly realizes high precision, high velocity field data real-time data acquisition, uses Bluetooth wireless transmission characteristics of the wireless transmission of data realization. STC89C52RC is the center of this system and through sending commends to control front-end temperature transmitter collecting data.At the same time the collected data by STC89C52RC processing will be transferred to position machine by Bluetooth module. The position machine will complete the corresponding work.The final design results after verification can achieve the design requirement: can collect temperature information, send it to the host computer, and the temperature is displayed. Key words: w ireless data acquisition; Bluetooth module; STC89C52RC; temperature transmitter

水深测量数据采集与处理系统技术规定

水深测量数据采集与处理技术要求 Technical requirement for the bathymetric data collection and processing JT/T 701 —2007 1范围本标准规定了水深测量的系统配置、测前准备、数据采集、数据处理、资料的检查 验收和资料汇交等技术要求。 本标准适用于采用水深数据自动化采集系统进行的沿海港口航道水深测量。本标准不包括多波束测深设备的测量技术要求。 2规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期 的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然 而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的 引用文件,其最新版本适用于本标准。 GB 12319 中国海图图式 GB 12327 海道测量规范《沿海港口、航道测绘产品质量检查验收办法及质量评定标 准》(交通部海事局) 3总则 3.1平面坐标采用国家统一规定的坐标系,其与地心坐标系的关系采用国家统一使用的转 换参数或满足 GB 12327精度要求的区域性转换参数。 3.2高程采用国家统一规定的国家高程基准,远离大陆的岛、礁,其高程基准可采用当地 平均海面。 3.3深度基准面采用理论最低潮面,深度基准面从当地平均海面起算;一般情况下,它应与 国家高程基准进行联测。深度基准面一经确定并正式采用,一般不得变动。 3.4测图采用高斯 -克吕格投影,大于 1:5,000 比例尺测图采用 1.5 °带投影,大于(含) 1:10,000 比例尺测图采用 3°带投影,小于 1:10,000 比例尺测图采用 6°带投 影,小于(含) 1:50,000 比例尺测图可采用墨卡托投影,并以测区的中央纬度作为基准纬线。 3.5直接用于沿海港口航道水深测量的最低平面控制基础应采用 GPSE 级点,或等同于该等 级点的控制点。 3.6工作水准点与主要水准点之间的高差, 按四等水准测量要求,工作前后各测定一次。验 潮站的 水尺至工作水准点之间的高差可用等外水准测定。 3.7水深测量定位中误差:大于 1:5,000 比例尺测图时,应不大于图上 1.5mm;小于 (含) 1:5,000 大于(含) 1:100,000 比例尺测图时,应不大于图上 1.0mm;小于 1:100,000 比例尺测图时,应不大于实地 100m。 3.8图式符号按 GB 12319 执行。 3.9水深测量的标准图幅尺寸为:

数据采集管理办法

如对您有帮助,请购买打赏,谢谢您! 甲醇汽车试点技术数据采集管理办法 一、总则 根据《关于开展甲醇汽车试点工作的通知》(工信部节 [2012]42 号),为全面科学评价甲醇汽车试点运行情况,规范 试点工作技术数据采集工作,确保技术数据科学可信,特编 制本办法。 本办法规范了甲醇汽车试点工作技术数据采集的类别、 条目及具体要求,数据将作为甲醇汽车试点工作评价的重要 依据。甲醇汽车的定义、标准及技术规范、专项检验项目按 照《关于开展甲醇汽车试点工作的通知》(工信部节[2012]42 号)中附件《甲醇汽车技术要求》规定执行。 二、技术数据采集内容与要求 (一)甲醇汽车整车 1. 甲醇汽车整车技术数据采集分为装用点燃式甲醇发 动机的甲醇汽车整车和装用压燃式甲醇发动机的甲醇汽车整 车两类。根据甲醇汽车整车的特殊性,结合甲醇汽车整车使 用的特殊要求,采集如下内容和数据:工业和信息化部《车 辆生产企业及产品公告》文号(含批次)、车辆产品型号、 车辆号牌号码、制造厂商、发动机号、车辆识别代码、行驶 里程、排放等级、燃料类型、甲醇燃料箱容积、汽柴油箱容 积、起动性能、冷起动性能、限定条件下百公里油耗、加速 性能、最高车速、最大爬坡度、车外加速噪声等参数。通过 数据分析和对比,评价甲醇汽车整车在使用过程中的性能变 化及使用情况。 2. 采集甲醇汽车整车技术数据应依据制造企业提供的出 厂技术数据,按规定(见附表 1、2)的内容建立技术档案。 3. 试点用甲醇汽车每半年由试点地区工业和信息化主管 部门指定的、具有资质的机动车检验检测单位进行检验,检 验方法按机动车检验相关规定,检验数据由试点车辆运营单 位负责收集汇总。 4. 试点工作结束后,在试点运行车辆中抽取不少于 3 辆 乘用车、不少于 1 辆商用车,由试点地区工业和信息化主管 部门委托具有国家级检测资质的检测机构负责对甲醇汽车整 车起动性能、百公里油耗、加速性能、最高车速、最大爬坡 度、车外加速噪声、常规排放检测、甲醛进行测试并提出检 测报告。 (二)甲醇发动机 1. 甲醇发动机技术数据采集分为点燃式甲醇发动机和 压燃式甲醇发动机两类,根据发动机的固有特性和使用性,结 合发动机燃用甲醇燃料的特殊要求,采集如下数据和参数:发 动机制造厂商、所配车型、发动机号、发动机型式、缸径、冲 程、排量、压缩比、最大功率、最大转矩、最低燃油消耗率等 参数。通过数据分析和对比,评价甲醇发动机在使用过程中的 性能变化及使用情况。

相关主题
文本预览
相关文档 最新文档