Swift 3.0 OpenSource sur Linux, Essai réussi sur Raspberry |
Bienvenue invité ( Connexion | Inscription )
Swift 3.0 OpenSource sur Linux, Essai réussi sur Raspberry |
26 Jun 2016, 10:45
Message
#1
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 486 Inscrit : 29 Aug 2002 Membre no 3 340 |
J'ai dû me préparer une image de Ubuntu 16.04 Mate pour booter le Rpi2 avec une version de Linux capable de supporter Swift 3.0
- J'ai essayé d'utiliser la recette macOS à base de commande dd documentée - On identifie le nom des devices en insérant la carte mémoire SD puis avec la commande diskutil list, puis on démonte le device: diskutil unmountdisj /dev/disk4 - Télécharger l'image et la décompresser pour obtenir un .img - dd if=chemin/vers/image.img of=/dev/disk4 bs=2m Désolé, mais ça ne marche pas. La copie des 8Go prend bien 15 min, mais l'image ne boote pas. - Je dois alors me tourner vers mon PC et Win32DiskImager qui fait le boulot en quelques minutes, 10 min env. C'est étonnant de voir la petite carte booter sans problème avec la toute dernière version d'Ubuntu. L'install de Swift 3.0 se fait par l' expansion d'un zip dans la racine qui va peupler /usr/bin, /usr/lib etc Il faut compléter par l'installation de clang 3.6 (c'est là que Ubuntu 16 est nécessaire) La démo consiste à faire clignoter alternativement deux LEDs branchées sur les Broches GPIO 4 et 27 qui vont fournir du 3,3V lorsque le signal est à 1, via une résistance de 220 ohm pour réduire l'intensité autour de 15mA. Pour cela, on dépend d'un package nommé SwiftGPIO sur GitHub. C'est encore un peu rugueux, entre le Package Manager qui va chercher la version qu'on ne demande pas et qui compile avec un warning, ou le git clone qui retourne la toute dernière version compilable, mais on y arrive. Il faut transformer les "CChar)" en "Char.self)". Il y a aussi un "<CChar>" qui reste comme il est. Ensuite il faut organiser le projet pour pouvoir le construire: Il faut mettre le source dans un dossier Sources et créer un fichier de build Package.swift (le makefile ou le pom, ...) Un "swift build" fait le boulot. L' exécutable est bien caché dans un dossier .build, mais au final, ça fonctionne, les LEDs clignotent. Idéalement, il faudrait intercepter le Ctrl-C pour mettre les deux signaux à zéro. sudo .build/debug/SwiftyGpioDemo J'ai trouvé l'exemple de code pour intégrer l'interception du ctrl-c CODE import Glibc
import SwiftyGPIO enum Signal:Int32 { case HUP = 1 case INT = 2 case QUIT = 3 case ABRT = 6 case KILL = 9 case ALRM = 14 case TERM = 15 } typealias SignalHandler = __sighandler_t func trap(signum:Signal, action:SignalHandler) { signal(signum.rawValue, action) } let gpios = SwiftyGPIO.GPIOs(for: .RaspberryPi2) // GPIO4 and GPIO27 let leds = [gpios[.P4]!, gpios[.P27]!] // Initialize our GPIOs func reset() { for led in leds { led.direction = .OUT led.value = 0 } } trap(signum: .INT) { signal in print("Intercepted signal: \(signal)") reset() exit(0) } // Blink reset() while true { for led in leds { led.value = 1 sleep(1) led.value = 0 } } Ce message a été modifié par Jaypee - 27 Jun 2016, 10:01.
Fichier(s) joint(s)
|
|
|
Nous sommes le : 28th March 2024 - 17:44 |