在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術WinCE平臺C#例程要點介紹

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2019-11-15 10:01 ? 次閱讀

英創嵌入式ARM9主板采用微軟的Windows CE操作系統,可以采用eVC或者VS2005進行應用開發。C#作為一種簡單易用的編程語言工具,由于其在結構構建和API界面上的優勢,受到廣大客戶的喜愛,并為很多用戶所選用。為了讓廣大選用C#的用戶能夠方便快捷地完成應用開發,英創提供了一些C#的應用例程。一些例程我們已經提供了一些說明文檔,發表在英創網站上,它們是:

·基于WINCE平臺C#編程要點之一

·基于WINCE平臺C#編程要點之二

·使用C#進行CAN總線編程—基于WINCE平臺C#編程要點之三

·CAN接口COM組件在C#語言中的使用

·SQL CE數據庫的C#編程

·C#使用COM組件接口操作精簡ISA總線

·C#使用COM組件接口進行串口操作

·C#調用COM組件的效率分析

英創不停地根據客戶的需求添加相應的應用例程,本文將對下面兩個新的要點進行淺析說明(光盤上均有相關例程):

·使用C#播放MP3或WAV音頻文件

·如何定義和使用鍵盤熱鍵

1、使用C#播放MP3或WAV音頻文件

英創的EM9000和EM9161等嵌入式工控主板進行音頻硬件擴展后,可以支持音頻的播放,如果客戶要在應用產品中播放MP3和WAV等音頻文件,我們的例程采用了著名的第三方音頻動態鏈接庫fmodce.dll,客戶可以按照如下方法進行使用:

首先,可以在應用工程中創建一個新的音頻類文件,如sound.cs,在這個類文件里定義一個音頻類,對fmodce.dll的音頻函數進行DllImport定義,以便在應用程序中可以調用:

public static IntPtr GetStream(string filename) // 獲得音頻文件的IntPtr

{

byte[] filenamebytes = System.Text.Encoding.Default.GetBytes(filename + null);

GCHandle hfile = GCHandle.Alloc(filenamebytes, GCHandleType.Pinned);

if (Environment.Version.Major == 1) return new IntPtr(hfile.AddrOfPinnedObject().ToInt32() + 4);

else return hfile.AddrOfPinnedObject();

}

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Init’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern bool Init(int mixrate, int maxsoftwarechannels, int flags); // 初始化

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Stream_GetLength’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern int GetLength(IntPtr fstream); // 獲得流媒體的長度

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Stream_GetPosition’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern UInt32 GetPosition(IntPtr fstream); // 獲得流媒體當前播放位置

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Stream_Open’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern IntPtr Open(IntPtr data, int mode, int offset, int length); // 打開音頻文件

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Stream_Play’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern int Play(int channel, IntPtr fstream); // 播放音頻文件

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Stream_SetPosition’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern bool SetPosition(IntPtr fstream, UInt32 position); // 定位音頻文件播放位置

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Stream_Stop’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern bool Stop(IntPtr fstream); // 停止播放

[DllImport(‘fmodce.dll’, EntryPoint = ‘FSOUND_Close’, SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]

public static extern void Close(); // 關閉音頻文件

[DllImport(‘coredll.dll’, SetLastError = true)]

public static extern int SetSystemPowerState(string psState, int StateFlags, int Options);

const int POWER_FORCE = 0x1000;

const int POWER_STATE_ON = 0x10000;

有了這些方便易用的音頻函數,而后就可以在應用程序里面自由操作音頻文件了。比如,播放一首songmother.mp3歌曲:

string currentSoundTrack = @‘\NandFlash\songmother.mp3’;

Sound.Init(44100, 16, 0); // 初始化為44.1kHz

IntPtr soundStream = Sound.GetStream(currentSoundTrack);

IntPtr soundHandle = Sound.Open(soundStream, 16 | 32 | 256, 0, 0);

Sound.Play(0, soundHandle);

2、如何定義和使用鍵盤熱鍵

在客戶的應用開發中,很多終端設備是使用小鍵盤相應熱鍵來執行相應的應用操作的。WinCE操作系統有很完善的消息傳遞機制,我們提供了一個熱鍵例程來說明這個過程。

首先,可以在應用工程中創建一個新的MessageWindow類文件,如MyMessageWindow.cs,以便監視鍵盤操作并作出實時響應:

class MyMessageWindow : MessageWindow

{

private Form1 msgform = null;

// 注意,程序的主窗體名稱是Form1,所以在此定義一個msgform的Form1以便接收傳遞的消息

// 下面是構造函數,注意在Form1.cs是通過

// keyUsage = new MyMessageWindow(this);彼此建立關聯的

public MyMessageWindow(Form1 msgform)

{

this.msgform = msgform;

}

protected override void WndProc(ref Message m) // 監視Windows消息

{

const int WM_HOTKEY = 0x0312; // 如果m.Msg的值為0x0312那么表示用戶按下了熱鍵

switch (m.Msg)

{

case WM_HOTKEY:

Form1.ProcessHotkey(m); // 按下熱鍵時調用Form1主窗體的ProcessHotkey()函數

break;

}

base.WndProc(ref m); // 將系統消息傳遞自父類的WndProc

}

}

在主窗體需要對Win32 API熱鍵函數進行聲明:

[DllImport(‘coredll.dll’)] // 定義一個系統范圍的熱鍵

public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, Keys vk);

[DllImport(‘coredll.dll’)] // 在系統中注消熱鍵

public static extern bool UnregisterHotKey(IntPtr hWnd, int id);

// 下面的fsModifoers:定義為了產生WM_HOTKEY消息而必須與由nVirtKey參數定義的鍵一起按下的鍵

public enum KeyModifiers

{

None = 0, // 該鍵不按下

Alt = 1, // 該鍵為ALT鍵

Control = 2, // 該鍵為CTL鍵

Shift = 4, // 該鍵為Shift鍵

Windows = 8 // 該鍵為任意Windows鍵

}

在主窗體函數中定義熱鍵:

public Form1()

{

InitializeComponent();

keyUsage = new MyMessageWindow(this);

// 通過構造函數中參數this的傳遞,主窗體被傳入MessageWindow中,主窗體的消息循環按照新的消息循環進行

RegisterHotKey(keyUsage.Hwnd, 100, 0, Keys.D1);

// 定義熱鍵數字鍵‘1’,請注意句柄是keyUsage.Hwd(而不是Handle)

RegisterHotKey(keyUsage.Hwnd, 200, 0, Keys.D2); // 定義熱鍵數字鍵‘2’

RegisterHotKey(keyUsage.Hwnd, 300, 0, Keys.D3); // 定義熱鍵數字鍵‘3’

RegisterHotKey(keyUsage.Hwnd, 400, 0, Keys.D4); // 定義熱鍵數字鍵‘4’

}

接收MyMessageWindow傳遞過來的熱鍵消息,并作進一步處理的函數:

public static void ProcessHotkey(Message m)

{

IntPtr id = m.WParam; // IntPtr用于表示指針或句柄的平臺特定類型

string sid = id.ToString();

switch (sid)

{

case ‘100’: // 按下了熱鍵‘1’,執行action1()函數

{

action1();

break;

}

case ‘200’: // 按下了熱鍵‘2’,執行action2()函數

{

action2();

break;

}

case ‘300’: // 按下了熱鍵‘3’,執行action3()函數

{

action3();

break;

}

case ‘400’: // 按下了熱鍵‘4’,執行action4()函數

{

action4();

break;

}

}

}

那么接下來,用戶只需要在action函數里面添加自己需要進行的操作即可了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3597

    瀏覽量

    90678
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6094

    瀏覽量

    36079
收藏 人收藏

    評論

    相關推薦

    嵌入式主板C#應用程序開發方法

    基于WINCE平臺C#編程要點之二
    發表于 09-26 08:09

    信息技術CAN接口COM組件在C#語言領域應用

     ARM9工控主板的一個很大的特色就是提供了標準的CAN總線通訊接口,客戶可以方便地在工業現場、汽車、船舶等等領域進行CAN通信應用。由于ARM9嵌入式主板采用
    的頭像 發表于 11-12 10:34 ?2640次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>CAN接口COM組件在<b class='flag-5'>C#</b>語言領域應用

    信息技術C#使用COM組件接口進行串口操作介紹

    SerialPort供客戶使用,該串口類可以靈活方便地進行串口設置、收發等操作,也提供了基于該串口類的C#例程供客戶參考。但是,微軟所提供的串口類雖然方便靈活,但是沒有提供RTS控
    的頭像 發表于 11-14 09:37 ?2614次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>C#</b>使用COM組件接口進行串口操作<b class='flag-5'>介紹</b>

    信息技術如何實現WinCE系統中USB設備自動檢測概述

    公司ARM9系列工控主板預裝正版WinCE操作系統,提供標準USB接口,本文介紹如何在應用程序中判斷USB存儲設備的插入和移出操作。
    的頭像 發表于 11-18 09:44 ?1521次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>如何實現<b class='flag-5'>WinCE</b>系統中USB設備自動檢測概述

    信息技術WinCE工控主板的數據庫配置簡介

    。由于公司的產品處于不斷發展之中,WinCE也在不斷的發展之中,導致在不同型號的產品中存在配置的數據庫的情況有所不同,本文的主要目的是詳細介紹
    的頭像 發表于 01-14 11:35 ?1657次閱讀

    信息技術嵌入式系統設備驅動接口的C#編程

    ARM9系列嵌入式主板,均預裝了WinCE 5.0、WinCE 6.0操作系統,用戶可使用標準的C/
    的頭像 發表于 01-15 11:29 ?1466次閱讀

    信息技術嵌入式系統通訊線程的C#編程方法

    timer的Tick函數是并在主線程中,如果Tick函數中運算數據過于復雜,會導致主線程運行變慢,可能導致窗口卡死。使用C#中的線程類,可以非常方便的解決這個問題,線程卡死,不會影響到主線程的運算,就不會導致窗口卡死的狀況發生。 本文將介紹如何使用
    的頭像 發表于 01-15 11:25 ?1420次閱讀

    信息技術WinCE遠程桌面介紹

    公司WinCE系列工控主板,即可以支持多種格式的單色點陣液晶,也可以支持從320240到1024768的各種分辨率的彩色TFT LCD,借助WinCE強大的GUI,用戶可以很容易的
    的頭像 發表于 01-16 10:24 ?3140次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>遠程桌面<b class='flag-5'>介紹</b>

    信息技術C/C#開發基于WEC7的CAN通訊介紹

    EM335x工控主板,使用的Cortex-A8及WEC7操作系統。本文以EM335x工控主板光盤例程為例,簡單介紹一下C
    的頭像 發表于 01-17 10:01 ?2887次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>C</b>/<b class='flag-5'>C#</b>開發基于WEC7的CAN通訊<b class='flag-5'>介紹</b>

    信息技術WinCE平臺下通過系統異常信息定位程序bug位置

    使用基于WINCE平臺系列工控主板進行應用程序開發時,當程序產生異常退出,CE操作系統將通過調試串口打印類似如下錯誤信息。根據這些
    的頭像 發表于 01-17 11:14 ?1453次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b><b class='flag-5'>平臺</b>下通過系統異常<b class='flag-5'>信息</b>定位程序bug位置

    信息技術主板WinCE應用程序的FTP遠程更新介紹

    公司推出的嵌入式工控主板產品系列,均預裝了正版的WinCE5.0、WinCE6.0、WCE7操作系統。微軟的WINCE實時多任務操作系統
    的頭像 發表于 02-03 09:00 ?1646次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>主板<b class='flag-5'>WinCE</b>應用程序的FTP遠程更新<b class='flag-5'>介紹</b>

    信息技術WinCE工控主板開發常見問題介紹

    開發工具選擇 嵌入式主板,預裝操作系統可以分為WinCE5.0、WinCE6.0、WEC7、WEC2013,不同主板適用的開發工具不同,適用情況見下表。 型號 操作系統 支持的開發
    的頭像 發表于 02-04 11:43 ?2123次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>工控主板開發常見問題<b class='flag-5'>介紹</b>

    信息技術WinCE主板與STM32多功能模塊通訊介紹

    ETA321是推出的基于STM32單片機的多功能擴展模塊,可為現有的WinCE系統增加AD、DA、PWM、脈沖計數等功能。ETA32
    的頭像 發表于 02-06 11:12 ?2281次閱讀

    信息技術WinCE6系統CEDB故障分析介紹

    導致的。直到近期,公司通過大量實驗,找到了觸發CEDB故障的原因。本文將介紹我們的實驗結果,為防止CEDB故障,希望客戶注意: 使用WINCE6
    的頭像 發表于 02-07 10:30 ?1221次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>6系統CEDB故障分析<b class='flag-5'>介紹</b>

    信息技術WinCE文件系統測試及故障分析簡介

    進行了長期分析測試,希望能找到有效辦法來規避WINCE文件系統故障。本文主要介紹在這方面的工作及獲得的成果。 先前的工作 過去多年,
    的頭像 發表于 02-07 11:15 ?1621次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>WinCE</b>文件系統測試及故障分析簡介
    主站蜘蛛池模板: 亚洲日本色图 | 久久黄色毛片 | 国产真实偷乱视频在线观看 | 亚洲一区二区免费视频 | 在线a亚洲老鸭窝天堂新地址 | 欧美草逼| 涩五月婷婷 | 午夜肉伦伦影院在线观看 | 国产久热精品 | 九九天天影视 | 成人伊人 | 欧美日韩亚洲国内综合网俺 | 播放一级毛片 | 中文字幕亚洲一区婷婷 | 天天躁日日躁狠狠躁中文字幕老牛 | 亚洲电影在线 | 男女吃奶一进一出动态图 | 激情六月天婷婷 | 天天射日日干 | 天天影视网天天影网 | 4438x全国免费| 天天射日日射 | 欧美日韩国产网站 | 亚洲ay| 国产精品14p | 你懂的在线看 | 国产亚洲网站 | jiucao在线观看精品 | 成 人 a v黄 色 | 欧美成人性色生活片天天看 | zsvdy午夜片| 速度与激情10 | 日韩精品一区二区在线观看 | 天天干天天操天天碰 | 成人在线免费电影 | 国产午夜精品久久久久九九 | 国产美女亚洲精品久久久久久 | 32pao强力打造免费高速高清 | 大象焦伊人久久综合网色视 | 最新色站 | 日本黄色免费大片 |