Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Аналог Sleep в Linux

6.4K
23 июня 2005 года
Trifon
18 / / 09.06.2004
Какой хвункцией можно приостановить выполнение программы на 10 милисекунд (чтоб она успела отрисовать свое окно?).

int c=0x55;
while(s!=0xA0)
{
int h=comm_tx(com,&c,1);
int u=comm_rx(com,(void*)&s,1);
//Вот тут бы задержечку
fprintf(stderr,"Answer form port - %d, bytes sent - %d, bytes read - %d\n",s,h,u);
}
2
23 июня 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Trifon
Какой хвункцией можно приостановить выполнение программы на 10 милисекунд (чтоб она успела отрисовать свое окно?).

int c=0x55;
while(s!=0xA0)
{
int h=comm_tx(com,&c,1);
int u=comm_rx(com,(void*)&s,1);
//Вот тут бы задержечку
fprintf(stderr,"Answer form port - %d, bytes sent - %d, bytes read - %d\n",s,h,u);
}



man 3 usleep

6.4K
24 июня 2005 года
Trifon
18 / / 09.06.2004
Цитата:
Originally posted by squirL
man 3 usleep


Пасибо!!!
а я sleep смотрел она на секунду минимум может

2
24 июня 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Trifon
Пасибо!!!
а я sleep смотрел она на секунду минимум может


маленький секрет. если бы вы набрали

man -k sleep

получили бы список мануаловЮ в которых упоминается слово sleep. в т. ч. и нужный вам мануал. так что учите никсы ;)

6.4K
24 июня 2005 года
Trifon
18 / / 09.06.2004
Цитата:
Originally posted by squirL
маленький секрет. если бы вы набрали

man -k sleep

получили бы список мануаловЮ в которых упоминается слово sleep. в т. ч. и нужный вам мануал. так что учите никсы ;)


Я получил Not Apportiate, но учить буду ;)
Еще вопрос - у меня прога виснет на read, тоесть таймауты и скорость порта устанавливаются, write() работает, а read() виснет.
chmod a+rw /dev/ttyS0 делал не помогает. Там более что другие проги без chmod работают.

2
24 июня 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Trifon
Я получил Not Apportiate, но учить буду ;)
Еще вопрос - у меня прога виснет на read, тоесть таймауты и скорость порта устанавливаются, write() работает, а read() виснет.
chmod a+rw /dev/ttyS0 делал не помогает. Там более что другие проги без chmod работают.


chmod не трогайте. для работы с последовательным портом используйте ioctl
пример из жизни - проверяем наличие сигнала Data Terminal Ready (DTR)

Код:
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>

main() {
  int fd, serial;
  fd = open("/dev/ttyS0", O_RDONLY);
  ioctl(fd, TIOCMGET, &serial);
  if (serial & TIOCM_DTR)
     puts("TIOCM_DTR is not set");
  else
     puts("TIOCM_DTR is set");
  close(fd);
}


кстати, а какая у вас ОС? :) может читать вам надо с /dev/cuaXX?
6.4K
24 июня 2005 года
Trifon
18 / / 09.06.2004
Цитата:
Originally posted by squirL
chmod не трогайте. для работы с последовательным портом используйте ioctl
пример из жизни - проверяем наличие сигнала Data Terminal Ready (DTR)

Код:
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>

main() {
  int fd, serial;
  fd = open("/dev/ttyS0", O_RDONLY);
  ioctl(fd, TIOCMGET, &serial);
  if (serial & TIOCM_DTR)
     puts("TIOCM_DTR is not set");
  else
     puts("TIOCM_DTR is set");
  close(fd);
}


кстати, а какая у вас ОС? :) может читать вам надо с /dev/cuaXX?


:)
Linux 2.6.9

Я не писал модуль для сом с нуля, а взял из реально работающей программы (siefs). А c помощью ioctl я смогу послать в порт произвольшые данные любого размера, прочитать оттуда тоже любые данные любого размера? TЕсли да, то как?
В man ioctl написано смотреть в sys/ioctl.h , а там нет ничего кроме прототипа ioctl.

PS Раньше ЭТОТ ЖЕ КОД работал а сегодня утром перестал. Шайтан?

6.4K
24 июня 2005 года
Trifon
18 / / 09.06.2004
Цитата:
Originally posted by Trifon
:)
Linux 2.6.9

Я не писал модуль для сом с нуля, а взял из реально работающей программы (siefs). А c помощью ioctl я смогу послать в порт произвольшые данные любого размера, прочитать оттуда тоже любые данные любого размера? TЕсли да, то как?
В man ioctl написано смотреть в sys/ioctl.h , а там нет ничего кроме прототипа ioctl.

PS Раньше ЭТОТ ЖЕ КОД работал а сегодня утром перестал. Шайтан?


Кстати в Вашем примере open возвращает -1...

243
24 июня 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Trifon
Кстати в Вашем примере open возвращает -1...


И что? В случае неудачи open возвращает 0.

6.4K
25 июня 2005 года
Trifon
18 / / 09.06.2004
Цитата:
Originally posted by pacific_7
И что? В случае неудачи open возвращает 0.



man 2 open

Цитата:
open и creat возвращают новый описатель файла или -1 в случае ошибки ( вэтом случае значение переменной errno устанавливается должным образом).

2
25 июня 2005 года
squirL
5.6K / / 13.08.2003
а предварительную настройку параметров порта делали? и, кстати, почему вы уверены, что у вас чтение не работает? может проблемы с записью?
243
25 июня 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Trifon
man 2 open


Вы правы в этом - я чего-то протупил.
Зато в примере возвращается значение !=-1. Это у вас в системе что-то не срослось видимо.

2
25 июня 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by pacific_7
Вы правы в этом - я чего-то протупил.
Зато в примере возвращается значение !=-1. Это у вас в системе что-то не срослось видимо.


под рутом надо программу запускать, или с suid

243
25 июня 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by squirL
под рутом надо программу запускать, или с suid


Гм... У меня и не под рутом без suid нормально работает.

6.4K
25 июня 2005 года
Trifon
18 / / 09.06.2004
Цитата:
Originally posted by pacific_7
Гм... У меня и не под рутом без suid нормально работает.


write() выполняется и возвращает правильно число записанных байтов, а read() виснет.
Я думаю может в сторону select() копнуть? Кстати я так и не нашел как с ioctl() читать\писать порт. Ктонибудь знает?

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог