أرسل بيانات hexString من خلال UDP

0

أنا أقوم بتطوير تطبيق iOS. لقد واجهت مشكلة.

أحاول إرسال بيانات hexString من خلال UDP إلى كاميرا wifi ، والتي ستستجيب أثناء الحصول على البيانات الصحيحة. يظهر رمز بلدي أدناه. ومع ذلك ، لا يمكنني الحصول على أي رد من كاميرا wifi الخاصة بي. (أستخدم https://github.com/robbiehanson/CocoaAsyncSocket )

NSString *sendMsg = @"6745000005000000000000000000000000000000000000001400000067450000140000000A"; 
NSData *bytes = [sendMsg dataUsingEncoding:NSUTF16BigEndianStringEncoding]; 
NSString *host = @"255.255.255.255"; 
[self.udpSocket sendData:bytes toHost:host port:ListenPort withTimeout:-1 tag:1];

بالإضافة إلى ذلك ، حاولت إرسال بياناتي من خلال PacketSender (يمكن للتطبيق إرسال بيانات UDP) ، والتي لديها استجابة صحيحة.

أدخل وصف الصورة هنا

1 إجابة

0

وقد تم حل المشكلة. كانت المشكلة أثناء تحويل NSString إلى NSData. إنها سلسلة سداسية عشرية تحتاج إلى تحويلها إلى NSData. أدناه هو رمز بلدي الذي يعمل.

- (NSData *)dataFromHexString:(NSString *)hexString {
    NSAssert((hexString.length > 0) && (hexString.length % 2 == 0), @"hexString.length mod 2 != 0");
    NSMutableData *data = [[NSMutableData alloc] init];
    for (NSUInteger i=0; i<hexString.length; i+=2) {
        NSRange tempRange = NSMakeRange(i, 2);
        NSString *tempStr = [hexString substringWithRange:tempRange];
        NSScanner *scanner = [NSScanner scannerWithString:tempStr];
        unsigned int tempIntValue;
        [scanner scanHexInt:&tempIntValue];
        [data appendBytes:&tempIntValue length:1];
    }

return data;}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام