2012-06-19 24 views
0

我知道這可能以前已經問過,但對於我的問題我找不到解決方案。 我需要一個函數receive(int recv),我在一個循環中調用並接收一個字節。 我已經建立了我的串行端口(termios.h),並且能夠使用read() 接收但是我只能接收端口的整個緩衝區。所以read(fd, recv, 255);總是返回多個字節。 我需要的是一個緩衝區,其中我接收字節,當調用receive(int recv)時,它始終給出此緩衝區的第一個字節。 這樣的緩衝區是怎麼樣的?我很樂意欣賞這一次的任何幫助! 謝謝!從Linux的串行端口接收一個字節

+0

從你的代碼,我/想/你想讀取串口一個整數 - 這是正確的?目前,它看起來像是用'int recv'作爲第二個參數調用'ssize_t read(int fd,void * buf,size_t count)',這是非常錯誤的。 –

回答

2

這應該是足夠了:

// ... 
char buf[1]; 
read(fd, &buf, 1); 
// ... 
+0

我在想那個,但是再一次,如果緩衝區只有一個字節的大小,它不會輕易溢出嗎? – tzippy

+0

否。如果有1個字節可用,該功能寫入1個字節,否則爲0.就是這樣。只有當它比傳遞給'read()'的值小時它纔會溢出,但是如果不這樣做,什麼都不會發生。 – glglgl