Я делаю некоторую работу, используя последовательный кабель RedPark для iOS. Это кабель, который обеспечивает последовательную связь между устройством iOS и другим устройством, таким как микроконтроллер.
В SDK RedPark есть метод, который считывает байты, доступные на последовательной линии. Этот метод вызывается каждый раз, когда кабель получает информацию.
(void)readDataBytes(UInt32 bytes) {
NSString *s = [[NSString alloc] initWith...bytes];
NSString *editedString = [self extractSubStringMethod:s];
[myArray addObject:editedString];
}
Микроконтроллер отправляет информацию в следующем формате
<msg>xxxxxxxxxxxxx</msg>
Я хочу иметь возможность извлекать x из сообщения (которое воспринимается как NSString). На данный момент я использую NSRange для извлечения всего после позиции 4 (первый x) и до конечного "‹ /msg>". Я не уверен, что это работает, и мне интересно, есть ли какие-либо другие идеи?
Наконец, у меня есть NSThread, который работает вместе с этим, у меня есть сообщения, добавляемые в NSMutableArray. Итак, я хочу, чтобы NSThread манипулировал/отображал информацию о сообщении, когда есть сообщение, полученное от кабеля. У меня есть что-то вроде следующего
//Thread method,
while([myArray count] > 0) //Don't believe this is neccesary but its in anyway
{
for(int i = 0; i < [myArray count]; i++){
NSString *string = [myArray objectAt(i)];
[self displayString:string];
[myArray removeObjectAt(i);
}
}
Я считаю, что это приводит к сбою вокруг вышеизложенного... [self displayString:string] просто устанавливает значение метки, что-то вроде
-(void)displayString(NSString *string) {
label.text = [string charAt(1)];
}
Приведенный выше код взят из памяти, так как я оставил свой Mac дома и нахожусь на работе. Любые предложения/помощь будут оценены