Linux c串列埠通訊nread 0,求分析

時間 2021-10-14 21:22:44

1樓:匿名使用者

經過驗證,串列埠應該沒有資料讀上來,所以導致讀到的資料的數量是0,列印出hello是因為buff本身初始化就是hello,所以顯示是hello

#include

#include

#include

#include

#include

#include

#include

int main()

printf("fd = %d\n",fd);

nread = read(fd,buff,8);

//while( (i = read(fd,buff,512) ) > 0 )

// =i ;

close(fd);

return 0;}

2樓:匿名使用者

串列埠沒有接收到資料,接收緩衝區裡面就沒有資料,nread肯定就是0啊,你得用個除錯軟體傳送一組資料,然後再接收.

另外參考一下我的串列埠初始化函式,這個是肯定沒問題的:

int initcomm(char *devname)

new_termio.c_cflag = b115200 | cs8 | clocal | cread;

new_termio.c_iflag = ignpar; //ingorn parity check error

new_termio.c_oflag = 0;

new_termio.c_lflag = 0;

new_termio.c_cc[vtime] = 0;

new_termio.c_cc[vmin] = 0;

tcflush (fd, tciflush);

設定流控制,波濤率,校驗位

return fd;

}fd = initcomm("/dev/ttys0");

buf[nread]='\0' 什麼意思

3樓:董俊錕

'\0' 是字串結束標誌,前面是你定義的字元陣列吧

4樓:

等同於buf[nread]=0;

ascii碼儲存中的結束碼。

5樓:匿名使用者

buf[0]='\0' 就是給buf的第一個字元賦值'\0'

buf[nread]='\0' 就是給buf的第nread個字元賦值'\0'

什麼是串列埠通訊啊,什麼是串列埠通訊?

串列埠是計算機上一種非常通用裝置通訊的協議 不要與通用序列匯流排universal serial bus或者usb混淆 大多數計算機包含兩個基於rs232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議 很多gpib相容的裝置也帶有rs 232口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資...

串列埠通訊與並口通訊有啥區別,網路通訊應該屬於串列埠通訊還是並口通訊?

暴風錘 串列埠按位 bit 傳送和接收位元組。儘管比按位元組 byte 的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。比如ieee488定義並行通行狀態時,規定裝置線總長不得超過20米,並且任意兩個裝置間的長度不得超過2米 而對於串列埠而言...

VC 串列埠通訊中怎麼將串列埠收到的資料儲存到檔案中

在oncomm事件中作如下處理 long cscrdlg oncommunicate wparam ch,lparam port catch cfileexception,e end catch if error 0 messagebox 檔案已儲存!bj2948a提示 mb iconinforma...