近段时间,各地的线下智能家居体验门店、智慧生活体验区热度极高。这些设置,将传统的智能家居商品交易场景转化为商品应用场景,极大地提升了消费者的购物体验和购买意愿,让消费者开始深入了解了智能家居的优势和自己的需求,也让智能家居营销变得更精准、高效。那么,智能家居好在哪儿,智能家居场景又是如何打动消费者的?
安装智能家居前,我们每天早上往往会被闹钟吵醒,按下闹钟后,脑袋依然困得不行,照照镜子,因为受刺激惊醒,眼睛还有些发红,之后一整天都感觉很疲惫。
有了智能家居后。清晨,窗帘与窗户自动拉开,阳光温暖而洁净,透过窗户斜斜地射进来,淡淡的花香飘进房间,柔和的音乐也定时响起,声音逐渐增大。阳光、花香、音乐,你感觉到了这一切,睡意自然而然地被驱散,你睁开双眼,新的一天开始了。
每天的7点钟窗帘打开 窗户打开,这一切是怎么实现的呢?
手机上界面如下 默认全选
国外的习惯 周日 周一 周二 周三 周四 周五 周六 排序,给每一个按钮都定义tag ,tag依次等于0 1 2 3 4 5 6 如上图红色字体。
手机和低功耗蓝牙通信只能传输byte类型。解决方案:使用二进制,一个字节占八位,存放7个数字足够了。
选中为1 没有选中为0.如下图
这样得到的二进制(比如1001011)完全符合蓝牙传输字节标准。 有的攻城狮喜欢“0”+“1”+“0”+“1”“0”+“1”“0”组成一个字符串“1001011”,然后二进制字符串转成byte。比如byte a = string(“1001011”,2) ,当然把二进制弄成字符串转byte 也可以完成。
还有另外一种就是先位移,然后异或 。
假设你选择周五 周六
周日 周一 周二 周三 周四 周五 周六
0 0 0 0 0 1 1
点击每个按钮都要执行这个方法。选择周五执行一次 选择周六执行一次
var weekDayInt:Int16 = 0x7f//默认全选
func buttonClick(button:UIButton) -> Void {
weekDayInt ^= 1 << button.tag;
var i = ischeck(row: button.tag)
if (i == 0){
button.backgroundColor = UIColor.darkGray
}else{
button.backgroundColor = UIColor.init(red: 30.0/255.0, green: 144.0/255.0, blue: 255.0/255.0, alpha: 1.0);
}
}
func ischeck(row:Int) -> Int16 {//判断是否选中 如果选中按钮的背景颜色要变。
return weekDayInt & 1 << row;
}
位移 和 ^(异或运算),下面讲讲。
二进制 : 0000 1001
左移(<<)2位 0010 0100
异或运算的作用
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
即:
0^0 = 0,
1^0 = 1,
0^1 = 1,
1^1 = 0
按位异或的3个特点:
(1) 0^0=0,0^1=1 0异或任何数=任何数
(2) 1^0=1,1^1=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0
还有几个方法
//字符串转byte
static func USweekToInt(week:String) -> Int16 {
var weekrepeat:Int16 = 0;
if(week.count > 0){
var weekdays = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
var days = week.split(separator: ",");
for day in days {
var i = 0;
for weekday in weekdays {
var daystring = String(day)
let characterSet = CharacterSet(charactersIn: " ")
daystring = daystring.trimmingCharacters(in: characterSet)
if(daystring == weekday){
weekrepeat |= 1 << i;
break;
}
i += 1 ;
}
}
}
return weekrepeat;
}
static func UintToXingQi(weekint:Int16) -> String {
if(weekint == 0x7F){
return "每天";
}
else if(weekint == 0x3E){
return "工作日";
}
else if(weekint == 0x41){
return "周末";
}
var string = "";
var dayStrings = ["周六", "周一", "周二", "周三", "周四", "周五", "周日"];
var idx:Int = Calendar.current.firstWeekday - 1;
var maxa = idx + 7;
while idx < maxa {
var index = idx%8;
var bb = (weekint >> index) & 1;
if(bb > 0){
string += dayStrings[index] + " ";
}
idx += 1;
}
return string;
}
//byte转星期字符串
static func IntToStringsun(weekday:Int16) -> String {
var days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
var string = "";
var i = 0;
while i < 7 {
var temp = weekday >> i & 1
if(temp > 0){
if(string.count > 0){
string += ",";
}
string += days[i];
}
i += 1;
}
return string;
}