日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC学习笔记 — 看小白如何实现音乐播放器(USB-HID 声卡 wav播放)

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC学习笔记 — 看小白如何实现音乐播放器(USB-HID 声卡 wav播放) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XX ?作 ? ? ? 者:文化人

XX ?聯系方式:(或進群:471144274

XX ?版權聲明:原創文章,歡迎評論和轉載~轉載時能告訴我一聲就最好了

XX ?要說的話:作者水平有限,難免有不足之處,懇請指正!

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1、USB設備的枚舉和讀寫:

參考鏈接1:USB_HID通信上位機程序VC6.0(真正類似呀呀USB工具的源代碼).rar-C++代碼類資源-CSDN下載

參考鏈接2:《圈圈教你玩USB》HID上位機和下位機實例源碼_圈圈教你玩usb光盤-嵌入式文檔類資源-CSDN下載

我把代碼中PVN改為了usagepage,因為PVN會有多個設備,而usagepage可以確保只有一個;

獲得usagepage需要添加如下代碼:

hDevHandle=CreateFile(MyDevPathName, NULL, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//獲取設備的屬性并保存在DevAttributes結構體中 Result=HidD_GetAttributes(hDevHandle, &DevAttributes); //關閉剛剛打開的設備 CloseHandle(hDevHandle); //如果獲取成功,則將屬性中的VID、PID以及設備版本號與我們需要的 //進行比較,如果都一致的話,則說明它就是我們要找的設備。 if(MyVid == DevAttributes.VendorID) {if(MyPid == DevAttributes.ProductID){//這里進行讀寫訪問打開設備if(!HidD_GetPreparsedData(hWriteHandle, &PreparsedData)){CloseHandle(hWriteHandle);return FALSE;}if(!HidP_GetCaps(PreparsedData, &Capabilities)){CloseHandle(hWriteHandle);return FALSE;}if(Capabilities.UsagePage == 0xffa0){MyDevFound = TRUE;}} }

如果以上的鏈接中,寫數據失敗的話,建議改用下面的寫接口:

BOOL CUsbDlg::OnBUTTONSend(UCHAR send_buf[64]) {CString DevicePath;BOOL Result;UINT LastError;unsigned long numBytesReturned;DevicePath=temp;HANDLE hCom = CreateFile (DevicePath,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING, 0,NULL);if (hCom == INVALID_HANDLE_VALUE){}DataInSending=TRUE;Result = WriteFile(hCom, send_buf, 19, &numBytesReturned, NULL);//如果函數返回失敗,則可能是真的失敗,也可能是IO掛起了if(Result==FALSE){//獲取最后錯誤代碼LastError=GetLastError();//看是否是真的IO掛起if((LastError==ERROR_IO_PENDING)||(LastError==ERROR_SUCCESS)){return TRUE;}//否則,是函數調用時發生錯誤,顯示錯誤代碼else{DataInSending=FALSE;AddToInfOut("發送失敗,錯誤代碼:"+itos(LastError));//如果最后錯誤為1,說明該設備不支持該函數。if(LastError==1){AddToInfOut("該設備不支持WriteFile函數。", FALSE);}return FALSE;}}//否則,函數返回成功else{DataInSending=FALSE;return TRUE;}return TRUE; }

2、聲卡選擇:windows代碼設置默認音頻輸出設備_kevin的博客-CSDN博客

作者的代碼是排除了默認聲卡,選擇新的聲卡,但若是有兩個新的聲卡呢?

我去掉了判斷默認音頻設備的代碼,把紅色框內的代碼修改為如下:

setlocale(LC_ALL,"");//此句必須要加上 char mbBuffer[256] = {0}; size_t count; count = wcstombs(mbBuffer, friendlyName.pwszVal, 256);// 轉換并返回多字節字符串的長度 if(strstr(mbBuffer, "Usb Dongle"))SetDefaultAudioPlaybackDevice(wstrID);

3、播放音樂:

參考鏈接1:C++ 播放音頻文件_weixinhum-CSDN博客_c++ 播放mp3

參考鏈接2:VC程序播放音樂必備---mciSendString用法_IT民工-CSDN博客

添加如下代碼,界面上加一個編輯框,實現動態選擇wav文件:

char buf[256]; sprintf(buf, _T("open %s.wav alias wave"), get_wav_filename_from_edit); mciSendString(buf, NULL, 0, NULL);//alias后面為設備名稱 mciSendString(_T("play wave wait"), NULL, 0, NULL);//wait表示播放完畢之后才返回,最好加上去 mciSendString(_T("close wave"), NULL, 0, NULL);

注意:只有使用生成的.exe才能播放音樂,VS里調試時是播放不成功的;

4、編譯可能會遇到一些錯誤,其中一類錯誤的原因:

? ? ? ?“error LNK2019: 無法解析的外部符號”的幾種可能原因_沈春旭的博客-CSDN博客_lnk2019無法解析的外部符號

5、HID使用的庫文件在這里,用到的頭文件如下,:

extern "C" { #include "hidsdi.h" #include "setupapi.h" } #include <afxwin.h> #include "Common.h" #include <wchar.h> #include <locale.h> #include "Mmdeviceapi.h" #include "PolicyConfig.h" #include "Propidl.h" #include "Functiondiscoverykeys_devpkey.h"

總結

以上是生活随笔為你收集整理的MFC学习笔记 — 看小白如何实现音乐播放器(USB-HID 声卡 wav播放)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产浮力影院 | 爱爱视频免费看 | 国产麻豆精品久久一二三 | 久久精品一区二区国产 | 进去里视频在线观看 | 中文字幕亚洲一区 | 乱人伦xxxx国语对白 | 黄色片网站免费在线观看 | 毛片手机在线 | 在线无 | 日本欧美色图 | 亚洲一区二区三区综合 | 国产第99页 | 国产亚洲精久久久久久无码77777 | 美女福利一区 | 亚洲色图一区二区 | 爱爱精品视频 | 中文字幕乱轮 | 538任你躁在线精品免费 | 日韩精品在线不卡 | 国产精品13p| 欧美黄色免费观看 | 波多野结衣福利 | 国产一区久久 | www.av.cn| 久精品在线 | 91新网站 | 在线观看av的网址 | 色女孩综合 | 污视频网址在线观看 | 翔田千里88av中文字幕 | 免费视频91蜜桃 | 国产精品人成 | 亚洲综合图色 | 亚洲第一视频网 | 91亚洲在线| 国产精品一区二区视频 | 五月婷婷爱爱 | 久久这里只有精品9 | 亲子乱对白乱都乱了 | 亚洲精品在线观看网站 | av有声小说一区二区三区 | av美女在线 | 精品国产成人亚洲午夜福利 | 闫嫩的18sex少妇hd | 精品中文字幕在线播放 | 日韩黄色大片 | 肉嫁高柳家在线看 | 中文字幕永久免费 | 热久久在线 | 午夜剧场黄色 | 日韩欧美在线一区 | 免播放器av| 久久影视中文字幕 | av在线伊人 | 成人爱爱视频 | 久久96| 欧美乱妇日本无乱码特黄大片 | 亚洲一区二区三区蜜桃 | 国产福利一区二区视频 | 亚洲色大成网站www www.97ai.com | 视频免费观看在线 | 色先锋av资源 | 国产欧美久久久精品免费 | 天堂在线观看中文字幕 | 日本a在线免费观看 | 黑帮大佬和我的三百六十五天 | 国产一区二区视频在线观看 | 别揉我奶头啊嗯一区二区 | 爱爱的网站 | 操女人逼逼视频 | 天天色宗合 | 九九视频精品在线 | 蜜桃av乱码一区二区三区 | 特黄色一级片 | 摸丰满大乳奶水www免费 | 99re6在线观看 | 九九视频免费观看 | 337p日本欧洲亚洲大胆张筱雨 | 亚洲第二色 | 成人亚洲 | 天堂a在线| 成人妇女淫片aaaa视频 | 国产熟女精品视频 | 国产小视频免费 | 成人中文字幕在线 | 素人一区二区三区 | 亚洲人人人 | 三级特黄 | 精品视频不卡 | 性做久久久 | 亚洲一区二区 | 欧美日韩免费一区二区 | 成人精品视频在线播放 | 成人激情文学 | 久久久久久久久久免费 | 91黄在线观看| 天天色天天干天天色 | 午夜在线观看视频 |