目的: Arduino向iphone应用程序发送一个感应值。
问题:我做了一个可以与Arduino连接的BlueTooth应用程序。我有时会像图4那样成功,但我不能从arduino那里拿到一根线。我可以只得到“<00>”或者空格。
我需要修改我的申请吗?我得先换掉阿杜伊诺?还是我的ios源代码?
图1是Arduino蓝牙源代码=> (蓝牙是蓝牙4.0)
#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日志
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是我为蓝牙网络写的源代码。
//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是我之前成功的例子。但是…。。我不能再这样做了
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>发布于 2015-09-24 21:12:14
当前代码中的语法:
BTSerial.begin(9600);此语法表示您使用的是9600波特率。首先,你需要弄清楚你的设备接受数据的波特率是多少。如果您不知道波特率,您可以尝试不同的标准波特率,如2400,4800,9600,19200,38400等。您可以参考您的蓝牙模块的数据表了解此信息。
发布于 2015-10-03 15:13:55
见见德赛!谢谢。我一个接一个地改变了事情。最后,我从arduino那里得到了消息。问题出在Arduino中sensorValue的“值格式”。我刚刚将sensorValue的值格式从"int“改为"byte”。这就是工作!我解决了它!再次感谢您的关注。
https://stackoverflow.com/questions/32755804
复制相似问题