@Cezary
Wg tego opisu
http://www.easysw.com/~mike/serial/serial.html
sprawdzenie kontroli przepływu danych jest realizowane poprzez
options.c_cflag |= CNEW_RTSCTS; /* Also called CRTSCTS */
a wyłączenie poprzez
options.c_cflag &= ~CNEW_RTSCTS;
Narazie jestem w trakcie kompilacji innych źródeł i nie mam jak tego sprawdzić ale pytanie czy stan wysoki lini DTR zpowoduje flagi CNEW_RTSCTS na 1 czy 0 ?
Trochę poszukałem i wydaje mi się że znalazłem
http://www.linuxjournal.com/article/6908
int setDTR(unsigned short level)
{
int status;
if (ioctl(fd, TIOCMGET, &status) == -1) {
perror("setDTR(): TIOCMGET");
return 0;
}
if (level) status |= TIOCM_DTR;
else status &= ~TIOCM_DTR;
if (ioctl(fd, TIOCMSET, &status) == -1) {
perror("setDTR: TIOCMSET");
return 0;
}
return 1;
}
Trzeba DTR'a ustawić na 1 żeby zasilić pin do DS2480
czyli z wcześniejszego linka
http://tech.akom.net/archives/60-Fixing … 32-24.html
ta zmiana moim zdaniem na pewno spowoduje uaktywnienie stanu wysokiego na sygnał DTR
+ t.c_cflag &= ~(CSIZE|HUPCL|PARENB);
+ t.c_cflag |= (CRTSCTS|CLOCAL|CS8|CREAD);