首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用蓝牙把文本从Arduino发送到iphone,我不能带character.value

用蓝牙把文本从Arduino发送到iphone,我不能带character.value
EN

Stack Overflow用户
提问于 2015-09-24 15:34:21
回答 2查看 830关注 0票数 0

目的: Arduino向iphone应用程序发送一个感应值。

问题:我做了一个可以与Arduino连接的BlueTooth应用程序。我有时会像图4那样成功,但我不能从arduino那里拿到一根线。我可以只得到“<00>”或者空格。

我需要修改我的申请吗?我得先换掉阿杜伊诺?还是我的ios源代码?

图1是Arduino蓝牙源代码=> (蓝牙是蓝牙4.0)

代码语言:javascript
复制
#include <SoftwareSerial.h>

int blueTx = 6; 
int blueRx = 7; 

SoftwareSerial BTSerial(blueRx,blueTx); //connect HC-10 TX, RX

void setup() {
  Serial.begin(9600);
  Serial.println("hello world");      
  BTSerial.begin(9600);
  Serial.println("BTSerial begin");
}

void loop() {
  while(BTSerial.available())
  {

    BTSerial.println("hello world");
    BTSerial.write("BTSerial is open!");
  }
}

图2是Xcode日志

代码语言:javascript
复制
2015-09-24 15:58:52.822 Arduino_BLE test1[1727:734383] STATE - Power On
2015-09-24 15:58:52.822 Arduino_BLE test1[1727:734383] SCAN - Scanning
2015-09-24 15:58:52.873 Arduino_BLE test1[1727:734383] DISCOVER - Discover : <CBPeripheral: 0x135537f00, identifier = B4A88537-AF01-B403-AA32-F2C84464CFE6, name = HMSoft, state = disconnected>
2015-09-24 15:58:52.873 Arduino_BLE test1[1727:734383] DISCOVER - Connecting to peripheral <CBPeripheral: 0x135537f00, identifier = B4A88537-AF01-B403-AA32-F2C84464CFE6, name = HMSoft, state = connecting>
2015-09-24 15:58:53.015 Arduino_BLE test1[1727:734383] CONNECT - To HMSoft
2015-09-24 15:58:53.016 Arduino_BLE test1[1727:734383] CONNECT - Scanning stoped
2015-09-24 15:58:53.301 Arduino_BLE test1[1727:734383] DISCOVER_SERVICE - Service : <CBService: 0x13556ae90, isPrimary = YES, UUID = FFE0>
2015-09-24 15:58:53.421 Arduino_BLE test1[1727:734383] DISCOVER_CHAR - Characteristic : <CBCharacteristic: 0x135673ce0, UUID = FFE1, properties = 0x16, value = (null), notifying = NO>
2015-09-24 15:58:53.481 Arduino_BLE test1[1727:734383] UPDATE_VALUE - start
2015-09-24 15:58:53.481 Arduino_BLE test1[1727:734383] UPDATA_VALUE - stringFromData : 
2015-09-24 15:58:53.481 Arduino_BLE test1[1727:734383] UPDATA_VALUE - data : <00>
2015-09-24 15:58:53.691 Arduino_BLE test1[1727:734383] NOTIFY - Notification start
2015-09-24 15:58:53.691 Arduino_BLE test1[1727:734383] NOTIFY - Notification began on <CBCharacteristic: 0x135673ce0, UUID = FFE1, properties = 0x16, value = <00>, notifying = YES>
2015-09-24 15:58:53.691 Arduino_BLE test1[1727:734383] NOTIFY - stringFromData : 

图3是我为蓝牙网络写的源代码。

代码语言:javascript
复制
//DISCOVER CHAR
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
    if (error) {NSLog(@"DISCOVER_CHAR - Error");return;}

    for (CBCharacteristic * characteristic in service.characteristics) {
        NSLog(@"DISCOVER_CHAR - Characteristic : %@",characteristic);
        [peripheral readValueForCharacteristic:characteristic];
        [peripheral setNotifyValue:YES forCharacteristic:characteristic];
    }
}

//INTERACT
//READ
-(void)peripheral:(CBPeripheral *)peripheral
didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic
            error:(NSError *)error
{
    NSLog(@"UPDATE_VALUE - start");
    NSString *stringFromData = [[NSString alloc]initWithData:characteristic.value encoding:NSUTF8StringEncoding];
    NSLog(@"UPDATA_VALUE - stringFromData : %@", stringFromData);

    [_data appendData:characteristic.value];
    NSLog(@"UPDATA_VALUE - data : %@",_data);
}

图4是我之前成功的例子。但是…。。我不能再这样做了

代码语言:javascript
复制
UPDATA_VALUE - start
UPDATA_VALUE - stringFromData :
UPDATA_VALUE - stringFromData :<00>
UPDATA_VALUE - start    
UPDATA_VALUE - stringFromData :hello world

BTSeria
UPDATA_VALUE - stringFromData:<0068656c 6c6f2077 6f726c64 0d0a4254 53657269 61>
UPDATA_VALUE - start
UPDATA_VALUE - stringFromData :l begin

UPDATA_VALUE - stringFromData :<0068656c 6c6f2077 6f726c64 0d0a4254 53657269 616c2062 6567696e 0d0a>
EN

回答 2

Stack Overflow用户

发布于 2015-09-24 21:12:14

当前代码中的语法:

代码语言:javascript
复制
BTSerial.begin(9600);

此语法表示您使用的是9600波特率。首先,你需要弄清楚你的设备接受数据的波特率是多少。如果您不知道波特率,您可以尝试不同的标准波特率,如2400,4800,9600,19200,38400等。您可以参考您的蓝牙模块的数据表了解此信息。

票数 0
EN

Stack Overflow用户

发布于 2015-10-03 15:13:55

见见德赛!谢谢。我一个接一个地改变了事情。最后,我从arduino那里得到了消息。问题出在Arduino中sensorValue的“值格式”。我刚刚将sensorValue的值格式从"int“改为"byte”。这就是工作!我解决了它!再次感谢您的关注。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32755804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档