Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отследить нажатие клавиши.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Charly
Добрый день.
В программе, которую я пишу, необходимо создать переодическую функцию, отслеживающую нажатие пользователем клавиши.
пробовал вызывать getchar(); выскакивает окошко с приглашением ввести текст...
Есть ли возможность проверять нажималась клавиша во время работы программы или нет?
SamHaris
Вообще-то есть функция kbhit() у меломякого.
А в Линуксе концепция оси построена по другому.
Но в принципи можно ее самому написать, ели очень надо.
Например так:
Код
int kbhit () {
    fd_set rd;
    struct timeval tv;

    tv.tv_sec = 0;
    tv.tv_usec = 0;
    FD_ZERO (&rd);
    FD_SET (0, &rd);
    select (FD_SETSIZE, &rd, NULL, NULL,&tv);
    if (FD_ISSET (0, &rd)) return 1;
    return 0;
}

или так:
Код
int kbhit () {
    int count = 0;
    if (ioctl (0, FIONREAD, &count) == 0)
        return count;
    return 0;
}

Далее см хелп у мелкомягкого.
zltigo
Цитата(Charly @ Sep 24 2007, 16:47) *
Есть ли

Отличная тема для Digital Signal Processing sad.gif. Будьте внимательнее. Тему перенес.
Charly
Цитата(zltigo @ Sep 24 2007, 17:04) *
Отличная тема для Digital Signal Processing sad.gif. Будьте внимательнее. Тему перенес.

забыл написать операционка DSP/BIOS
это тема про прирыванию затянувшегося Digital Signal Processing по желанию пользователя!!
Edmundo
Цитата(Charly @ Sep 24 2007, 18:09) *
забыл написать операционка DSP/BIOS
это тема про прирыванию затянувшегося Digital Signal Processing по желанию пользователя!!

Вообще не очень понял, для чего это, ведь программу можно остановить по кнопке Halt.
Насчет считывания клавиш не знаю, но можно сделать кнопочку с помощью GEL-файла, которая бы могла модифицировать флаг необходимости выхода из цикла. А может в GEL есть и обработка событий от клавиатуры, не знаю.
Ну и самый крайний случай -- написать свой plug-in для CCS. Там уж будет полный контроль над всем. Но это на любителя, ИМХО игра не стоит свеч.

P.S. Moderator'у: тему надо бы обратно в DSP smile.gif
Charly
Цитата(Edmundo @ Sep 25 2007, 10:44) *
Вообще не очень понял, для чего это, ведь программу можно остановить по кнопке Halt.
Насчет считывания клавиш не знаю, но можно сделать кнопочку с помощью GEL-файла, которая бы могла модифицировать флаг необходимости выхода из цикла. А может в GEL есть и обработка событий от клавиатуры, не знаю.
Ну и самый крайний случай -- написать свой plug-in для CCS. Там уж будет полный контроль над всем. Но это на любителя, ИМХО игра не стоит свеч.

P.S. Moderator'у: тему надо бы обратно в DSP smile.gif


Решили писать/читать при помощи RTDX
написал тестовый код
#include <rtdx.h>
.
.
.
char * buffer;
RTDX_CreateOutputChannel( ochan );
RTDX_enableOutput(&ochan);
buffer ="test";
RTDX_write(&ochan,buffer , sizeof(buffer));
В CSS этот самый test никуда не выводится...
Или что-то не то делаю?
Edmundo
Цитата(Charly @ Sep 25 2007, 15:09) *
char * buffer;
...
buffer ="test";
...

Вообще-то в Си так не принято делать. strcpy или т.п. надо юзать.
Charly
Цитата(Edmundo @ Sep 25 2007, 16:05) *
Вообще-то в Си так не принято делать. strcpy или т.п. надо юзать.

Так это не копирование а присвоение...
я попробовал с strcpy дела это не меняет...
строка никуда не выводится (по крайней мере я не нашел куда smile.gif )
help.gif
Edmundo
Цитата(Charly @ Sep 25 2007, 18:49) *
Так это не копирование а присвоение...
я попробовал с strcpy дела это не меняет...
строка никуда не выводится (по крайней мере я не нашел куда smile.gif )
help.gif

Я понимаю, что присвоение, но можете из-за этого проблем поиметь, если не очень четко предсталяете, как и что происходит.
А RTDX-клиента в чем писали? И есть ли он вообще? RTDX предполагает написание клиента в какой-нибудь сторонней среде разработки (вплоть до Visual Basic'а в Excel'е).

[+]:
Только сейчас заметил...
Цитата
RTDX_write(&ochan,buffer , sizeof(buffer));

strlen надо использовать (а вы говорите, "присвоение"... smile.gif).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.