crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


Сейчас на сайте человек: 115
(пользователей: 0, гостей: 115)
Yandex.com, Yahoo.com, Google.com

Перейти к месяцу

Апрель 2017

  ПВСЧПСВ
»
1
2
»
3
4
5
6
7
8
»
10
11
12
14
15
16
»
17
18
19
20
21
23
»
24
25
26
27
28
30

> Последние обсуждения
Vilgeforc @ 26.4.2017, 4:12
Просмотров: 263   Комментариев: 1
 
> обработка нажатия клавиш на клавиатуре
Автор demaker — 21.4.2017, 11:26 — 0 комментариев
Пытаюсь написать программу для обработки(по событию) нажатия кнопок на клавиатуре .
Хочу считывать события с /dev/input/event*. Вроде как там они должны быть.
Программу запускаю из под рута.
Но почему-то
 ret = read(*((int*)fd),&event,sizeof(struct input_event));

Возвращает -1.
Не могу понять почему :unknown:
Помогите разобраться.

Вот код проги.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <linux/input.h>

#define EV_PRESSED 1
#define WRITE_SIZE_BYTES 10

//INIT DEVICE KEYBOARD
int init_keyboard(int *fd)
{
    //file buffer keyboard
    char *keyboard = "/dev/input/event3";

    if(getuid() != 0){
        printf("You are not root! This may not work...\n");
        return -1;
    }

    if((*fd = open(keyboard,O_RDONLY)) == -1){
        printf("%s is not a valid keyboard. \n",keyboard);
        return -1;
    }

    fcntl(*fd,F_SETFL,FNDELAY);

    printf("file %s opened\n",keyboard);

    return 0;
}

//ROUTINE KEY_PRESSED
void* update_keyboard(void *fd)
{
    struct input_event event;
    int ret;
    char ch;

    while(1){
        usleep(100000);
        ret = read(*((int*)fd),&event,sizeof(struct input_event));
        printf("ret = %d\n",ret);
        if(event.type == EV_KEY){
            printf("EV_KEY\n");
            if(event.value == EV_PRESSED){
                if(event.code == KEY_ESC){
                    printf("!!!__PRESSED_ESC__!!!");
                }
            }
        }
    }
}

int main(void)
{
    int fd_keyboard,status;
    pthread_t thread_keyboard;


    if(!init_keyboard(&fd_keyboard)){
        //create thread read key of keyboard
        printf("create thread keyboard read\n");
        status = pthread_create(&thread_keyboard,NULL,update_keyboard,(void*)(&fd_keyboard));
        if(status != 0){
            printf("error create thread keyboard read\n");
            exit(-1);
        }

        if(!pthread_detach(thread_keyboard)){
            printf("detach thread read keyboard\n");
        }
    }
    
       while(1){
               //MAIN LOOP  
       }

    return 0;
}

Просмотров: 38, оставить комментарий   

> Размещение menuBar-a на верхнюю полосу программы - C++ Qt
Автор obess — 18.4.2017, 22:47 — 10 комментариев
Ну по названию темы ясно, что я хочу узнать как это сделать!(Буду благодарен)
Просмотров: 160, последний комментарий от Алексей1153   

> Подходящий runtime для GCC 6.1.0
Автор AD — 17.4.2017, 10:59 — 1 комментариев
Работа происходит в Red Hat Linux Enterprise 6.3. Если собираю ерундовый тестовый проект с версией компилятора gcc 4.7.2, то все нормально собирается. Если же я переключаюсь на компилятор 6.1.0, то проект собирается, но при запуске ругается на ABI...
./mtest: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./mtest)

Как настроить правильно runtime, при этом не имея прав root, так как работа происходит на сервере? Насколько я понимаю, то надо что-то сделать с LD_LIBRARY_PATH...


Сразу скажу, не являюсь настолько опытным именно в Linux, чтобы понимать такие детали. Буду благодарен за подсказки...
Просмотров: 299, последний комментарий от AD   

> #pragma pack и __attribute__
Автор Анна — 12.4.2017, 14:39 — 4 комментариев
Люди, помогите, пожалуйста!

Ко мне приходят заголовочные файлы с конструкцией (человек пишет под Linux)

typedef struct __attribute__ ((packed))
{
...
}MyStruct;


Мне надо обернуть этот код конструкцией #pargma pack, чтобы собирать и под Линуксом + gcc и под виндой + MSVS. Причём конструкцию для Линукса просили не трогать.
Читала описание __attribute__, искала примеры. Везде примеры без typedef.
Поскольку пишу под Qt, то выдумала следующий код
#ifdef Q_OS_WIN32
#pragma pack(push, 1)
typedef struct
#else
typedef struct __attribute__ ((packed))
#endif
{
...
} MyStruct;
#ifdef Q_OS_WIN32
#pragma pack(pop)
#endif


Вроде бы работает, но меня не покидает ощущение, что что-то я сделала не так, или можно было покрасивее.
В том числе смущает ещё и тот момент, что в описании __attribute__ сказано, что он ставится в конце, то есть после MyStruct, но раз с "той стороны" пришла такая конструкция, то хотелось бы просто понять, почему сделано так, а не по оприсанию.

Может кто-нибудь что-нибудь предложить?
И, вообще, хотелось бы посмотреть на варианты объявления структур с упаковкой и для "того" и для "другого", с typedef и без typedef.
Просмотров: 102, последний комментарий от Анна   

> Не удается скачать архив с документацией по Qt 4.8.x
Автор kliment — 11.4.2017, 11:38 — 2 комментариев
Приветствую всех
На странице http://doc.crossplatform.ru/qt/ пытаюсь скачать документацию по Qt 4.8.x (как впрочем и по иным версиям). Нажимаю "Скачать" и при переходе по ссылке http://doc.crossplatform.ru/qtrtt/Qt4.8/do...t_4.8_doc_ru.7z отображается
"Forbidden You don't have permission to access /qtrtt/Qt4.8/download_ru/Qt_4.8_doc_ru.7z on this server."
Хотелось бы иметь документацию в локальном хранилище. Как то раз столкнулся с тем, что ресурс не работает, а документация нужна. Одним словом, пользоваться web-версией доки - не предлагать :)
Собственно вопрос - где можно скачать документацию по 4.8.x? Кто нибудь может дать права на скачивание? Ну, или разместить на файло-обменнике.
Просмотров: 71, последний комментарий от kliment   

> QTcpSocket и runtime error
Автор AndreyUl — 9.4.2017, 0:19 — 1 комментариев
Клиент-серверное приложение написано на QTcpSocket. Приложение на qt выступает в качестве сервера, клиент - python.
Общаются по 49121 порту, все работает нормально, но стоит во время общения клиент-серверного приложения подключить монитор по VDI, выключить монитор, или пошевелить мышкой, когда монитор заснул, сразу вылетает ошибка runtime error со стороны qt.

Я, честно сказать, совершенно не понимаю, какая взаимосвязь между подключением монитора по VDI, другими действиями и ошибкой со стороны qt.
Может кто разъяснит?

void MainWindow::ser_start()
{
    tcpServer = new QTcpServer(this);
    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser()));
    if (!tcpServer->listen(QHostAddress::Any, 49121) && server_status==0) {
        QMessageBox msgBox;
        msgBox.setText("Ошибка запуска сервера");
        msgBox.exec();
    } else {
        server_status=1;
    }
}

void MainWindow::newuser()
{
    if(server_status==1){
        ui->textBrowser->append("Оцениваю объем...");

        QTcpSocket* clientSocket=tcpServer->nextPendingConnection();
        connect(clientSocket,SIGNAL(readyRead()),this, SLOT(slotReadClient()));

        QTextStream os(clientSocket);
        os.setAutoDetectUnicode(true);
Просмотров: 202, последний комментарий от ViGOur   

> QGroupBox и setStyleSheet
Автор balbes — 5.4.2017, 11:07 — 3 комментариев
Всем привет.
В переопределенном классе QGroupBox, устанавливаю ему border и цвет:

setStyleSheet( "QGroupBox { border: 1px solid #8f8f91; }");:


Но почему-то появляется артефакт:
Прикрепленное изображение

Как видно по картинке во вложении, отсутвует часть линни в левом верхнем углу, около названия.
Как победить это?
Просмотров: 192, последний комментарий от Алексей1153   

RSS Текстовая версия Сейчас: 30.4.2017, 19:47