帮我看下这个linux的串口读写程序,可以写出去,但是读不到

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sy... #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <string.h>

#define FALSE -1
#define TRUE 0
int main(){
//open port
int fd = open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY);
if(FALSE == fd){
perror("cant't open port\n");
exit(1);
}
if(fcntl(fd, F_SETFL, 0) < 0){
printf("fcntl faild\n");
exit(1);
}else{
printf("fcntl=%d\n", fcntl(fd, F_SETFL, 0));
}
if(0 == isatty(STDIN_FILENO)){
printf("standard input is not a terminal device\n");
exit(1);
}else{
printf("isatty success\n");
}

//set port
struct termios options;
if(tcgetattr(fd, &options) != 0){
perror("SetupSerial 1");
exit(1);
}
cfsetispeed(&options, 9600);
cfsetospeed(&options, 9600);
options.c_cflag |= CLOCAL;
options.c_cflag |= CREAD;
options.c_cflag |= CRTSCTS;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag |= PARENB;
options.c_cflag &= ~PARODD;
options.c_iflag |= INPCK;
options.c_cflag &= ~CSTOPB;
tcsetattr(fd, TCSANOW, &options);

//send data
int sendLen = write(fd, "hello", 5);
printf("send: %d\n", sendLen);
tcflush(fd, TCOFLUSH);

//read data
char readC[5];
read(fd, readC, 5);
printf("%s\n", readC);
close(fd);
}
展开
 我来答
wenqing8585
2015-07-20 · TA获得超过8252个赞
知道大有可为答主
回答量:8078
采纳率:70%
帮助的人:3860万
展开全部
在设置参数的地方加上接收数据的超时时间和最小字节数的设置,枯枝轮没信再搭拆试试:
options.c_cc[VTIME] = 0;
options.c_cc[VMIN] = 1;
更多追问追答
追问
还是一直阻塞在读那,一直读不到
追答
你给自己的linux环境发送数据是一直在周期地发送的么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式