• 6590阅读
  • 7回复

[提问]QT下如何对dev设备进行操作 [复制链接]

上一主题 下一主题
离线zjun726
 
只看楼主 倒序阅读 楼主  发表于: 2013-05-20
micro2440开发板,显示界面已经基本设计完成了,接下来要对底层的设备进行操作,比如PWM等。
在网上找了很多源代码,基本上了解是通过open等函数进行操作,但是这些代码都用到了一个称为Form的类,里面有open等函数,
我的界面是用QWidget设计的啊,好像没有open这些函数啊,我用的Qte4.6.3

我把别人的代码用我的QtCreate编译,也通不过。

哪位大侠知道是怎么回事啊?
离线ywmlovecss

只看该作者 1楼 发表于: 2013-05-21
操作设备肯定是linux下的那些函数了!!其他的肯定都是分装的。比如操作/dev/video0吧,直接用open(“/dev/video0”,xxx);如何与你使用的类里面也含有open函数发生冲突,直接在open的前面加上::操作符就可解决。例如::open(“/dev/video0”,xxx);记得包含头文件呀
离线zjun726
只看该作者 2楼 发表于: 2013-05-21
回 1楼(ywmlovecss) 的帖子
谢谢。我就是在别人的例子里面看到是::open(),不明白是什么意思
离线zjun726
只看该作者 3楼 发表于: 2013-05-22
回 1楼(ywmlovecss) 的帖子
刚刚试了一下,可是提示open was not declared in this scope. 我包含了头文件啊
源码如下:
#include "smartdelaywidget.h"
#include <QApplication>
#include <QWSServer>
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int fd;

    QApplication a(argc, argv);
    SmartDelayWidget w;
    QWSServer::setCursorVisible(false); //hide the cursor
    w.setWindowFlags(Qt::FramelessWindowHint);  //hide the Window title
    w.show();

    fd = open("/dev/pwm", 0);
    if (fd < 0) {
        perror("open pwm_buzzer device");
        exit(1);
    }
  
    return a.exec();
}
离线ywmlovecss

只看该作者 4楼 发表于: 2013-05-22
回 2楼(zjun726) 的帖子
虽然我也不是太懂,但应该是位域的问题!!!
离线ywmlovecss

只看该作者 5楼 发表于: 2013-05-22
回 3楼(zjun726) 的帖子
亲,open的头文件是#include<fcntl.h>
另外是::open,你看你加了吗???
离线zjun726
只看该作者 6楼 发表于: 2013-05-22
回 5楼(ywmlovecss) 的帖子
的确是头文件的问题,后来加了就不报错了

另外open前面加不加::都可以,因为我的类里面没有open
离线ywmlovecss

只看该作者 7楼 发表于: 2013-05-22
回 6楼(zjun726) 的帖子
嗯!!!写linux函数首先男人一下(man),这是原则问题!!除非很熟悉
快速回复
限100 字节
 
上一个 下一个