gpt4 book ai didi

ios - Redbear BLE 数据记录模拟输入到 ios

转载 作者:行者123 更新时间:2023-11-29 02:58:24 26 4
gpt4 key购买 nike

我正在尝试将“Redbear BLE”防护罩与“Arduino Uno”一起使用,并将模拟输入数据记录到 iOS 应用程序,以便数据输入更改背景颜色。

我正在使用 iOS BLE 简单控件示例“Here”。我是 Objective-C 的新手,在调用正确的 NSLogself.view.backgroundcolor

的变量方面苦苦挣扎

这是我想添加我的 backgroundcolor 更改的区域:

       // When data is comming, this will be called
-(void) bleDidReceiveData:(unsigned char *)data length:(int)length

{
NSLog(@"Length: %d", length);

// parse data, all commands are in 3-byte
for (int i = 0; i < length; i+=3)
{
NSLog(@"0x%02X, 0x%02X, 0x%02X", data[i], data[i+1], data[i+2]);

if (data[i] == 0x0A)
{
if (data[i+1] == 0x01)
swDigitalIn.on = true;
else
swDigitalIn.on = false;
}
else if (data[i] == 0x0B)
{
UInt16 Value;

Value = data[i+2] | data[i+1] << 8;
lblAnalogIn.text = [NSString stringWithFormat:@"%d", Value];

}
}
}

这是我一直在尝试的,但我不认为我在正确的路线上:

  NSData *data = [[NSData alloc] initWithBytes:buf length:3];
if (swAnalogIn > 0.0) {
NSLog(@"0");
self.view.backgroundColor = [UIColor *data];
previousValue = currentValue;
currentValue = 0;
}
[ble write:data];

或者这个。

NSData *data = [[NSData alloc] UIColor colorWithRed:buf.floatValue / 1024.0f
green:buf.floatValue / 1024.0f
blue:buf.floatValue / 1024.0f
alpha:1.0f];
}
(UIColor *data) {
self.view.backgroundColor = data;

};
[ble write:data];
}

非常感谢任何帮助或指向正确方向的帮助。

最佳答案

我认为你有两个问题。一个很简单 - 如何创建颜色并将其设置为背景,但这取决于解决第一个更棘手的问题,即如何将模拟值映射到颜色。

这段代码-

else if (data[i] == 0x0B) {
UInt16 Value;

Value = data[i+2] | data[i+1] << 8;
}

Value 中获取模拟值作为 16 位无符号整数。颜色通常使用 8 位三元组(RGB 或 HSB)加上 alpha 或透明度值(但让我们忽略它)创建 - 因此您必须决定如何将 16 位值映射到 24 位值。执行此操作的最佳方法取决于您要实现的目标以及输入的范围(即,根据您的模拟输入源,您可能无法获得 0-65535 的完整范围)。

一种简单的方法是将高 8 位映射到 Hue(颜色),将低 8 位映射到具有固定亮度的饱和度(强度)。为了增加一点复杂性,UIColor 初始化方法采用 0-1 范围内的 float ,因此我们需要除以 255 以缩放结果

CGFloat hue=(Value >>8)/255.0;

CGFloat sat=(Value & 0xff)/255.0;

CGFloat bright=0.5;

UIColor *backGroundColor=[UIColor colorWithHue:hue saturation:sat brightness:bright alpha:1.0];

// Finally - set the background colour

self.view.backgroundColor=backgroundColor;

请注意,您已经在 data[i+1]data[i+2] 中分别拥有了两个字节,因此您可以节省位掩码和移位只需使用 -

    else if (data[i] == 0x0B)
{
CGFloat hue=data[i+1]/255.0;
CGFloat saturation=data[i+2]/255.0;

self.view.backgroundColor=[UIColor colorWithHue:hue saturation:saturation brightness:0.5 alpha:1.0];

}

关于ios - Redbear BLE 数据记录模拟输入到 ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23593229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com