IOS'dagi asenkron va intervalgacha ma'lumotlarni qanday olish mumkin?

Platforma: TCP/IP protokollari bilan iOS.

Quyidagilar mening qabul qilingan ma'lumotlar oqimiga misoldir.

$ PLTIT, HV, 0.20, M, 0.00, D, -58.70, D, 0.30, M * 71
  $ PLTIT, HV, 1.90, M, 0.00, D, -8.30, D, 1.90, M * 41

Joriy xabarlar paneli shunday ko'rinadi:

$PLTIT,HV,1.90,M,0.00,D,-8.30,D,1.90,M*41

Biroq, buni qabul qilgan paytlar bo'lishi mumkin:

[time n+0]  $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
[time n+1]  $PLTIT,HV,1.90,M,
[time n+2]  0.00,D,-8.30,D,1.90
[time n+3]  ,M*41
[time n+4]  $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
[time n+5]  $PLTIT,HV,0.20,M,
[time n+6]  0.00,D,-58.70,D,0.30,M*71
[time n+7]  $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71
[time n+8]  $PLTIT,HV,0.20,M,0.00,D,-58.70,D,0.30,M*71

Natijada, o'rtada buzilgan xabarlar ramkasi.

IOS da qaysi ob'ektlar/konteynerlardan foydalanishim mumkin? Ayrim intervalgacha buyruq yoki uskunalar tufayli hech qanday bit yo'qotish uchun barcha ma'lumotlar baytlarini to'g'ri to'plashim mumkinmi?

0

1 javoblar

Har qanday turdagi oddiy tampon bu o'yinni bajarishi kerak. Agar sizning ma'lumotlaringiz har doim matn bo'lsa, siz faqat NSMutableString ga qo'sha olasiz.

Buni amalga oshirishingiz kerak bo'lgan yagona narsa ma'lumotlarni qo'shib, buferda $ belgisidan (mavjud yozuvlar orasidagi ajratuvchisiz deb hisoblaydigan) bir nechta nusxadan iboratligini tekshirish uchun chekni tanlang va agar keyingi sondan keyingi ma'lumotlarni to'planguniga qadar buferda qoldirib, keyingi har bir yozuvni qayta ishlaydi.

0
qo'shib qo'ydi
Bu ma'lumotlar har doim matnga to'g'ri keladi va chegaralarni belgilaydigan belgilar kvadratlar orasida '$' va '\ n' dir. NSMutableString etarli bo'ladimi yoki ehtimol CHCircularBufferQueue yaxshi bo'lishi mumkinmi?
qo'shib qo'ydi muallif Sebastian Dwornik, manba