主题 : QT4 做个led 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 9203
精华: 0
发帖: 69
金钱: 590 两
威望: 265 点
贡献值: 0 点
综合积分: 138 分
注册时间: 2009-09-21
最后登录: 2010-03-26
楼主  发表于: 2010-01-14 20:06

 QT4 做个led

我用qt4做了个led。问题肯定有的。打开用open("/dec/leds",0);这没问题。反而是close(fd);这个就有错误了。提示是这样的你no maching function for close(int &);
我知道在qwidget有个close的,头文件我也加了是   unsitd.h
怎么解决的
[ 此帖被wujianming在2010-01-16 14:36重新编辑 ]
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
1楼  发表于: 2010-01-14 21:24
引用楼主wujianming于2010-01-14 20:06发表的 QT4 做个led :
我用qt4做了个led。问题肯定有的。打开用open("/dec/leds",0);这没问题。反而是close(fd);这个就有错误了。提示是这样的你no maching function for close(int &);
我知道在qwidget有个close的,头文件我也加了是   unsitd.h
怎么解决的

虽然小弟没有移植Qt4, 但开发应用程序的思路应该和Qtopia2.2是差不多的.

我开发Qtopia2.2应用程序的思路是这样的,首先看懂了友善之臂提供的控制Led的C程序,

然后跟锯自己的功能需要,把该C程序转化为C++程序,再在qtopia下把

该C++ 的header file include进去便可调用其成员涵数对Led进行控制.

小弟在这里发表的关于Led Control的应用程序,也是按照这种思路,

事实亦証明这是有效的.

虽然理论上是可以直接在Qt内调用Linux 的C 涵数, 但很多时会与Qt本身的涵数产生冲突,

就正如兄台所遇到的情况便是这个原因.

把C程序转化为C++程序的好处相信不用小弟多言了.其中代码重用这点已令在下省却了

不少宝贵的时间.

為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫 
级别: 侠客
UID: 9203
精华: 0
发帖: 69
金钱: 590 两
威望: 265 点
贡献值: 0 点
综合积分: 138 分
注册时间: 2009-09-21
最后登录: 2010-03-26
2楼  发表于: 2010-01-14 22:55
谢了
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2010-01-15 17:24

复制代码
  1. extern "C" {
  2. #include <unistd.h>
  3. }

试试,我不是C++专家,关于这方面的问题你可以搜索"C C++ mixed programming"
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 10994
精华: 0
发帖: 31
金钱: 155 两
威望: 31 点
贡献值: 0 点
综合积分: 62 分
注册时间: 2009-11-24
最后登录: 2011-07-10
4楼  发表于: 2010-01-15 17:34
用  ::close(fd)  试试
级别: 侠客
UID: 12377
精华: 0
发帖: 83
金钱: 415 两
威望: 83 点
贡献值: 0 点
综合积分: 166 分
注册时间: 2010-01-05
最后登录: 2023-04-08
5楼  发表于: 2010-01-17 22:06
源码呢
用过的Linux发行版:Arch,Gentoo,Debian,Fedora,RHEL,CentOS,Ubuntu,OpenSUSE,RedFlag,Ylmf,De ..
级别: 骑士
UID: 12662
精华: 0
发帖: 181
金钱: 955 两
威望: 191 点
贡献值: 0 点
综合积分: 362 分
注册时间: 2010-01-11
最后登录: 2014-02-14
6楼  发表于: 2010-02-26 10:07
嗯 关键在于命名空间的问题 调用C++下C的函数我就用::
比如 ::open(), ::close().
业余Linux爱好者。
级别: 侠客
UID: 10318
精华: 0
发帖: 63
金钱: 320 两
威望: 67 点
贡献值: 0 点
综合积分: 126 分
注册时间: 2009-10-31
最后登录: 2012-03-18
7楼  发表于: 2010-05-27 17:17
::close(fd)
在群里请教过一个同行,正确关闭了串口。和这个一个道理吧,试试吧