-1
我寫3200輛花車,像這樣:交流電插座多個調用來讀
float fft[3200] = {0};
get_fft_frame(dev, fft, 3200); // rf sensor
int written = write(sd, fft, sizeof(fft));
和閱讀則是這樣的:
float *fft = new float[3200];
int inRead = 0;
while (inRead < (3200*4)) {
//sleep(1);
int bytesRead = read(sd, fft + inRead, (3200*4) - inRead);
inRead += bytesRead;
}
所有的數據都寫在1個寫,但它需要兩個讀調用來獲取所有數據。第一次讀取返回11584,第二次返回1216.
問題是第二次讀取調用只讀取零。但是,如果我取消了睡眠呼叫的註釋,它會讀取所有正確的數據。
有沒有更好的方式來獲得沒有睡覺的數據?
您是否必須使用套接字,或者您是否可以使用其他形式的進程通信?管道可能是你正在尋找,因爲他們阻止。 –
您需要向我們展示套接字是如何設置的。也就是說,提供一個[mcve]。但對於初學者,您需要檢查'read'的返回值。 'read'可能會返回錯誤的'-1',在這種情況下,您不應該將它添加到'inRead'中。如果正確實施,多個'read'調用應該沒有問題。所以我們需要看*完整*代碼。 – kaylum
是的,我已經深入該項目的重新因素,如 – nicolas