arduino在接收不到串口数据 通过串口调试助手 loop开始就写了 等待serial.available()>0则 sig=

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arduino在接收不到串口数据 通过串口调试助手 loop开始就写了 等待serial.available()>0则 sig=相关的知识,希望对你有一定的参考价值。

=serial.read() 不知道为什么一直读不到通过串口监控谢谢各位大神了!

参考技术A 原谅我学艺不精,没发现问题在哪,不过你用了这么多if,可以换成switch和case组合,间接很多,说不定问题也可以解决

串口调试助手,可以接收到仪器发出来的数据。 自己编写的程序,无法接收到仪器发出来的数据。

下面是自己写的程序
//打开串口3
int i,length_data=0; int fd_port3; int status;
struct termios newtio,oldtio;
unsigned char buffer0[40];
fd_port3 = open("/dev/ttySAC3",O_RDWR);
//串口,波特率,数据位,奇偶校验,停止位
//保存测试现有串口参数设置,在这里如果串口号等出错,会有相关的出错信息
tcgetattr(fd,&oldtio) ;
bzero( &newtio, sizeof( newtio ) );
//通过位掩码的方式激活本地连接和接受使能选项
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
//数据位的设置为8
newtio.c_cflag |= CS8;
//奇偶校验的设置为无校验
newtio.c_cflag &= ~PARENB;
newtio.c_iflag &= ~INPCK;
//波特率的设置为9600
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
//停止位的设置为1
newtio.c_cflag &= ~CSTOPB;
//设置等待时间和最小接收字符
newtio.c_cc[VTIME] = 10;
newtio.c_cc[VMIN] = 0;
//处理为接收字符
tcflush(fd,TCIFLUSH);
// 设置输入输出为原始模式(Raw Mode)
newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /*Input*/
newtio.c_oflag &= ~OPOST; /*Output*/
//激活新配置
tcsetattr(fd,TCSANOW,&newtio);
//拉高DTR
ioctl(fd,TIOCMGET,&status);
status |= TIOCM_DTR;
ioctl(fd,TIOCMSET,&status);
memset(buffer0,0,sizeof(buffer0));
while(1)

//接收串口3的数据
length_data = read(fd_port3,buffer0,sizeof(buffer0)); //数据的发送使用write(fd_port,buf,1); buf为要发送的字符串
printf("length_data=%d\n",length_data);
printf("buffer is \n");
if(length_data != 0)

for(i=0;i<40;i++)

printf(" %02hhx ",buffer0[i]);

printf("\n");


请教下各位大神,是不是有些参数,串口调试助手设置了而我没设置。该怎么改才能正确收到仪器发来的数据。

参考技术A 1、你说用串口助手可以接收数据,你的程序不能:这个时候仪器和你的开发板如何接线?
2、你的串口接线是2,3,5三根吗?
3、到Modem Line状态里面设置DTR和RTS,选择相应的设置属性(Line CTS State、Line DCD State、Line DSR
State、Line DTR State、Line RI State或Line RTS State)。
参考技术B 那就是不对呗
需要给你完成一份吗追问

不是程序的问题,是仪器端的串口接了DTR信号线,而我开发板这段的串口没有接DTR信号线到处理器,导致我无法给仪器提供一个DTR信号。您有什么办法能解决吗?

追答

好吧 帮顶吧

以上是关于arduino在接收不到串口数据 通过串口调试助手 loop开始就写了 等待serial.available()>0则 sig=的主要内容,如果未能解决你的问题,请参考以下文章

串口调试助手,可以接收到仪器发出来的数据。 自己编写的程序,无法接收到仪器发出来的数据。

stc单片机串口调试的小程序,但是在串口调试助手里,显示接收不到数据,希望大虾们帮忙解决下,下面是程序

怎么用串口助手发送数组?

串口调试助手都能实现啥功能啊

我用delphi和单片机进行串口通信,在串口调试助手里通过,但实际硬件通讯时,不能接收数据。

stm32发送数据给上位机用串口调试助手接收为什么只接收到第一个字节数据?