android : 1、从头开始开发一个控制硬件的app(通讯协议部分)

一、做android开发的,想必开发前的准备工作都不必多说。下载AS,配置好,新建一个项目。

二、下面开始一些项目的介绍:我们的项目是通过3种模式,达到与设备配对,联网或者蓝牙控制其运行。

       1、wlan : 设备和手机连接在同一无线网下,配对。

       2、蓝牙 : 设备和手机通过蓝牙配对,达到控制设备的目的。

       3、手机直连 : 就是开启设备热点,手机连接到设备的热点上,达到设备的配对。

三、首先要明白一点,咱们的手机是不能直接和设备通信的,原因是设备不能理解手机发送的命令。那怎么样设备才能理解我们发送的指令呢?这就不得不说到通讯协议了。

       我们的设备有着一套自己的”密码本”,只要我将指令以符合”密码本”的格式发送给设备,设备就会按照给出的指令行动。这里的”密码本”就是上面提到的通讯协议。不过不同设备的具体指令信息或多或少有所不同,大家参考一下就好了。下面给出这一套设备的通讯协议格式,请注意指令使用16进制描述。

 

                                                                        表1 通信协议基本格式

具体指令信息(共10位)   0xaa 0xbb mark1 mark2 mark3 mark4 mark5 mark6 mark7 0xcc

位置

说明

0xaa 0xbb

帧头,作为起始位识别

 0xcc

帧尾

Mark1—mark7 

具体的指令,如开始、暂停等

16进制表示的指令,不要觉的这个很难懂。结合实际的例子来看看:

 

Mark1—mark7 为十六进制码,当某一条协议只有部分mark值时,其他mark值可以输入任意十六进制码。

当 Mark1为  0x00 时,此时设定值不保存在flash中,掉电设定值消失。

Mark2 值设置及对应功能

Marek2

功能

0x01

开始

0x02

正转

0x03

反转

0x04

加速

0x05

减速

0x06

停止

这样,表示一条让泵开始工作的指令码就是:

0xaa 0xbb 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0xcc

解释:0xaa 0xbb 帧头,作为起始位识别,固定的,每条指令都有。

           0xcc 帧尾,作为结束位识别,固定的,每条指令都有。

          我们需要注意的是Mark1—mark7。

          0x00  Mark1为此值表示 该条指令不存入继电器。

          0x01  Mark1为此值表示 该条指令为开始。

          其它位可以填写任意数,我们补0。

所以,只要我们发送一条这样的指令,连接的设备就会明白我们的命令了。

 

 

 

 

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值