我有4個不同的int值,我需要發送到BLE設備(建立連接正常)。發送int數據到BLE設備
爲了清楚起見,我將調用int值A,B,C,D。 A和B的範圍在0-100之間,C的範圍是0-2000,D的範圍是0-10000。所有值由用戶輸入確定。我需要快速連續地將這四個值發送到BLE設備,並且將它們分別以A和B(8位),C(16位)和D(32位)進行不同的打包。我不確定如何正確打包值。
以下是我嘗試過的三種不同程度的成功方法。
將int轉換爲數據併發送,例如,對於A(8位)int:
const unsigned char CHR = (float)A; float size = sizeof(CHR); NSData * aData = [NSData dataWithBytes:&CHR length:size]; [p writeValue:aData forCharacteristic:aCHAR type:CBCharacteristicWriteWithResponse];
首先轉換爲字符串,例如, (16位)C:
NSString * cString = [NSString stringWithFormat:@"%i",C]; NSData * cData = [cString dataUsingEncoding:NSUTF16StringEncoding]; [p writeValue:cData forCharacteristic:cCHAR type:CBCharacteristicWriteWithResponse];
使用uint,例如,對於(32位)d INT:
uint32_t val = D; float size = sizeof(val); NSData * dData = [NSData dataWithBytes:(void*)&val length:size]; [p writeValue:valData forCharacteristic:dCHAR type:CBCharacteristicWriteWithResponse];
什麼我在上面做錯了,以及如何最好地轉換併發送一個int值的設備,允許所需的3種格式?