WindowsPhone8蓝牙编程开发

【菜科解读】
蓝牙是手机的近距离无限传输的技术,在之前的Windows Phone 7系统手机里面仅支持蓝牙耳机功能,并不支持蓝牙文件信息传输,那么在Windows Phone 8手机里面将全面支持蓝牙技术,并且提供了相关的API来给开发者使用。
开发者可以利用蓝牙的相关API来创建应用程序,在应用程序里面使用手机的蓝牙技术来进行近距离的文件传输和发送接收消息,创造出更加有趣和方便的应用软件。
在Windows Phone 8里面可以在应用程序里面利用蓝牙进行通信,使用蓝牙相关的API,可以让应用程序连接到另外的一个应用程序,也可以让应用程序连接到一个设备上。
Windows Phone 8的蓝牙技术支持两个蓝牙方案:一个是应用程序到应用程序的通信,另外一个是应用程序到设备的通信。
1.应用程序到应用程序的通信应用程序到应用程序的通信的过程是,应用程序使用蓝牙去查找正在广播蓝牙服务的对等的应用程序,如果在应用程序提供服务的范围内发现一个应用程序,那么该应用程序可以发起连接请求。
当这两个应用程序接受连接,它们之间就可以进行通信了,通信的过程是使用socket的消息发送接收机制。
在Windows Phone 8中使用到应用程序到应用程序的蓝牙通讯技术,需要在项目的WMAppManifest.xml文件中添加ID_CAP_PROXIMITY的功能选项,表示支持临近的设备通信能力,否则程序会出现异常。
2.应用程序到设备的通信在应用程序到设备的通信过程时,应用程序使用蓝牙去查找提供服务的设备,如果提供的服务范围之内发现一个可以连接的蓝牙设备,那么该应用程序可以发起连接请求。
当应用程序和设备同时接受该连接,它们之间就可以进行通信了,通信的过程也是使用socket的消息发送接收机制,类似于应用程序到应用程序的通信。
在Windows Phone 8中使用到应用程序到设备的蓝牙通讯技术,需要在项目的WMAppManifest.xml文件中添加ID_CAP_PROXIMITY和ID_CAP_NETWORKING的功能选项,表示支持临近的设备通信能力和网络通信能力,否则程序会出现异常。
蓝牙编程类在Windows Phone 8里面使用到蓝牙编程主要会用到PeerFinder类,PeerInformation类,StreamSocket类和ConnectionRequestedEventArgs类,这些类的说明如表19.1所示。
因为蓝牙也是基于TCP协议进行消息传递了,所以需要用到Socket的相关的编程知识,以及StreamSocket类。
PeerFinder类是蓝牙查找类,它的主要成员如表19.2所示。
表19.1 蓝牙编程类的说明
类名说明PeerFinder用于去查找附近的设备是否有运行和当前应用程序相同的应用程序,并且可以在两个应用程序之间建立起socket连接,从而可以进行通信。对等应用程序是在其他设备上运行的应用程序的另一个实例。
PeerInformation包含对等应用程序或设备的识别信息。
StreamSocket支持使用一个TCP的Socket流的网络通信。
ConnectionRequestedEventArgs表示传递到一个应用程序的ConnectionRequested事件的属性
表 19.2 PeerFinder类的成员
成员说明bool AllowBluetooth指定 PeerFinder 类的此实例是否可以通过使用 Bluetooth 来连接 ProximityStreamSocket 对象。如果PeerFinder 的此实例可以通过使用 Bluetooth 来连接 ProximityStreamSocket 对象,则为 true;否则为false。
默认为 true。
bool AllowInfrastructure是否使用TCP/IP协议连接到StreamSocketbool AllowWiFiDirect指定 PeerFinder 类的此实例是否可以通过使用 Wi-Fi Direct 来连接 ProximityStreamSocket 对象。
如果 PeerFinder 的此实例可以通过使用 Wi-Fi Direct 来连接 ProximityStreamSocket 对象,则为 true;否则为false。
默认为 true。
IDictionary AlternateIdentities获取要与其他平台上的对等应用程序匹配的备用 AppId 值列表。
返回要与其他平台的对等类应用程序匹配的备用 AppId 值列表。
string DisplayName获取或设置标识计算机到远程对等类的名称。
PeerDiscoveryTypes SupportedDiscoveryTypes获取一个值,该值指示哪些发现选项可与 PeerFinder 类一同使用event TypedEventHandler ConnectionRequested远程对等类使用 ConnectAsync 方法请求连接时发生。
event TypedEventHandler TriggeredConnectionStateChanged在远程对等类的轻击笔势期间发生。
IAsyncOperation ConnectAsync(PeerInformation peerInformation)连接已发现了对 FindAllPeersAsync 方法的调用的对等类。
peerInformation:表示连接到的对等类的对等类信息对象。
返回通过使用所提供的临近StreamSocket 对象连接远程对等类的异步操作。
IAsyncOperation FindAllPeersAsync()适用于无线范围内运行相同应用程序的对等计算机的异步浏览。
返回通过使用 Wi-Fi直连技术浏览对等类的异步操作。
void Start(string peerMessage)向临近设备上的对等类应用程序传递消息。
void Stop()停止查找对等类应用程序或广播对等类连接的过程
查找蓝牙设备和对等项
查找在服务范围内的蓝牙设备和对等项是蓝牙编程的第一步,查找蓝牙设备和对等项中会使用到PeerFinder类的FindAllPeersAsync方法去进行查找,然后以异步的方式返回查找到的对等项列表的信息IReadOnlyList
,注意要使查找对等的应用程序时,在调用FindAllPeersAsync方法前必须先调用PeerFinder类的Start方法,主要的目的是启动广播服务,让对方的应用程序也能查找到自己。
PeerInformation包含三个属性:一个是DisplayName表示对等项的名字,这个名字一般都是由对方的设备的名称或者查找到的应用程序自身设置的现实名字,一个是HostName表示主机名字或者IP地址,还有一个属性是ServiceName表示服务名称或者TCP协议的端口号。
然后可以利用查找到的PeerInformation信息进行连接和通信。
查找对等的应用程序的代码示例:
async void AppToApp() // 启动查找服务 PeerFinder.Start(); //开始查找 ObservableCollectionpeers = await PeerFinder.FindAllPeersAsync(); if (peers.Count == 0) //未找到任何的对等项 else //处理查找到的对等项,可以使用PeerFinder类的ConnectAsync方法来连接选择的要进行通信的对等项}
查找蓝牙设备的代码示例:
private async void AppToDevice() // 设置查找所匹配的蓝牙设备 PeerFinder.AlternateIdentities["Bluetooth:Paired"] = ""; // 开始查找 ObservableCollectionpairedDevices = await PeerFinder.FindAllPeersAsync(); if (pairedDevices.Count == 0) // 没有找到可用的蓝牙设备 else //处理查找到的蓝牙设备,可以新建一个StreamSocket对象,然后使用StreamSocket类的ConnectAsync方法通过HostName和ServiceName来连接蓝牙设备}123在本页阅读全文 本文导航 第1页: 首页 第2页: 蓝牙发送接收信息 第3页: 实现蓝牙程序对设备的连接 WindowsPhone8,蓝牙,编程,开发,蓝牙,是,手机
Win7蓝牙设置指南
西门子plc编程根据要求写?学习SCL语言的基本语法规则
SCL是一种类似于计算机高级语言的编程方式,只是这种语言编写的程序,可以在PLC中运行。
如果学过C语言或者VB语言,就会很容易上手SCL。
当然没有基础依然可以从零开始学习。
在PLC中有了SCL这种编程语言,就可以方便地把计算机高级语言,编写的算法移植到PLC中。
西门子以下系列的PLC都支持SCL语言编程:S7-300S7-400S7-1200S7-1500WinAC SCL能实现复杂的运算功能,特别是有大量数据要处理的时候。
相对于梯形图SCL在运算、函数、过程优化方面有天然的优势。
在博途软件中已经集成SCL语言包,可以直接使用SCL进行进行编程。
在传统的STEP7 中需要单独的安装 S7-SCL 软件包。
因为SCL是一种高级编程语言,所以就包含表达式、运算符、程序控制语句等语言元素。
1、表达式 SCL中有三种表达式:算术表达式关系表达式逻辑表达式 一个完整的表达式是由操作数和与之搭配的操作符组成。
通过表达式的特定顺序进行运算,并返回一个值。
操作数:常数、变量、函数调用(在PLC编程中可以理解为地址)。
操作符: 、- 、、/ (加减乘除),and、or、not(与或非)等。
操作符有时也叫运算符,SCL支持的运算符有算术运算符、比较运算符、逻辑运算符、赋值运算符。
算术运算符:主要是我们常用的加( )、减(-)、乘()、除(/),以及数学上常用的取正、取负、求余数、整除、求余(%)。
比较运算符:用于数值的比较,主要有大于、小于、等于、不等于。
逻辑运算符:用于布尔型值的运算,常用的逻辑运算符除了与、或、非之外,还有异或。
赋值运算符:通过赋值运算,可以将一个表达式的值赋给一个变量。
赋值运算符左侧为变量,右侧为表达式的值。
赋值运算的计算按照从右到左的顺序。
1.1、算术表达式 算术运算符: 、-、、/、DIV、MOD、。
算术表达式通常由常量、变量、函数、圆括号、运算符等组成。
算术表达式也叫数学表达式,是三种表达式中最简单的,几乎可以等同于数学运算。
西门子PLC的算术表达式,支持各种数据类型。
一个算术表达式的两个操作数,如果分别属于不同的数据类型,依然可以运算。
运算结果的数据类型,如下图所示: 虽然不同的数据类型可以算术运算,还是建议大家先进行数据格式转换,然后进行运算。
防止出现运算后,不知道数据格式,导致数据错误。
1.2、关系表达式 关系运算符:=、==、。
关系表达式是利用关系运算符,将两个操作数或数据类型进行比较,然后得到一个布尔值(BOOL)型的逻辑结果。
如果比较结果为真,菜叶说说,则结果为1(TRUE),否则为0 (FALSE)。
所以关系表达式的值只能是逻辑值真或假(1或者0)。
关系表达式有时候也称作比较表达式。
西门子PLC的关系表达式,支持各种数据类型,结果的数据类型只能是布尔型。
以下数据类型,只能比较相同类型的变量: TIME日期和时间UDT 1.3、逻辑表达式 逻辑运算符:AND(&)、OR、NOT、XOR。
西门子PLC的逻辑表达式,支持各种数据类型。
但是在运算中会出现两种情况。
一是,两个操作数都是布尔(BOOL)数据类型,则逻辑运算的结果也为布尔数据类型。
另一种情况,如果两个操作数中至少有一个是位序列,则结果也为位序列。
结果由最高操作数的数据类型决定。
例如,当两个操作数分别是字节(Byte) 类型和字(Word)类型时,结果为字(Word)类型。
逻辑表达式中一个操作数为布尔(BOOL)类型而另一个为位序列时,必须先将 布尔(BOOL)类型的操作数显式转换为位序列类型。
#p#分页标题#e# 位序列:一组由0和1组成的序列。