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

時間 2021-10-14 21:23:07

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口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資...

51串列埠通訊程式求大神

做而論道 第一 應該先設定方式,之後再 ren 1。其原因不難理解。第二 為什麼我傳送10,微控制器傳送給我的是 你好1 而不是 你好10 傳送20,只能接受到2.每當微控制器收到一位元組,你就關閉了串列埠中斷,而進行傳送 你好1 1 後面的 0,因為你關閉中斷,耽誤了接收,遺失了。收一次x,就傳送...

串列埠與微控制器通訊時好時壞,微控制器模擬串列埠通訊有什麼利弊??

首先試試串列埠好使不。拿pc機開啟個串列埠除錯軟體,將rxd與txd拿個導線短接一下。之後用軟體傳送隨便一些資料,由於txd與rxd是短接的,那麼軟體接收到的資料應該是和發射資料一致,如果不一致,線壞了,如果徹底就收不到,線懷了,多試幾次,時好時壞,線接觸不良。如果一切正常,那麼就得看微控制器的串列...