我正在设计一个应用程序,它将通过利用CoreBluetooth通过BLE Mini与TI LaunchPad进行通信,但是我很难在我的iPhone和Red Bear BLE Mini之间传输数据。目前,我正在尝试发送一个命令,指示Launchpad打开和关闭LED。我已经实现了所有的CoreBluetooth方法,并确认我已连接到BLE Mini。我也发现了这个设备的单一服务以及与我的iPhone应用程序相关的这个设备的五个特性,所以我知道我已连接到设备。确认此连接后,我尝试写入写入特性,但我不确定是否正确写入了这个特性。另外,我不确定我应该如何编码数据。我试过了ascii和utf8。这是我写的:
let string = "LED-ON"
let data = string.data(using: .ascii)
if manager.write_char != nil{
print("trying")
print(manager.write_char.uuid)
peripheral.writeValue(data!, for: manager.write_char, type: CBCharacteristicWriteType.withoutResponse)
print语句确认此特性具有我定义为写特征的uuid
let WRITE_CHAR = "713D0004-503E-4C75-BA94-3148F18D941E"
我相信这是正确的写入特性。我也尝试了71230003.在Launchpad一侧,我上传了以下代码:
int incomingByte = 0; // for incoming serial data
void setup() {
// put your setup code here, to run once:
Serial.begin(19200);
Serial1.begin(9600);
pinMode(7, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
//if (Serial1.available()){
// Serial.print("available");
//Read in data
Serial.print(Serial1.available());
Serial.print(" ");
Serial.print(Serial1.read());
Serial.print("\n");
if (Serial1.available() > 0) {
// read the incoming byte:
incomingByte = Serial1.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
在串行监视器中,我收到的所有内容均为可用检查中的0,读取方法中为-1,这两者均表示没有收到任何数据。我是否正确地将数据传输到BLE Mini?如果是这样,我读错了吗?另外,我应该做些什么来告诉BLE Mini传输数据?抱歉这个冗长的问题。非常感谢你的帮助。