2014-12-28 8 views
1

Привет, я пишу небольшой код для управления линиями DTR и RTS USB для последовательного порта. Преобразователь чипа FT232 на Linux (Mint Linux 13 Maya, x86).Неисправность в настройке контактов DTR RTS последовательного порта с использованием ioctl() Вызов в linux

Я успешно написал код для чтения и записи данных на чип FT232 с использованием терминалов. Теперь я хочу контролировать линии DTR и RTS, поэтому я использую вызов ioctl() для установки и очистки линий DTR и RTS.

здесь код

#include <stdio.h> 
    #include <fcntl.h>  /* File Control Definitions   */ 
    #include <termios.h>  /* POSIX Terminal Control Definitions */ 
    #include <unistd.h>  /* UNIX Standard Definitions   */ 
    #include <errno.h>  /* ERROR Number Definitions   */ 
    #include <sys/ioctl.h> /* ioctl()       */ 

    main(void) 
    { 
     int fd;  /*File Descriptor*/ 
     int status; 

     fd = open("/dev/ttyUSB0",O_RDWR | O_NOCTTY); //Opening the serial port 

     ioctl(fd,TIOCMGET,&status); /* GET the State of MODEM bits in Status */ 
     status |= TIOCM_RTS;  // Set the RTS pin 
     ioctl(fd, TIOCMSET, status); 

     getchar(); //To view the change in status pins before closing the port 

     close(fd); 
    } 

код успешно компилируется на GCC без errors.I подключили два светодиода на RTS и DTR линий FT232.Since РТС и DTR линии перевернутой, установка RTS будет выключите светодиод. Светодиод подключен к RTS и DTR.

На выполнение кода с помощью "Суда ./serial"

как RTS и DTR светодиоды погаснут, а не только RTS (как кодированный статус | = TIOCM_RTS;) и включите после GetChar().

Почему DTR идет LOW вместе с линией RTS? также Я не могу изменить другие модемные линии, такие как RI, DCD, DCD, DTR и т. Д., Используя TIOCM_CD, TIOCM_DTR и т. Д.?

ответ

1

Для TIOCMSET команды отправить последний параметр в качестве справки:

ioctl(fd, TIOCMSET, &status);