一:单片机/嵌入式开发
智能硬件,哎,不就是单片机吗说到底就是一个微控制器,现在出现的智能手表,调光LED灯,蓝牙开锁,WiFi插座等等,说到底不就是单片机开发嘛单片机,电子和通信专业一般都会教51或AVR、计算机系接触不到。现在流行的Arduino也是单片机开发的一种。
但是要做一款智能硬件,技术上只会单片机编程还是不行的。哎呀嘛什么智能硬件,本质上就是一个电子产品!。所以你要开发一款能拿得出手的智能硬件,电子系统设计必须要会的!
二:网络通信协议
智能硬件与传统的电子产品最大的差别,就是智能硬件连上了网络。要连上网络,就需要用到网络通信模块及学习网络通信协议——TCP/IP。
TCP/IP是一个技术的总称,里面包含两种协议TCP、UDP,位于网络通信分层模型的传输层,同时也是由 *** 作系统管理。而>
数据包的部分最好直接用C语言(或者OC)封装一个Struct,然后在Swift内引用,因为涉及到序列化的问题,在Swift里面直接写其实是有一些问题的。
关于从C语言封装后Swift调用的范例,在Github上搜索RockfordWei/CSwift。这种写法是最理想的,我相信你的物联网端的数据包就是用C写的结构体,应该可以直接引用。
如果非要用纯Swift写,还有两个选择:
如果碰巧走运(假定都是每4个字节一组对齐),可以用多元组(Tuple)直接写。比如下面的例子:
let datapack = (firstMember:Int64(100), secondMember:Int32(10))这个datapack是可以与Struct兼容的,但是数据包如果不是以4个字节或者8个字节分组的就不兼容;如果多元组中包括了如字符串之类的非简单类型,也是不兼容。
最后一种方法虽然笨,但是的确是纯Swift的写法,就是用FoundationData类型,计算每个字节的值,然后再提交给程序接口进行调用;不建议这么做,因为要花很多时间调试,错一位就全错了,很麻烦。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)