2
我正在開發我的第一款應用程序。這個應用程序是使用我從RedPark獲得的電纜與外部硬件進行通信。 他們提供了一個庫,它有幾個易於使用的功能。 現在我需要通過發送一個命令來請求一個帶有浮點數的9 * 9表格。iOS中的串行通信
一個名爲(void)readBytesAvailable的函數用於讀取,並且它是事件驅動的。 起初,我用的NSMutableArray把表:
for (int i=0; i<81; i++) {
NSNumber *number = [NSNumber numberWithFloat:rxLoopBuffer[i]];
[self.arrayRead addObject:number];
NSLog(@"%f",[number doubleValue]);
}
但是從控制檯,它只得到了11號,其餘70均爲0。 我想也許我需要首先獲得所有81個字節,然後將其推入陣,所以我做了一些變化:
NSMutableData *dataRead = [[NSMutableData alloc]initWithBytes:&rxLoopBuff length:81];
unsigned char buffer[100];
[dataRead getBytes:buffer];
if (!self.arrayRead) {
[self.arrayRead removeAllObjects];
}
for (int i=0; i<81; i++) {
NSNumber *number = [NSNumber numberWithFloat:buffer[i]];
[self.arrayRead addObject:number];
NSLog(@"%f",[number doubleValue]);
}
但它仍然得到11個數字。
任何人都可以給我一些建議嗎? 非常感謝。
更新: 通過調試,我看到read方法一次最多隻能讀取16個字節。我正在下載由同一家公司提供的新版本庫,以瞭解我可以做什麼。 的方法代碼的一部分:
- (void) readBytesAvailable:(UInt32)numBytes
{
int bytesRead;
BOOL res = NO;
// Read the data out
bytesRead = [rscMgr read:(rxLoopBuff+loopbackCount) length:numBytes];
rxCount += bytesRead;
//NSLog(@"Read %i, total=%i\n", bytesRead, rxCount);
if (this is the package I need)
{
//do something;
}
}
如何填寫'rxLoopBuff'?與串口通信的代碼在哪裏?該代碼只讀取'rxLoopBuff'並從緩衝區創建數字。 – robertvojta
你確定所有的數據都在同一個數據包中傳輸嗎?我的第一個假設是,或者所有的數據都沒有被傳輸。請嘗試將電纜連接到計算機,並使用簡單的終端程序查看是否得到相同的結果。 – Brian
@RobertVojta嗨,根據我的理解,rxLoopBuff充滿了自己。當有數據進入readBytesAvailable時會自動調用。但是你的評論確實提醒了我。所以我打印出每次收到的所有字節和計數,結果我每次只收到最多16個字節,有時候是3或7次。我把這些代碼放在我的文章中。 – user1491987