如何开发物联网应用程序_物联网软件开发

如何开发物联网应用程序_物联网软件开发,第1张

物联网开发应用最重要的是各种接口的兼容性。

首先物联网终端设备数量比手机大得多,而且本身没有显示界面,通常只是能够通过特定网络协议回传数据的传感器(直接连入互联网或者通过网关设备),也就是说在物联网大数据汇聚的前端,数据的汇入是自动化进行的,应用开发的重点是后端的汇聚层。

物联网应用后端汇聚层需要有一个智能化软件系统(通常运行于数据中心),来管理物联网设备(包括固件升级等)、网络、处理海量数据,并提供给用户。

在设备层、汇聚层之外,物联网应用还需要一个分析层,负责处理物联网设备产生的大数据。

最后,是最终用户层,负责将有用的数据分析结果以可视化的方式展示到用户的终端设备中,这个层面的开发,可以是移动web网站也可以是一个手机APP。

由于设备层和汇聚层第三方专业产品和服务的完善,实际上今天的物联网应用开发,主要指的是分析层和用户层这两个层面,换而言之,未来物联网开发生态主要建立在成熟的云计算物联网平台上。成熟的物联网平台通常都提供汇聚层需要的大数据存储、实时信息总线以及于前端应用通讯的API。

实际上今天已经有大量面向物联网应用开发的平台,例如Xively、Mnubo、BugLabs和ThingWorx等,这些平台通常能够兼容大量物联网产品厂商的设备。

d896

软件名称:HuaweiLiteOS(华为物联网 *** 作系统)V500官方版

语言:简体中文

大小:8936MB

类别:系统工具

介绍:HuaweiLiteOS(华为物联网 *** 作系统)是一款由华为官方推出的轻量级物联网 *** 作系统,它的基础内核包括不可裁剪的极小内核和可裁剪的其他模块,这款系统能提高创新的系统设计,可以最大限度的降低系统功耗,目前此系统已经被开源,今天也为大家附上源码供大家学习使用。

LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动
在libusb的bin目录下有一个inf_wirzedexe的文件,该文件是生成驱动所用,具体步骤可以网上百度,很是傻瓜式 *** 作,安装好驱动之后就可以使用其通讯函数了,
安装好驱动之后的情况如下

使用visual studio开发,将lib_msvc目录下的libusblib文件添加到工程目录并将lusb0_usbh文件加入工程,如下

之后在MFC工程中如下 *** 作
OnInitDialog方法中调用usb_init函数,这是初始化函数库的,每个工程需要而且仅仅需要初始化一次
查找系统中全部USB的方法如下
usb_find_busses();
usb_find_devices();//重新寻找设备
for (bus = usb_get_busses(); bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
usbCount++;
deviceNameEmpty();
handle = usb_open(dev);
usb_get_string_simple(handle,dev->descriptoriProduct,nameBuffer,128);
usb_close(handle);
pidBuffer[usbCount-1] = dev->descriptoridProduct;//枚举所有设备
vidBuffer[usbCount-1] = dev->descriptoridVendor;
pvnBuffer[usbCount-1] = dev->descriptorbcdDevice;
deviceNameAppendFormat("%s",nameBuffer);
((CComboBox)GetDlgItem(IDC_COMBO_USB_DEVICE_ENMU))->AddString(deviceName);
}
}
打开usb设备的方法如下
//现在遍历全部设备,找到对应PID vid的设备打开
usb_find_busses();
usb_find_devices();//重新寻找设备
for (bus = usb_get_busses(); bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
if(dev->descriptoridProduct == myPid && dev->descriptoridVendor)
{
//PID VID相同
usb_handle = usb_open(dev);
}
}
}
发送数据的方法
char sendBuffer[64] = {0};
CString sendString;
GetDlgItem(IDC_EDIT_USB_SEND_MESSAGE)->GetWindowText(sendString);
for(int i = 0; i < 64; i++)
{
if(i >= sendStringGetLength())sendBuffer[i] = 0;
else
{
sendBuffer[i] = sendStringGetAt(i);
}
}
usb_claim_interface(usb_handle, 0);//默认设备
usb_interrupt_write(usb_handle,0x01,sendBuffer,64,100);
usb_release_interface(usb_handle, 0);
接收数据的方法
char receiveBuffer[64] = {0};
CString receiveString;
int recvCount = 0;
usb_claim_interface(usb_handle, 0);//默认设备
recvCount = usb_interrupt_read(usb_handle,0x81,receiveBuffer,64,100);
usb_release_interface(usb_handle, 0);
if(recvCount > 0)
{
GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->GetWindowText(receiveString);
for(int i = 0; i < recvCount; i++)
{
receiveStringAppendChar(receiveBuffer[i]);
}
GetDlgItem(IDC_EDIT_USB_RECV_SHOW)->SetWindowText(receiveString);
每次发送和接手之前需要调用usb_claim_interface将函数库和 *** 作系统关联起来
有了这些基本方法,通讯应该就不成问题了
详细代码见链接
>

物联网七大通信协议是:REST/>

特点:

1、REST即表述性状态传递,是基于>

2、CoAP (Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。它适用于在资源受限的通信的IP网络。

3、JMS (Java Message Service),即消息服务,这是JAVA平台中著名的消息队列协议。Java消息服务应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

4、XMPP(Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,一个开源形式组织产生的网络即时通信协议。

5、AMQP(Advanced Message Queuing Protocol),先进消息队列协议,用于业务系统例如PLM,ERP,MES等进行数据交换。

6、DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据分布服务。

7、MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。

esp8266 WiFi模块,可以用来 与手机 APP 进行通讯 和远程控制,模块官方固件 是通过 串口进行通讯 控制的,如果连接 单片机 可以由 单片机用 AT命令控制 模块IO口,直接通过网络控制 需要 改写模块 固件。
手机APP端 只要自己定义一个 通讯协议, 按照协议收发控制指令 就可以了,(就相当于单片机串口通讯 差不多),有个中文手机APP编程软件(E4A里面有个例程 (客户端组件))可以参考一下,局域网内控制 比较简单,远程控制协议 借助物联网平台 端口(有免费端口可以利用)。

10月27日,从无锡机场到湖滨饭店的轿车频繁穿梭,湖滨饭店及周围的宾馆入住率暴增,全国各地都来赶一场物联网的大集。28日,由工业和信息化部、国家发改委、科技部、中科院和江苏省人民政府共同举办的“2010中国国际物联网(传感网)大会”在无锡盛大开幕,同时举行的还有博览会和技术及商业应用高峰论坛,为期三天。八位部长级官员、三位院士、四十多位司局长和五十多位跨国公司高层及大型央企高层出席此次会议,是近年来中国物联网产业规模最大、层次最高、影响力最深远的行业盛会。这不仅是一次对物联网产业的检阅,也是一次集体思考,为下一步发展理清思路。

用战略性眼光
务实布局

“物联网的‘泡泡糖’(PPT)时代已经过去,现在要演示的是真q实d。”张伟(某物联网公司CEO,化名)想起一年前跟用户交流时如是感叹,以前多数公司都是停留在方案构思和宣讲阶段,只能靠PPT(幻灯片)来展示物联网,而现在,用户不再满足于PPT了,要看实际案例。如果说,去年来到无锡,每次参观者接触到的示范项目都是“太湖鱼”,那么今年的无锡,则呈现出更多物联网的应用。
本届博览会就是一次大秀场。以传感器、RFID、网络设备、嵌入式终端制造等为代表的物联网制造业,以通信网络为代表的物联网基础设施服务业,和以软件集成、应用开发等为代表的物联网服务业等产业链条上的各个环节都参与了此次博览会。
无锡,整个城市都散发着浓郁的物联网氛围,从2009年8月以来,物联网概念的公司比肩接踵地成立,分布在无锡新区、滨湖区等地。新区设立了10亿元产业培育专项基金,主要用于重点支柱产业促进和新兴产业培育,尤其是包括物联网在内的战略性产业,核心企业入驻园区,新区都给予3年贷贴息或一定比例的注册资本金配套;滨湖区位于长江三角洲腹地,也在集聚各类资源,已累计引进物联网及相关企业200家以上,其中注册资本1000万元以上的企业35家。
无锡市市长毛小平介绍说,2009年8月7日温总理在视察无锡时提到建立感知中国中心,同年10月13日国务院批准同意建设无锡传感网实验区,无锡迅速开始创建物联网、传感网的示范区,技术研发事业培育、人才引进等配套技术相继出台。到今天,有156个物联网项目已经签约,即将开工建设。
去年11月12日,江苏省人民政府、中国科学院、无锡市人民政府签署了共建中国物联网研究发展中心协议,先期以江苏物联网研究发展中心和中国科学院物联网发展中心为运作载体,总部设在无锡。发展中心第一任主任为叶甜春。据叶甜春介绍,发展中心采用了市场化的运作方式,吸纳社会资本,与工业界紧密合作,推进科技成果产业化。发展中心目前设立了综合协调部、战略规划部、应用总体部和技术服务部四个部门。
叶甜春认为,物联网与现有传感网和信息化技术的差异是:更大规模的节点覆盖、更综合的系统集成和更智能的信息处理。“物联网作为‘战略性新兴产业’,更需要‘战略性眼光’,物联网的培育和发展不可能一蹴而就,而是需要一个相当长的过程,这其中核心技术的培育和掌握是关键中的关键。”叶甜春发自肺腑地说,如果没有重点地一哄而上、遍地开花,可以推进信息化,但做不成物联网,或者成为又一个缺乏核心竞争力的“打工产业”。
中国科学院在知识创新工程中,对传感网/物联网领域进行了战略性的前瞻布局,已开展了近10年工作。包括传感器与芯片、信息网络与传输技术、信息处理与存储、软件等,传感器与芯片方面包括声学、振动、压力、温度、湿度、生物、化学等传感器。

借力运营商

物联网与互联网经常被相提并论,虽然两者的本质、内涵及应用模式都有差别,但发展路线却是可以作一定借鉴的。启明创投董事总经理邝子平认为,互联网发展初期,要感谢运营商,因为他们在互联网还没有明确形态时,就大力投入组建了骨干网,进行了一系列改造和完善,促进了互联网的快速发展。如今,物联网来了,运营商又开始摩拳擦掌。
中国电信所关注的领域包括节能减排、民生工程、防灾减灾等。中国电信副总工程师靳东滨透露,中国电信已经在着手建立物联网的企业标准。“因为国家物联网标准组有一些标准并没有出来,在这种情况下,中国电信建立了企业标准。目前,中国电信已经出台了七个关于M2M的标准,包括终端、平台设备和服务协议等。”
中国移动通信研究院副院长杨志强认为,TD-SCDMA的独特优势为物联网的规模发展提供了网络平台,TD的优势是:国家自主知识产权标准保障了通信的安全可靠;频谱效率更高、客户为每比特数据传输支付费用低;根据网络需求,可自行配置上下行资源,特别适合监控等非对称性数据传输业务。杨志强指出,物联网与TD结合有利于我国两大基础创新技术发挥协调作用。“TD与物联网都属于产业链形态的集群性创新模式,由于这种集群性和链条性,使得这两大基础创新在芯片、终端、测试、系统及应用等各个环节具有高度的重合和协同性,将会充分发挥基础协调作用。”杨志强介绍说。
据悉,中国移动M2M业务已经超过了500万终端,2009年,M2M业务收入超过7个亿,2010年,M2M终端用户超过500万,年增长率66%。M2M产业从分布上来看,电力行业占终端总数的35%多,主要应用为电力远程抄表、电力输配变设备监控;交通行业占终端总数的30%,主要应用为车辆定位管理。
中国移动在无锡物联网研究院建设完善了研发试验环境,拥有总面积达1050平米的基础实验室和支持2G和3G的应用开发测试系统;并建立了中国移动物联网体系架构。其目标是把每一个人、每一辆车、每一个家庭、每一个城市接入物联网。
事实上,物联网产业应该借力于运营商及大企业的投入,给物联网一个初始推动,逐步渗透入行业。

从集中走向分布

运营商所擅长的基础设施是一个方面,物联网最后落地,必然是在行业应用中。物联网应用的一个最普遍特点是从集中走向分布,突出表现在智能安防和制造业等领域。
本土著名安防企业博康集团总裁李璞认为,物联网可实现分布式的智能,分布于全系统内的智能化使人与物、物与物得以通信对话,从而自动获取物的动态特征、关联特征,实现所有物征动态信息互通共享。物联网为智能安防带来了一套完整可参照的“技术体系框架”,改变了现在安防领域局部智能、局部互通的限制。经过海量数据存储、处理及多传输通信技术,实现事前的分析预警、事发的实时报警和事后的侦查取证。
西门子中国研究院院长徐亚丁也认为物联网技术为自动化领域带来了更好的分布式解决方案。“制造业面临的大趋势是个性化定制需求、全球化的采购和生产。发达国家的现状是机器密集型,发展中国家的现状是劳动力密集型,两者都向大机器分布式模块化制造转变。”徐亚丁介绍说,采用物联网技术可以使生产自动化从集中走向分布,能够自动调整工序、灵活增减工序。物联网架构使模块可重用性得以提高,可进行重新配置组合以适应生产需要,减少资源浪费,还可以调整就业人口,使受良好教育的劳动力从事高附加值的模块设计维护。“分布式模块化生产系统的关键技术就是物联网,物联网技术使每个模块智能化,能够承担灵活多样的生产任务;使模块内部集成,实现机电/人机一体化。”可见,要深化物联网的应用,必须吃透其技术特性和优势,才能找准应用切入点。

资本市场冷静观望

在中国国际物联网(传感网)大会的投融资高峰论坛上,来自德同资本、红杉资本、启明创投、美国风投协会等风险投资领域的专家,围绕“风险资本如何孵化伟大企业”这一焦点话题畅所欲言。面对火热的物联网概念,资本市场的态度显得很冷静。
邝子平认为,物联网重点在B2B的市场,物联网早期的发展,更多仍然还是给集团客户解决其所需要解决的一些问题,而不是给最终用户提供一个娱乐或者个性化的平台。“不同于互联网,互联网更多关注B2C市场,物联网的商业模式跟互联网将非常不一样,进入的门槛不一样,它的销售周期也会不一样。”邝子平分析说,B2B业务在中国所面临的不确定性非常大,例如为行业用户或政府部门服务的物联网企业,要有能力协调好各方的关系。旷子平认为第一批成功的物联网企业很可能是做系统集成的,即整合各方的物联网资源,提供综合物联网解决方案,而并非纯技术型企业。
中国科学院院士何积丰在谈到物联网时也提醒产业界,物联网刚刚起步,对其期望值不要太高,实际上产业界对物联网领域,从技术和体制上都还没完全做好准备。
何积丰建议,物联网产业在上项目的时候要考虑“先民生后重大基础设施”,在“十二五”规划中一个重要的元素是关注民生,他建议在无锡先做一些跟民生相关的项目,如教育、医疗试点等。
除了要撬动资本市场外,国家在整个物联网产业的发展中也起着重要的作用,包括早期的示范及推动、行业标准及法则法规的确定,特别是在营造良性竞争环境、降低产品成本方面,从国家层面的协调与布局将起到很大的作用。

今年8月,中国传感网国际创新园在太湖国际科技园内建成启用,中国物联网研究发展中心等多个研发中心成为首批入驻单位。
“2010中国国际物联网(传感网)博览会”掠影
2010中国国际物联网(传感网)博览会以“感知科技、感知未来”为主题,围绕信息的感知、传输、处理、应用四大核心领域,集中展示物联网产业链各个关键环节的国内外新技术、新产品、新装备、新工艺和新的解决方案,突出展示物联网在工业、农业、电力、交通、物流、环保、水利、安保、家居、教育、医疗、园区等12个领域应用所带来的高品质生活、高效率管理和高科技网络。博览会展示总面积15000平方米,参展及出席单位包括中国移动、中国联通、中国电信、IBM、微软、华为、航天信息、清华同方、大唐电信、CETC、东软集团、国网信通、美新半导体、长电科技、华润微电子等众多业内知名企业,共200多家来自世界各地的物联网产业链企业参加了展览。参展企业涵盖了产业链上游的芯片和传感器制造商,中游的应用设备提供商、软件与系统集成商、软件与应用开发商,以及下游的海量数据处理和信息管理服务提供商。

物联网疫苗冷链运输车。要使民众用上放心安全的疫苗,疫苗冷链运输环节至关重要。近期,宁波凯福莱特种汽车有限公司正式推出了历时三年研发的我国首款物联网疫苗冷链运输车。在疫苗运输前能预先了解冷藏车状态,对运输的整个过程实时监控、记录,避免车辆内冷冻机组、箱体密封问题引起的故障。该特种车实现了疫苗运输工具的智能化、感知化、网络化,使传统的冷藏车变成了具有物联网功能的专业网络信息终端。

平安城市。联通结合WCDMA网络和视频终端采集系统,利用现代信息通信技术,提供公共场所以及重要场所的视频监控、移动执法等多种综合管理信息服务,系统前端数据通过视频监控系统采集并传输到市、区监督指挥调度中心,实时监控并对紧急事件做出快速响应和应对,防范和处理危害城市公共安全的行为。

食品溯源。消费者只要用手机拍摄食品包装标签上的二维码,就可查询到相关食品的原材料和生产程序等,这种产品可溯源功能大大方便了消费者,为消费者放心消费提供了保障。

感知健康。无锡矽丰展示的基于物联网和云服务技术的感知健康体验中心及健康管理服务平台,用以达到提高人们健康水平的目的。

瑞孚特感知停车。车辆电子标签技术为保安、停车及进出管理提供独立、不间断的系统设备,可以实现对商业区及社区的方便管理,确保只有经过许可的车辆进入。系统还可以提供车辆定期出入及停车费用管理数据。掌握车辆动态情况,分析车辆运行规律,采取有效防范措施,实现车辆调度派遣无纸化、进出场区识别自动化。

物联网比特实验室。无锡爱睿芯电子有限公司把目光放在了物联网教育市场。实验室主要面向青少年开展物联网方面的宣传、培训和体验等活动。通过数字化的实验、积木化的游戏、个性化的作业和整合化的展示等方式,使学生在互动式、体验式的快乐氛围中,找到适合自己特点的发展方向,更快地接受最新的科技知识,锻炼自主学习的能力。

万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色。最近刚好闲一点,抽时间梳理下这块的知识点。

涉及ble蓝牙通讯的客户端(开启、扫描、连接、发送和接收数据、分包解包)和服务端(初始化广播数据、开始广播、配置Services、Server回调 *** 作)整个环节以及一些常见的问题即踩过的一些坑。

比如
1、在Android不同版本或不同手机的适配问题,扫描不到蓝牙设备
2、如何避免ble蓝牙连接出现133错误?
3、单次写的数据大小有20字节限制,如何发送长数据

蓝牙有传统(经典)蓝牙和低功耗蓝牙BLE(Bluetooth Low Energy)之分,两者的开发的API不一样,本文主讲Ble蓝牙开发,传统蓝牙不展开,有需要的可以自行了解。

相对传统蓝牙,BLE低功耗蓝牙,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输。

客户端

服务端

Android43(API Level 18)开始引入BLE的核心功能并提供了相应的 API。应用程序通过这些 API 扫描蓝牙设备、查询 services、读写设备的 characteristics(属性特征)等 *** 作。

BLE蓝牙协议是GATT协议, BLE相关类不多, 全都位于androidbluetooth包和androidbluetoothle包的几个类:
androidbluetooth
BluetoothGattService 包含多个Characteristic(属性特征值), 含有唯一的UUID作为标识
BluetoothGattCharacteristic 包含单个值和多个Descriptor, 含有唯一的UUID作为标识
BluetoothGattDescriptor 对Characteristic进行描述, 含有唯一的UUID作为标识

BluetoothGatt 客户端相关
BluetoothGattCallback 客户端连接回调
BluetoothGattServer 服务端相关
BluetoothGattServerCallback 服务端连接回调

androidbluetoothle
AdvertiseCallback 服务端的广播回调
AdvertiseData 服务端的广播数据
AdvertiseSettings 服务端的广播设置
BluetoothLeAdvertiser 服务端的广播

BluetoothLeScanner 客户端扫描相关(Android50新增)
ScanCallback 客户端扫描回调
ScanFilter 客户端扫描过滤
ScanRecord 客户端扫描结果的广播数据
ScanResult 客户端扫描结果
ScanSettings 客户端扫描设置

BLE设备分为两种设备: 客户端(也叫主机/中心设备/Central), 服务端(也叫从机/外围设备/peripheral)
客户端的核心类是 BluetoothGatt
服务端的核心类是 BluetoothGattServer 和 BluetoothLeAdvertiser
BLE数据的核心类是 BluetoothGattCharacteristic 和 BluetoothGattDescriptor

下面详细讲解下客户端和服务端的开发步骤流程

安卓手机涉及蓝牙权限问题,蓝牙开发需要在AndroidManifestxml文件中添加权限声明:

在搜索设备之前需要询问打开手机蓝牙:

注意: BLE设备地址是动态变化(每隔一段时间都会变化),而经典蓝牙设备是出厂就固定不变了!

通过扫描BLE设备,根据设备名称区分出目标设备targetDevice,下一步实现与目标设备的连接,在连接设备之前要停止搜索蓝牙;停止搜索一般需要一定的时间来完成,最好调用停止搜索函数之后加以100ms的延时,保证系统能够完全停止搜索蓝牙设备。停止搜索之后启动连接过程;

BLE蓝牙的连接方法相对简单只需调用connectGatt方法;

参数说明

与设备建立连接之后与设备通信,整个通信过程都是在BluetoothGattCallback的异步回调函数中完成;

BluetoothGattCallback中主要回调函数如下:

上述几个回调函数是BLE开发中不可缺少的;

当调用targetdDeviceconnectGatt(context, false, gattCallback)后系统会主动发起与BLE蓝牙设备的连接,若成功连接到设备将回调onConnectionStateChange方法,其处理过程如下:

判断newState == BluetoothGattSTATE_CONNECTED表明此时已经成功连接到设备;

mBluetoothGattdiscoverServices();

扫描BLE设备服务是安卓系统中关于BLE蓝牙开发的重要一步,一般在设备连接成功后调用,扫描到设备服务后回调onServicesDiscovered()函数,函数原型如下:

BLE蓝牙开发主要有负责通信的BluetoothGattService完成的。当且称为通信服务。通信服务通过硬件工程师提供的UUID获取。获取方式如下:

具体 *** 作方式如下:

开启监听,即建立与设备的通信的首发数据通道,BLE开发中只有当客户端成功开启监听后才能与服务端收发数据。开启监听的方式如下:

BLE单次写的数据量大小是有限制的, 通常是20字节 ,可以尝试通过requestMTU增大,但不保证能成功。分包写是一种解决方案,需要定义分包协议,假设每个包大小20字节,分两种包,数据包和非数据包。对于数据包,头两个字节表示包的序号,剩下的都填充数据。对于非数据包,主要是发送一些控制信息。
监听成功后通过向 writeCharacteristic写入数据实现与服务端的通信。写入方式如下:

其中:value一般为Hex格式指令,其内容由设备通信的蓝牙通信协议规定;

若写入指令成功则回调BluetoothGattCallback中的onCharacteristicWrite()方法,说明将数据已经发送给下位机;

若发送的数据符合通信协议,则服务端会向客户端回复相应的数据。发送的数据通过回调onCharacteristicChanged()方法获取,其处理方式如下:

通过向服务端发送指令获取服务端的回复数据,即可完成与设备的通信过程;

当与设备完成通信之后之后一定要断开与设备的连接。调用以下方法断开与设备的连接:

源码上传在CSDN上了,有需要的可以借鉴。

=====> Android蓝牙Ble通讯Demo示例源码–扫描,连接,发送和接收数据,分包解包

BLE单次写的数据量大小是有限制的,通常是20字节,可以尝试通过requestMTU增大,但不保证能成功。分包写是一种解决方案,需要定义分包协议,假设每个包大小20字节,分两种包,数据包和非数据包。对于数据包,头两个字节表示包的序号,剩下的都填充数据。对于非数据包,主要是发送一些控制信息。
总体流程如下:
1、定义通讯协议,如下(这里只是个举例,可以根据项目需求扩展)

2、封装通用发送数据接口(拆包)
该接口根据会发送数据内容按最大字节数拆分(一般20字节)放入队列,拆分完后,依次从队列里取出发送

3、封装通用接收数据接口(组包)
该接口根据从接收的数据按协议里的定义解析数据长度判读是否完整包,不是的话把每条消息累加起来

4、解析完整的数据包,进行业务逻辑处理

5、协议还可以引入加密解密,需要注意的选算法参数的时候,加密后的长度最好跟原数据长度一致,这样不会影响拆包组包

一般都是Android版本适配以及不同ROM机型(小米/红米、华为/荣耀等)(EMUI、MIUI、ColorOS等)的权限问题

蓝牙开发中有很多问题,要静下心分析问题,肯定可以解决的,一起加油;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13232814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-24
下一篇 2023-06-24

发表评论

登录后才能评论

评论列表(0条)