настройка struct termios для последовательной связи с Arduino

в программном обеспечении на основе Unix, которое должно отправлять число от 0 до 179 в arduino, и arduino будет применять это число в качестве угла к серводвигателю, но я не знаю, какие параметры мне нужно изменить в структуре terminos, чтобы разрешить последовательное соединение коммуникации.

это код C ++:

#include <iostream>
#include <unistd.h>
#include <fstream>
#include <termios.h>

using namespace std;

int main()
{
unsigned int angle;
ofstream arduino;
struct termios ttable;

//cout<<"test-1";

arduino.open("/dev/tty.usbmodem3a21");

//cout<<"test-2";

if(!arduino)
{
cout<<"\n\nERR: could not open port\n\n";
}
else
{

if(tcgetattr(arduino,&ttable)<0)
{
cout<<"\n\nERR: could not get terminal options\n\n";
}
else
{

//there goes the terminal options setting for the output;

ttable.c_cflag = -hupcl //to prevent the reset of arduino

cfsetospeed(&ttable,9600);

if(tcsetattr(arduino,TCSANOW,&ttable)<0)
{
cout<<"\n\nERR: could not set new terminal options\n\n";
}
else
{
do
{
cout<<"\n\ninsert a number between 0 and 179";
cin>>angle;
arduino<<angle;
}while(angle<=179);

arduino.close();
}
}
}

}

и это Arduino’s:

#include <Servo.h>

Servo servo;
const int pinServo = 2;
unsigned int angle;

void setup()
{
Serial.begin(9600);
servo.attach(pinServo);

servo.write(0);

}

void loop()
{
if(Serial.available()>0)
{
angle = Serial.read();

if(angle <= 179)
{
servo.write(angle);
}
}
}

Итак, не могли бы вы сказать мне, что мне нужно изменить на «ttable»?

1

Решение

что-то подобное для termios — лучший вариант

options.c_cflag &= ~CRTSCTS;
options.c_cflag |= (CLOCAL | CREAD);
options.c_iflag |= (IGNPAR | IGNCR);
options.c_iflag &= ~(IXON | IXOFF | IXANY);
options.c_oflag &= ~OPOST;

options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &= ~PARENB;
options.c_iflag &= ~INPCK;
options.c_iflag &= ~(ICRNL|IGNCR);
options.c_cflag &= ~CSTOPB;
options.c_iflag |= INPCK;
options.c_cc[VTIME] = 0.001;  //  1s=10   0.1s=1 *
options.c_cc[VMIN] = 0;
0

Другие решения


По вопросам рекламы [email protected]