#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef struct termios ComSet;
int main()
{
int acm=-1;
acm=open("/dev/ttyACM0",O_RDWR | O_NOCTTY);
if(acm == -1)
{
cout<
exit(1);
}
else
{
cout<
ComSet SerialSettings;
tcgetattr(acm, &SerialSettings);
cfsetispeed(&SerialSettings,B9600);
cfsetospeed(&SerialSettings,B9600);
/* 8N1 Mode */
SerialSettings.c_cflag &= ~PARENB;
SerialSettings.c_cflag &= ~CSTOPB;
SerialSettings.c_cflag &= ~CSIZE;
SerialSettings.c_cflag |= CS8;
SerialSettings.c_cflag &= ~CRTSCTS;
SerialSettings.c_cflag |= CREAD | CLOCAL;
SerialSettings.c_iflag &= ~(IXON | IXOFF | IXANY);
SerialSettings.c_iflag &= ~(ICANON | ECHO | ECHOE | ISIG);
SerialSettings.c_oflag &= ~OPOST;
/* Setting Time outs */
SerialSettings.c_cc[VMIN] = 10; /* Read at least 10 characters */
SerialSettings.c_cc[VTIME] = 0; /* Wait indefinetly */
if((tcsetattr(acm,TCSANOW,&SerialSettings)) != 0)
{
cout<< " ERROR ! in Setting attributes"<
}
else
{
cout<< "=======ttyACM0 Setting====="<
cout<
cout<
char read_buffer[1024];
bzero(read_buffer,1024);
int read_bytes=0;
while(1)
{
tcflush(acm, TCIFLUSH);
read_bytes=read(acm,&read_buffer,1024);
if(read_bytes>0)
{
cout<
bzero(read_buffer,1024);
}
}
}
close(acm); /* Close the serial port */
}
return 0;
}
出于某种原因码丢失数据的不正常I M尝试,因为它是正常早些时候给我grabled输出 如Linux的串行端口:输入
罗世从一个Arduino阅读! Hello World! ello World! llo世界! llo世界!
一两件事,改变的是
存在端子输出一个额外的新生产线,这是用猫的/ dev/ttyAMC0
的Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
我想逐行读出,并因为它是由Arduino的发送给终端
+0
为清楚起见,请重新格式化问题中的文字。你得到了什么产出,然后你做了什么改变,结果是什么?你想要什么产出?标点符号也有帮助。否则,欢迎来到StackOverflow社区! –
+0
重新格式化你是什么意思? –
+0
我的意思是,很难理解你用英语问的问题。我知道你一次只想阅读一行,但是你现在是否得到类似“lo World!Hello World!ello”的输出结果?或者你是否得到了你想要的输出,但是每条线上都有一条额外的新线? –