国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

迅為4412開發(fā)板Qt下控制硬件

發(fā)布時(shí)間:2021-3-25 14:30    發(fā)布者:落風(fēng)
我們?cè)?QT 上要怎么操作驅(qū)動(dòng)呢?比如,我們要點(diǎn)亮一個(gè) led 燈,我們?cè)?C 語言中可以使用 open,read,write,ioctl 函數(shù)來進(jìn)行操作,但是 QT 上我們使用的語言是 C++,那我們要怎么來操作驅(qū)動(dòng)呢?
我們可以使用 C 和 C++進(jìn)行混合編程,我們先來看一個(gè)控制蜂鳴器的 APP 代碼,這里以終結(jié)者 I.MX6ULL為例,iTOP-4412 可參考測(cè)例程代碼,代碼如下:
#include "stdio.h" #include "unistd.h" #include "sys/types.h" #include "sys/stat.h" #include "fcntl.h" #include "stdlib.h" #include "string.h" #define BEEPOFF 0
#define BEEPON 1
/*
* @description : main 主程序
* @param - argc : argv 數(shù)組元素個(gè)數(shù)
* @param - argv : 具體參數(shù)
* @return : 0 成功;其他 失敗
*/
int main(int argc, char *argv[])
{
int fd, retvalue;
char *filename;
unsigned char databuf[1];
if(argc != 3){
printf("Error Usage!\r\n");
return -1;
}
filename = argv[1];
/* 打開 beep 驅(qū)動(dòng) */
fd = open(filename, O_RDWR);
if(fd < 0){
printf("file %s open failed!\r\n", argv[1]);
return -1;
}
databuf[0] = atoi(argv[2]); /* 要執(zhí)行的操作:打開或關(guān)閉 */
/* 向/dev/beep 文件寫入數(shù)據(jù) */
retvalue = write(fd, databuf, sizeof(databuf));
if(retvalue < 0){
printf("BEEP Control Failed!\r\n");
close(fd);
return -1;
}
retvalue = close(fd); /* 關(guān)閉文件 */
if(retvalue < 0){
printf("file %s close failed!\r\n", argv[1]);
return -1;
}
return 0;
}
通過上面的代碼我們可以發(fā)現(xiàn),使用 C 語言來控制一個(gè)蜂鳴器,無非就是打開設(shè)備節(jié)點(diǎn),然后通過 write來寫入數(shù)據(jù)就可以控制蜂鳴器了。既然我們可以使用 C 和 C++混合編程,那么我們是不是只需要把這個(gè) C控制蜂鳴器的代碼直接加到 QT 程序里面就可以了,那我們我們要怎么進(jìn)行混合編程呢?
我們先新建一個(gè) QT 工程,然后添加倆個(gè)按鈕來控制蜂鳴器的打開和關(guān)閉,UI 界面如圖 62.4.1:

然后我們開始移植代碼,因?yàn)?C++是面向?qū)ο蟮模珻 是面向過程的,所以在 QT 上,我們要用面向?qū)ο蟮乃枷雭磉M(jìn)行編程,所以我們第一步,就是要先創(chuàng)建一個(gè)類,把 C 語音控制蜂鳴器的代碼封裝成一個(gè)類。
我們右鍵選中這個(gè)工程,然后選擇添加新文件,添加 C++ Class 如圖 62.4.2:

然后我們添加類的名字,因?yàn)槲覀儾僮鞯氖欠澍Q器,所以我們這里寫成 Beep,如圖 62.4.3:

第一步,我們把 C 語言控制蜂鳴器代碼的頭文件,添加到我們剛才添加 Beep 類生成的文件 beep.h 里面,但是頭文件我們不能直接復(fù)制過去,我們要用 extern “C”{}括起來,代碼如下:
extern "C"{
#include "stdio.h" #include "unistd.h" #include "sys/types.h" #include "sys/stat.h" #include "fcntl.h" #include "stdlib.h" #include "string.h" }
添加完成如圖 62.4.4 所示:

圖 62.4.4
第二步,把我們 C 語言控制蜂鳴器里面的參數(shù)定義復(fù)制到 public 下面,代碼如下:
int fd, retvalue;
char *filename;
unsigned char databuf[1];
添加完如圖 62.4.5 所示:

然后我們打開 beep.cpp,把 C 語言控制蜂鳴器里面的打開設(shè)備節(jié)點(diǎn)的代碼復(fù)制到構(gòu)造函數(shù)里面,注意,QT 里面我們不能使用 printf,代碼如下:
/* 打開 beep 驅(qū)動(dòng) */
fd = open(filename, O_RDWR);
if(fd < 0){
return ;
}
添加完如圖 62.4.6 所示:

圖 62.4.6
然后我們創(chuàng)建一個(gè)打開蜂鳴器和一個(gè)關(guān)閉蜂鳴器的函數(shù),第一步,現(xiàn)在 beep.h 里面聲明,然后在
beep.cpp 里面實(shí)現(xiàn)。
聲明:
代碼如下:
void Beep_On();
void Beep_Off();
添加完如圖 62.4.7 所示:

圖 62.4.7
實(shí)現(xiàn):
代碼如下,注意 c 語言函數(shù)前面要加::,表示這個(gè)函數(shù)是 C 函數(shù)。
void Beep::Beep_On()
{
/* 向/dev/beep 文件寫入數(shù)據(jù) */
databuf[0] = 1;
retvalue = ::write(fd, databuf, sizeof(databuf));
if(retvalue < 0){
::close(fd);
return ;
}
}
void Beep::Beep_Off()
{
databuf[0] = 0;
retvalue = ::write(fd, databuf, sizeof(databuf));
if(retvalue < 0){
::close(fd);
return ;
}
}
添加完如圖 62.4.8 所示:

圖 62.4.8
添加好了之后,我們直接使用這個(gè)類就可以了,我們先在 widget 里面新建一個(gè) beep,
然后我們?cè)跇?gòu)造函數(shù)里面新建一個(gè)對(duì)象,如圖 62.4.9 所示:

圖 62.4.9
然后我們?cè)诓酆瘮?shù)里面執(zhí)行對(duì)應(yīng)的打開和關(guān)閉動(dòng)作即可,如圖 62.4.10 所示:



本文地址:http://m.qingdxww.cn/thread-763366-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 利用SAM E54 Xplained Pro評(píng)估工具包演示CAN轉(zhuǎn)USB橋接器以及基于CAN的主機(jī)和自舉程序應(yīng)用程序
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线看色 | 又色又爽又黄的网站 | 欧美专区亚洲 | 日韩精品一区二区三区在线观看 | 日本特黄的免费大片视频 | 国产欧美亚洲专区第一页 | 4虎影院午夜在线观看 | 91精品国产自产在线观看 | 嘛豆传媒国产剧情 | 亚洲一区不卡视频 | 三级小视频在线观看 | www操| 日韩 ed2k | 国产高清av在线播放 | 欧美在线高清视频播放免费 | 欧美高清在线精品一区二区不卡 | 国产乱人伦精品一区二区 | 国产在线麻豆精品 | 国产成人aa在线观看视频 | 午夜探花在线观看 | 国产成a人片在线观看视频 国产产一区二区三区久久毛片国语 | 国产九九在线观看播放 | 国产麻豆a一级毛片爽爽影院 | 国产欧美日韩综合精品一区二区 | 国产第一第二第三第四第五 | 一区二区国产精品 | 亚洲看片网站 | 国产自在线拍 | 特级做a爰片毛片免费看一区 | 九九热观看视频 | 久久这里有精品 | 福利在线一区二区 | 日本高清视频免费观看 | 欧美日韩成人 | 蜜柚在线观看免费高清 | 91香蕉成人免费高清网站 | 日本高清视频免费在线观看 | 久久99国产精品成人欧美 | 两个人高清视频免费观看www | 手机看片国产 | 亚洲网站在线免费观看 |