Перейти к содержанию

Работа с Com портом?


Рекомендуемые сообщения

Подскажите, пожайлуста, как правильно работать

с Com портом в Linux?

Я так понимаю, что работа с Com портом напоминает работу с файлами.

Попробывал сделать так:

int com;

if ((com=open("/dev/ttyS0",O_RDWR|O_NOCTTY))!=-1)

{

// com во время выполнения == 11

char s[5]="12345";

int i ;

i=write(com,s,5); // i во время выполнения == 5

close(com);

}

вроде бы всё нормально. На самом деле эти 5 байт не уходят

в порт. С чем это может быть связано? (Com порт исправен,

проверял). Кроме этого пытался в терминале выполнить

команду:# echo test>/dev/ttyS0 также безрезультатно,

байты не уходят.

У меня установлен Linux RedHard (устанавливал с

дистрибутива от июня 2007) может какие-нибудь настройки

надо сделать в самой ОС?

Ссылка на комментарий
Поделиться на другие сайты

VIV писал(а) Tue, 11 September 2007 18:20

Подскажите, пожайлуста, как правильно работать

с Com портом в Linux?

Я так понимаю, что работа с Com портом напоминает работу с файлами.

Попробывал сделать так:

int com;

if ((com=open("/dev/ttyS0",O_RDWR|O_NOCTTY))!=-1)

{

// com во время выполнения == 11

char s[5]="12345";

int i ;

i=write(com,s,5); // i во время выполнения == 5

close(com);

}

вроде бы всё нормально. На самом деле эти 5 байт не уходят

в порт. С чем это может быть связано? (Com порт исправен,

проверял). Кроме этого пытался в терминале выполнить

команду:# echo test>/dev/ttyS0 также безрезультатно,

байты не уходят.

У меня установлен Linux RedHard (устанавливал с

дистрибутива от июня 2007) может какие-нибудь настройки

надо сделать в самой ОС?

Надо порт настроить для начала.

Ссылка на комментарий
Поделиться на другие сайты

А как? Что я должен для этого сделать?

Предположительно: у меня должен существовать файл

типа etc/rc.d/rc.serial и в нем строчка

setserial /dev/ttyS0 irq5. Но в той сборке Linux я не нашел setserial.

Настройка с помощью структуры termios для меня не важна.

Так как мне важно, чтобы уходил хоть какой-то сигнал.

Предположительно:

при загрузке, Linux открывает порт,

при завершении, Linux закывает порт.

Вывод сделал на основании фиксации сигналов с порта

в момент загрузки и завершения работы с Linux. Кроме этого

процессе работы ОС Linux, не получается напрямую

(через 0x3f8 работать с портом).

Ссылка на комментарий
Поделиться на другие сайты

VIV писал(а) Wed, 12 September 2007 10:22

А как? Что я должен для этого сделать?

Предположительно: у меня должен существовать файл

типа etc/rc.d/rc.serial и в нем строчка

setserial /dev/ttyS0 irq5. Но в той сборке Linux я не нашел setserial.

Настройка с помощью структуры termios для меня не важна.

Так как мне важно, чтобы уходил хоть какой-то сигнал.

Предположительно:

при загрузке, Linux открывает порт,

при завершении, Linux закывает порт.

Вывод сделал на основании фиксации сигналов с порта

в момент загрузки и завершения работы с Linux. Кроме этого

процессе работы ОС Linux, не получается напрямую

(через 0x3f8 работать с портом).

1. Как Вы определили, что байты в порт не уходят?

2. Как Вы настроили Baud Rate, чётность и проч...?

Ссылка на комментарий
Поделиться на другие сайты

У меня к ком. порту подцепленно спец. устройство, которое

принимает электрические сигналы ( 2, 5 или 3,5)

(поэтому скорость не важна)

Если говорить о том как бы я стал устанавливать скорость,

то написал (после открытия порта) нечто подобное:

int com;

struct termios newtermios,oldtermios;

....

tcgetattr(com,&oldtermios);

newtermios.c_flag=B9600|CS8|CREAD|CLOCAL|CRTSCTS;

newtermios.c_iflag=IGNPAR|ICRNL;

tcsetattr(com,&newtermios);

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...