Я пытаюсь перенести программу на Linux из Windows.
Проблема в том, что я не могу установить скорость передачи успешно (код для этого можно увидеть ниже)
Я настроил осциллограф на кабеле, подключенном к последовательному порту. В версии для Windows я вижу шаблон на 25 микросекундах, но в версии для Linux я вижу тот же шаблон на 250 микросекундах, сообщая мне, что информация верна, но отправляет ее медленно.
Я попытался установить скорость передачи в несколько различных значений, но я все еще получаю то же самое на осциллографе.
То, что я ищу, - это программа, которая настроит последовательный порт на 115200 бод, отметит четность, 1 стоп-бит и 8 бит данных и отправит что-то через линию, чтобы я мог видеть это на гипертерминале. Программа на с ++ была бы фантастической, потому что тогда я мог бы сравнить ее с моей, если она работает.
Я думаю, что что-то поддерживает скорость передачи, установленную на определенное значение, и если я получил программу от кого-то другого, которая, как подтверждается, работает, я мог бы сказать, что это вне установки Linux. Я пробовал на разных компьютерах, но все они настроены одинаково нашим системным администратором
Я пробовал это в течение 3 недель и сделал буквально сотни обучающих программ по последовательному порту и, будучи нубом Linux, я потерян в том, что делать сейчас.
idComDev[i] = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (idComDev[i] == -1)
{
perror("open_port: Unable to open /dev/ttyS0 - ");
ret = false;
}
else
{
fcntl(idComDev[i], F_SETFL, 0);
struct termios options;
tcgetattr(idComDev[i], &options); // get current settings
cfsetspeed(&options, B9600); // set baud rate
test = tcsetattr(idComDev[i], TCSANOW, &options);// save the settings
options.c_cflag &= ~CSIZE; // Mask the character size bits
options.c_cflag |= CS8; // 8 bit data
options.c_cflag &= ~PARENB; // set parity to no
options.c_cflag &= ~PARODD; // set parity to no
options.c_cflag |= CSTOPB; //set one stop bit
options.c_cflag |= (CLOCAL | CREAD);
options.c_oflag &= ~OPOST;
options.c_lflag &= 0;
options.c_iflag &= 0; //disable software flow controll
options.c_oflag &= 0;
tcsetattr(idComDev[i], TCSANOW, &options);// save the settings
printw("Seg %d = COM%hd",i,CommNo[i]);
if(test!= -1)
printw("test success");