宋旭陶 Swift on Raspberry Pi
2020-04-13 458浏览
- 1.Swift on Raspberry Pi 宋旭陶 / 靛⻘青 K SwiftGG Swift 爱好者
- 2.
- 3.⾃自我介绍 宋旭陶(靛⻘青K),热衷于 Swift 语⾔言及各场景下的应⽤用。 参与 Swift ⽂文档翻译、SwiftGG ⽂文章翻译, 开源 TransitionTreasury、Flix Swift 框架。 对 Swift ⽣生成代码应⽤用上也有些许的实践,⽐比如 RouterBuilder、Sketch2Code。
- 4.⽬目录 1. 2. 3. 4. Swift 在 Linux 上的发展现状 树莓派和 Swift 为什什么尝试 Swift Swift 实际应⽤用 - 智能灯泡
- 5.Swift 在 Linux 上发展得怎么样了了 Swift for TensorFlow 深度学习 Vapor Kitura Web 框架
- 6.Swift 在 Linux 上发展得怎么样了了https://swift.org/server/
- 7.⽬目录 1. 2. 3. 4. Swift 在 Linux 上的发展现状 树莓派和 Swift 为什什么尝试 Swift Swift 实际应⽤用 - 智能灯泡
- 8.树莓派和 Swift +
- 9.树莓派 4B
- 10.树莓派 Zero W • • • • • • • • • • 802.11 b/g/n wireless LAN Bluetooth 4.1 Bluetooth Low Energy (BLE) 1GHz, single-core CPU 512MB RAM Mini HDMI and USB On-The-Go ports Micro USB power HAT-compatible 40-pin header Composite video and reset headers CSI camera connector
- 11.和 iPhone X 对⽐比
- 12.在树莓派上运⾏行行 Swift 安装 $ curl -shttps://packagecloud.io/install/repositories/swift-arm/release/script.deb.sh sudo bash $ sudo apt install swift5 运⾏行行 $ echo "print(\"hello world\")" > helloworld.swift $ swift helloworld.swift
- 13.在 ARM 下编译 Swifthttps://github.com/uraimo/buildSwiftOnARM
- 14.⽬目录 1. 2. 3. 4. Swift 在 Linux 上的发展现状 树莓派和 Swift 为什什么尝试 Swift Swift 实际应⽤用 - 智能灯泡
- 15.为什什么尝试 Swift 我学 Swift 是因为我爱 Swift
- 16.为什什么尝试 Swift ⾼高性能、低功耗 TensorFlow 多线程 ⾯面向协议/对象编程 ⾼高级语⾔言
- 17.⽬目录 1. 2. 3. 4. Swift 在 Linux 上的发展现状 树莓派和 Swift 为什什么尝试 Swift Swift 实际应⽤用 - 智能灯泡
- 18.嘿 Siri,开电视 嘿 Siri,开电视
- 19.Hey Siri,开电视
- 20.实际应⽤用 - 智能灯泡 开关 亮灭状态 开关 亮灭
- 21.General-purpose input/output (GPIO) 作为输出,输出⾼高电压/低电压 作为输⼊入,接收⾼高电压/低电压
- 22.接收按钮输⼊入信号 VCC 5V GND GPIO14 拨到下⽅方 VCC 和 GPIO14 连接 呈⾼高电平 拨到上⽅方 GND 和 GPIO14 连接 呈低电平
- 23.引⼊入 SwiftyGPIO 控制引脚
- 24.接收按钮输⼊入信号 作为输⼊入接收电压变化
- 25.按下低电平
- 26.松开⾼高电平
- 27.点亮 LED
- 28.点亮 LED 作为输出改变输出电压
- 29.点亮 LED
- 30.使⽤用按钮控制 LED 灯 开关 亮灭
- 31.使⽤用按钮控制 LED 灯
- 32.使⽤用按钮控制 LED 灯
- 33.与 iPhone 通信 开关 ? ? 亮灭
- 34.使⽤用什什么和树莓派通信? GPIO Bluetooth USB Network
- 35.使⽤用什什么和树莓派通信? GPIO USB 远程 ⽆无距离限制 Bluetooth Network
- 36.SwiftNIO • • • •https://github.com/apple/swift-nio跨平台,可⽤用于 Linux、macOS、iOS 和 tvOS 基于事件驱动的⾮非阻塞式异步⽹网络框架 ⽀支持丰富的协议,TCP、UDP、HTTP/1、HTTP/2、WebSocket、TLS
- 37.EventLoop 注册任务回调 Request EventLoop 触发请求回调 任务完成 File System Database Remote Call Computation
- 38.Channel EventLoop ChannelHandler ChannelHandler Pipeline ChannelHandler
- 39.Bootstrap(⾼高阶 API) Bootstrap 创建 Channel 注册到 EventLoop
- 40.HTTP 服务的 Pipeline EventLoop TCP HTTP Pipeline 业务逻辑
- 41.Hello World - 简单 HTTP 服务
- 42.通过 TCP ⻓长连接进⾏行行通信 TCP ServerBootstrap TCP TCP ClientBootstrap ClientBootstrap ClientBootstrap
- 43.使⽤用 SwiftNIO 连接树莓派和 iPhone GPIO TCP
- 44.使⽤用 SwiftNIO 连接树莓派和 iPhone 接到 iPhone TCP 连接请求 返回当前灯泡状态
- 45.使⽤用 SwiftNIO 连接树莓派和 iPhone 推送物理理开关修改状态
- 46.使⽤用 SwiftNIO 连接树莓派和 iPhone 接到 iPhone 修改灯泡状态请求 返回当前灯泡状态
- 47.使⽤用 SwiftNIO 连接树莓派和 iPhone
- 48.提个醒 • • • ⼀一个 Server (智能灯泡)对多 Client (多个⼿手机)问题 实际应⽤用会采⽤用标准协议,⽐比如 MQTT 实现 UDP 组播 / Bonjour ⾃自动发现设备
- 49.总结 • • • • Swift 已经可以在 ARM 设备上进⾏行行嵌⼊入式开发,我们有了了从 0 到 1 的过程 现在如何上⼿手 Swift 嵌⼊入式开发?从树莓派开始 Demo ⼯工程:https://github.com/DianQK/GMTC-Swift-on-Pi除了了灯泡做什什么?所有电⼦子设备改造,⽐比如空⽓气净化器器、饮⽔水机、电饭煲 提问送树莓派
- 50.
- 51.
- 52.THANKS THANKS! THANKS!