Arduinoの試す環境がないのでコンパイルも通していないコードで恐縮ですが、考え方だけ参考にしていただければと思います。
「SwiftUIでタップした座標を取りたい」と「SwiftUIでシリアル通信を実装したい」と複数の質問があるのではないでしょうか。
まず、SwiftUIでタッチイベントを取得する方法としては下記のリンクを参考にしてください。
シリアル通信の実装としては接続・通信と二段階踏む必要があるかと思います。
シリアル通信そのものについては詳しくないので別途調べていただくとして、SwifUIで送信するトリガーがわからないということであれば、ボタンタップ時に通信を開始させるようにすればよいかと思います。
swift
1struct HomeView : View {
2 var body: some View {
3 Button(action: {
4 // ここでシリアル通信を開始する
5 }, label: {
6 Text("シリアル通信の開始")
7 })
8 }
9}
接続後タッチイベントをトリガーに送信するのであれば、前述した方法でタッチイベントを実装していただくのが良いかと思います。
また通信が逆向きの場合ですと、シリアル通信をおこなうObservableObjectを使用して、シリアル通信で得た結果とSwiftUI側のラベルを同期させることができるかと思います。
swift
1import SwiftUI
2import Combine
3
4final class FooObject : ObservableObject {
5
6 @Published var xPos: CGFloat = 0
7
8 func startSensor() {
9 // シリアル通信を開始
10 }
11
12 func onChanged(result: HogeObject) {
13 // ここで通信結果をつけとるとする
14 xPos = result.x
15 }
16}
ホーム画面では遷移時・またはボタンを押した時に object.startSensor()
を実行するイメージです。
swift
1struct HomeView : View {
2
3 @State private var object: FooObject = FooObject()
4
5 var body: some View {
6 Text(object.xPos)
7 }
8}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/05 11:58
2020/09/05 12:26