gpt4 book ai didi

objective-c - 使用Apple的外部附件API捕获数据流

转载 作者:行者123 更新时间:2023-12-01 19:15:31 24 4
gpt4 key购买 nike

嗨,我正在为iPAD开发应用程序,其中我必须捕获来自每秒发送512个值的外部设备的数据。我使用了苹果公司的外部配件API,并且代码如下:

- (void)stream:(NSStream*)theStream handleEvent:(NSStreamEvent)streamEvent  
{
switch (streamEvent)
{
case NSStreamEventNone: //Sent when open complete
//NSLog(@"NSStreamEventNone");
break;
case NSStreamEventOpenCompleted: //Sent when open complete

//NSLog(@"NStreamEventOpenCompleted: %@", theStream);
break ;

case NSStreamEventHasBytesAvailable:
{
//NSLog(@"NSStreamEventHasBytesAvailable");

uint8_t buffer[1024];
unsigned int len=0;

len=[(NSInputStream *)theStream read:buffer maxLength:1024];
if(len>0){

NSData* data=[NSData dataWithBytes:buffer length:len];

NSString *value = [[NSString alloc] initWithData:dataencoding:NSASCIIStringEncoding];

}
}
break;

case NSStreamEventHasSpaceAvailable:
os = theStream;
break;
case NSStreamEventErrorOccurred:
//NSLog(@"NSStreamEventErrorOccurred");
break;

case NSStreamEventEndEncountered:
////NSLog(@"NSStreamEventEndEncountered");
break;
default:
break;
}
}

我从中得到的是一些乱码,没有正确的编码。我也尝试过使用以下内容:
 NSString *value = [[NSString alloc] initWithData:dataencoding:NSUTF8StringEncoding];

但这总是返回null。
编辑:-当我NSLog时,我得到以下信息:-
 vªª€ÿù…ªª€ ÿûƒªª€ÿK3ªª€ÿ£Ûªª€ÿ˳ªª€ÿ}ªª€ÿ噪ª€

我应该在这里得到整数。有人可以告诉我我在做什么错。

最佳答案

您的NSLog似乎是一串扩展的ASCII字符。假设它们来自Apple扩展的Ascii字符集,那么您列出的代码段开头所表示的uint8_t(1字节)数据为:

€ÿù…ªª€...

用十进制表示的是:

172、196、26、248、26、192、172、214、172、34、172 ...

这是您的数据吗?这是一些测试输出的代码。

NSString *receivedString = @"€ÿù…ªª€"; // Change this to the string variable you were using with NSLog

for (int i=0; i<[receivedString length]; i++)
{
unsigned char asciiCode = [ receivedString characterAtIndex:i];
NSLog( @"Value at %d is %d", i, asciiCode );
}

关于objective-c - 使用Apple的外部附件API捕获数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13678908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com