Raspberry Pi 教程:在 Raspberry Pi 上搭建 Swift 开发环境

在我之前的文章中,我概述了 Raspberry Pi 平台上 Swift 的当前状态。 在这篇文章中,我将重点介绍如何设置一个愉快的开发环境来编写 Raspberry Pi 上的 Swift 代码。

在任何 Linux 平台上编写 Swift 代码的最大困难之一就是缺乏一个真正的 IDE。 当然,你可能讨厌 XCode,但是要开始在命令行中输入 nano 的程序,你会看到真实的痛苦感受。

Raspberry Pi Swift 错误

一个良好的开发经验的第一步是,一个好的 IDE 和最好的 Swift IDE for linux 现在是...。Xcode 中。

什么!? 但 Xcode 不能在 Linux 上运行。 如何在 Raspberry Pi 上安装? 那么你不用,坦率地说你不想在 Raspberry Pi 上写代码。 这是一个很慢的电脑,运行它与显示器和键盘是不相容的。 那么我在哪里写我的代码? 当然,在你的 Mac 上,还有其他什么东西。

你需要做的第一件事是,建立一个无头(headless)的 Raspberry Pi。

本教程是为 Raspian 编写的,因为 SPM 在那里能工作,所以我推荐使用 Ubuntu 作为 Raspberry Pi。我首先用键盘和显示器运行我的 Raspberry Pi,并进行了初始设置并将其连接到我的 WiFi 网络。一旦你的 Raspberry Pi 连接到你的路由器,你可以开始通过 SSH 从你的 MAC 控制它。首先你需要在网络上找到你的 Raspberry Pi 的 IP 地址。我使用 nmap 扫描网络上列出的端口 22(ssh端口)中的设备。

Raspberry Pi nmap

要找到你的 Raspberry Pi,你需要用你的本地地址替换 192.168.6.0 部分。 一旦你有了,通过 SSH 连接你的 Mac。

ssh {your-pi-username}@{you-pi-ip-address}

现在你在路上了,天空是极限。尝试在 Raspberry Pi 上远程构建和运行第一个 Swift 脚本。

// Create the script
echo "print(\"hello from swift\")" >> hello.swift
// Run it
swift hello.swift

这一切都很好,但你仍然在命令行上做什么? 去打开 Xcode,并进行一些严肃的开发!

如果按下 Mac 上的返回键,我们将创建一个程序来打开和关闭连接到 Raspberry Pi 的 LED。为了在两种环境之间切换,我们将使用 Swift Package Manager,它是 Swift 的系统不可知的依赖关系管理器。它在 OS X 和 Linux 上运行良好,这将是一个重要的部分,使我们能够在 Mac 上开发代码并在 Raspberry Pi 上运行它。

// create the project folder
mkdir led-blink
// go to the folder
cd led-blink
// initialize the swift project using SPM
swift package init --type executable

您现在应该具有由 SPM 生成的目录结构和 main.swift 文件。编辑 Package.swift 以包含 GPIO swift 库。

import PackageDescription
let package = Package(
    name: "led-blink",
    dependencies: [
        .Package(url: "https://github.com/uraimo/SwiftyGPIO.git", majorVersion: 0)
    ]
)

现在使用以下命令获取库:

swift package update

您现在可以使用 SPM 为您生成一个 Xcode 项目! 使用以下命令执行此操作:

swift package generate-xcodeproj

打开生成的 Xcode 项目并构建它(cmd + B),因此编译器知道 SwiftyGPIO 库。瞧,你现在可以使用 Xcode 来开发你的程序,访问所有这些甜蜜的工具,如代码完成,语法高亮,编译器错误,文档等。

打开 main.swift 文件并添加下面的代码:

import SwiftyGPIO
import Foundation
// Get a dictionary of all the gpio pins
let gpios = SwiftyGPIO.GPIOs(for: .RaspberryPi2)
// Get the pin that you connected the LED to. Remember to set the right pin number, for me it was 27
guard let ledGpio = gpios[GPIOName.P27] else {
    fatalError("Could not initialize the gpio")
}
// Set the pin direction to .OUT and turn it off
ledGpio.direction = .OUT
ledGpio.value = 0
// Read user input from keyboard and switch the LED on/off each time the user presses the return key
print("Press return to switch the LED on/off. To quit type exit")
while let userInput = readLine(strippingNewline: true), userInput != "exit" {
    print("Switching LED")
    ledGpio.value = ledGpio.value == 0 ? 1 : 0
}

好的,程序完成了。 剩下的唯一的事情就是在 Pi 上构建和运行它。 为此,您需要将您在 Mac 上创建的项目复制到 Pi。有几个解决方案可以做到这一点。 首先,你可以创建一个 GIT 仓库并在 Github 上托管它。 然后,你会推动从你的 Mac 的变化,并把他们在 Pi 上。 另一个选择是使用 SCP 来复制文件夹。

scp -r {path-to-project-folder-on-mac} {your-pi-username}@{you-pi-ip-address}:{path-to-folder-on-pi}

一旦你复制项目,你可以 ssh 到 Pi 并转到项目文件夹。该文件夹中包含所有文件,但是您仍然必须使用树莓上的编译器来构建它。

swift build

应该创建一个可执行文件,然后运行并惊叹于您的工作! 这是我在行动中创造的杰作。

https://www.youtube.com/watch?v=r1bNXMWGgjQ

结论

一旦你可以在Mac上使用你熟悉的环境,为 Pi 开发并不是那么痛苦。使用这种技术,您可以使用 Xcode 更快地开发您的程序。

工作流程大致如下:在 Mac 上编写代码 -> 复制到 Pi -> 在Pi上编译并运行

这个过程很容易完全自动化,但我没有时间去做。

使用这个设置,我打算使用 Xcode 开发一个服务器应用程序,运行一个 pi,并用我的 iPhone 控制 LED。 手指交叉。

原文链接:https://hackernoon.com/setting-up-a-swift-development-environment-on-raspberry-pi-c7af7fceac1e

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.