簡體   English   中英

使用C進行串口通訊

[英]Serial Port communication using C

我正在開發必須通過串行端口接收數據的軟件。 我以規范模式打開端口並將VEOL標志設置為0X78 (十六進制)。 我面臨的問題是,讀取每次在其間接收到字節值0X0A時都將退出。 有人可以幫我解決這個問題,我想讀阻塞直到我收到結束字節為0X78 這是我到目前為止編寫的代碼

struct termios tio;
char buf[255];

int fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY); 
if (fd <0) {
    perror(MODEMDEVICE);
    exit(−1); 
}

bzero(&tio, sizeof(tio));
tio.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
tio.c_iflag = IGNPAR;
tio.c_oflag = 0;
tio.c_lflag = 1;
tio.c_cc[VEOL] = 0X78;

tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&tio);


int read=read(fd,buf,255);

printf("Number of bytes read is %d\n",read);

先感謝您。

手冊頁指出:

VEOL(0,NUL)附加行尾字符(EOL)。 設置ICANON時可識別。

因此,它不會替換所有行尾字符,而只會添加一個,這意味着0xa仍處於活動狀態。

不要發送錯誤的數據,也不要在軟件中將其過濾掉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM