реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Отследить нажатие клавиши.
Charly
сообщение Sep 24 2007, 13:47
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 13-09-07
Пользователь №: 30 515



Добрый день.
В программе, которую я пишу, необходимо создать переодическую функцию, отслеживающую нажатие пользователем клавиши.
пробовал вызывать getchar(); выскакивает окошко с приглашением ввести текст...
Есть ли возможность проверять нажималась клавиша во время работы программы или нет?
Go to the top of the page
 
+Quote Post
SamHaris
сообщение Sep 24 2007, 14:04
Сообщение #2





Группа: Новичок
Сообщений: 13
Регистрация: 11-08-05
Пользователь №: 7 546



Вообще-то есть функция 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;
}

Далее см хелп у мелкомягкого.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 24 2007, 14:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Charly @ Sep 24 2007, 16:47) *
Есть ли

Отличная тема для Digital Signal Processing sad.gif. Будьте внимательнее. Тему перенес.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Charly
сообщение Sep 24 2007, 14:09
Сообщение #4





Группа: Новичок
Сообщений: 11
Регистрация: 13-09-07
Пользователь №: 30 515



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

забыл написать операционка DSP/BIOS
это тема про прирыванию затянувшегося Digital Signal Processing по желанию пользователя!!
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Sep 25 2007, 07:44
Сообщение #5


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



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

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

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


--------------------
شامل
Go to the top of the page
 
+Quote Post
Charly
сообщение Sep 25 2007, 11:09
Сообщение #6





Группа: Новичок
Сообщений: 11
Регистрация: 13-09-07
Пользователь №: 30 515



Цитата(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 никуда не выводится...
Или что-то не то делаю?
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Sep 25 2007, 13:05
Сообщение #7


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(Charly @ Sep 25 2007, 15:09) *
char * buffer;
...
buffer ="test";
...

Вообще-то в Си так не принято делать. strcpy или т.п. надо юзать.


--------------------
شامل
Go to the top of the page
 
+Quote Post
Charly
сообщение Sep 25 2007, 14:49
Сообщение #8





Группа: Новичок
Сообщений: 11
Регистрация: 13-09-07
Пользователь №: 30 515



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

Так это не копирование а присвоение...
я попробовал с strcpy дела это не меняет...
строка никуда не выводится (по крайней мере я не нашел куда smile.gif )
help.gif
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Sep 25 2007, 15:59
Сообщение #9


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(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).


--------------------
شامل
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016