0

接続されている LED を別の色に変更するために、コマンドを BLE アダプターに送信する Xcode で Swift アプリを作成しています。

SOに関する以前の投稿への返信から確立したように、配列内の16進整数に関してコマンドを送信する必要があります。これを行うために、次のコードを使用しています。

let bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
let data = NSData(bytes: bytes, length: bytes.count)

したがって、これには上記のように UInt8 フォームが必要です。

ただし、BLE レシーバーに接続されている LED ストリップの R、G、および B の色を設定するために、Swift アプリでスライダーをカラー ピッカーとして使用しようとしています。これを行うために、R、G、B の 3 つのスライダーをそれぞれ作成し、それぞれの最小値を 0 に、最大値を 255 に設定しました (255 は 16 進数で FF に変換されるため)。次に、次の関数を使用してこれらを 16 進形式に変換し、上記のコマンドで実装できるようにします。

func colorToHex(input: Int) -> UInt8 {
    var st = NSString(format: "%2X", input)
    return st
}

これに関する問題は、UInt8 値を再度返さなければならないという事実です。「st」は NSString であるため、Xcode は「NSString は UInt8 に変換できません」というエラーをスローします。

私はSwiftにかなり慣れていません。ここでの質問は、UInt8 値を返す関数を取得するにはどうすればよいですか? UInt8 値を形成するにはどうすればよいですか?

どんな助けでも大歓迎です!

4

2 に答える 2

1

NSStringまたはを使用する必要はありませんInt。最小値が0で最大値が255の場合redSliderは、UISlider計算するだけです

let redByte = UInt8(redSlider.value)

bytesそれを配列で使用します。

var bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
bytes[0] = redByte // Assuming that the first array element is for red.
于 2015-08-04T11:48:52.840 に答える