Весь код ниже работает. Мое устройство отвечает, C, 7 - это сброс. Когда я запускаю это во второй раз, он не отвечает. Если я вручную выключаю и включаю свое устройство, то снова запускаю этот скрипт, он работает. Но нет, если я нажму кнопку, чтобы запустить скрипт во второй раз.
RS232: 57600,8, N, 1
Есть идеи? Нужна ли еще информация для решения этой проблемы?
* Также, когда я получу эту работу, мне придется использовать функцию read (), чтобы получить ответы устройств. Кто-нибудь знает правильный формат, который мне нужно использовать, основываясь на приведенном ниже коде? Извините, я новичок в C ++ ... Я больше похож на PHP.
* Я также не знаю, правильно ли 1024, но, похоже, работает так, эх ...
#include <termios.h>
int fd;
struct termios options;
fd=open("/dev/tty.KeySerial1", O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fd, F_SETFL, 0);
tcgetattr(fd,&options);
options.c_ispeed=57600;
options.c_ospeed=57600;
options.c_cflag |= (CLOCAL | CREAD);
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
options.c_cflag &= ~CSTOPB;
options.c_lflag &= ~ECHO;
options.c_oflag &= ~ECHO;
options.c_oflag &= ~OPOST;
options.c_cflag |= CS8;
options.c_cflag |= CRTSCTS;
options.c_cc[VMIN] = 0;
options.c_cc[VTIME] =10;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&options);
write(fd, "C,7\r\n", 1024);
close(fd);