宋旭陶 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!