欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)WinCE平臺C#例程要點(diǎn)介紹

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-11-15 10:01 ? 次閱讀

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

·基于WINCE平臺C#編程要點(diǎn)之一

·基于WINCE平臺C#編程要點(diǎn)之二

·使用C#進(jìn)行CAN總線編程—基于WINCE平臺C#編程要點(diǎn)之三

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

·SQL CE數(shù)據(jù)庫的C#編程

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

·C#使用COM組件接口進(jìn)行串口操作

·C#調(diào)用COM組件的效率分析

英創(chuàng)不停地根據(jù)客戶的需求添加相應(yīng)的應(yīng)用例程,本文將對下面兩個(gè)新的要點(diǎn)進(jìn)行淺析說明(光盤上均有相關(guān)例程):

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

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

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

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

首先,可以在應(yīng)用工程中創(chuàng)建一個(gè)新的音頻類文件,如sound.cs,在這個(gè)類文件里定義一個(gè)音頻類,對fmodce.dll的音頻函數(shù)進(jìn)行DllImport定義,以便在應(yīng)用程序中可以調(diào)用:

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); // 獲得流媒體當(dāng)前播放位置

[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(); // 關(guān)閉音頻文件

[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;

有了這些方便易用的音頻函數(shù),而后就可以在應(yīng)用程序里面自由操作音頻文件了。比如,播放一首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、如何定義和使用鍵盤熱鍵

在客戶的應(yīng)用開發(fā)中,很多終端設(shè)備是使用小鍵盤相應(yīng)熱鍵來執(zhí)行相應(yīng)的應(yīng)用操作的。WinCE操作系統(tǒng)有很完善的消息傳遞機(jī)制,我們提供了一個(gè)熱鍵例程來說明這個(gè)過程。

首先,可以在應(yīng)用工程中創(chuàng)建一個(gè)新的MessageWindow類文件,如MyMessageWindow.cs,以便監(jiān)視鍵盤操作并作出實(shí)時(shí)響應(yīng):

class MyMessageWindow : MessageWindow

{

private Form1 msgform = null;

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

// 下面是構(gòu)造函數(shù),注意在Form1.cs是通過

// keyUsage = new MyMessageWindow(this);彼此建立關(guān)聯(lián)的

public MyMessageWindow(Form1 msgform)

{

this.msgform = msgform;

}

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

{

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

switch (m.Msg)

{

case WM_HOTKEY:

Form1.ProcessHotkey(m); // 按下熱鍵時(shí)調(diào)用Form1主窗體的ProcessHotkey()函數(shù)

break;

}

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

}

}

在主窗體需要對Win32 API熱鍵函數(shù)進(jìn)行聲明:

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

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

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

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

// 下面的fsModifoers:定義為了產(chǎn)生WM_HOTKEY消息而必須與由nVirtKey參數(shù)定義的鍵一起按下的鍵

public enum KeyModifiers

{

None = 0, // 該鍵不按下

Alt = 1, // 該鍵為ALT鍵

Control = 2, // 該鍵為CTL鍵

Shift = 4, // 該鍵為Shift鍵

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

}

在主窗體函數(shù)中定義熱鍵:

public Form1()

{

InitializeComponent();

keyUsage = new MyMessageWindow(this);

// 通過構(gòu)造函數(shù)中參數(shù)this的傳遞,主窗體被傳入MessageWindow中,主窗體的消息循環(huán)按照新的消息循環(huán)進(jìn)行

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

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

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

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

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

}

接收MyMessageWindow傳遞過來的熱鍵消息,并作進(jìn)一步處理的函數(shù):

public static void ProcessHotkey(Message m)

{

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

string sid = id.ToString();

switch (sid)

{

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

{

action1();

break;

}

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

{

action2();

break;

}

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

{

action3();

break;

}

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

{

action4();

break;

}

}

}

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3573

    瀏覽量

    89349
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6086

    瀏覽量

    35636
收藏 人收藏

    評論

    相關(guān)推薦

    創(chuàng)嵌入式主板C#應(yīng)用程序開發(fā)方法

    基于WINCE平臺C#編程要點(diǎn)之二
    發(fā)表于 09-26 08:09

    創(chuàng)信息技術(shù)CAN接口COM組件在C#語言領(lǐng)域應(yīng)用

     創(chuàng)ARM9工控主板的一個(gè)很大的特色就是提供了標(biāo)準(zhǔn)的CAN總線通訊接口,客戶可以方便地在工業(yè)現(xiàn)場、汽車、船舶等等領(lǐng)域進(jìn)行CAN通信應(yīng)用。由于創(chuàng)ARM9嵌入式主板采用
    的頭像 發(fā)表于 11-12 10:34 ?2504次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>CAN接口COM組件在<b class='flag-5'>C#</b>語言領(lǐng)域應(yīng)用

    創(chuàng)信息技術(shù)C#使用COM組件接口進(jìn)行串口操作介紹

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

    創(chuàng)信息技術(shù)工控主板的復(fù)位管理介紹

     創(chuàng)公司的工控主板是基于ARM9 CPU、預(yù)裝正版WinCE的嵌入式主板產(chǎn)品。作為嵌入式應(yīng)用,系統(tǒng)的可靠啟動(dòng)是其可靠性的重要組成部分。本文針對嵌入式應(yīng)用的特點(diǎn)、介紹
    的頭像 發(fā)表于 11-14 10:03 ?1729次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>工控主板的復(fù)位管理<b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)如何實(shí)現(xiàn)WinCE系統(tǒng)中USB設(shè)備自動(dòng)檢測概述

    創(chuàng)公司ARM9系列工控主板預(yù)裝正版WinCE操作系統(tǒng),提供標(biāo)準(zhǔn)USB接口,本文介紹如何在應(yīng)用程序中判斷USB存儲設(shè)備的插入和移出操作。
    的頭像 發(fā)表于 11-18 09:44 ?1442次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>如何實(shí)現(xiàn)<b class='flag-5'>WinCE</b>系統(tǒng)中USB設(shè)備自動(dòng)檢測概述

    創(chuàng)信息技術(shù)WinCE工控主板的數(shù)據(jù)庫配置簡介

    。由于創(chuàng)公司的產(chǎn)品處于不斷發(fā)展之中,WinCE也在不斷的發(fā)展之中,導(dǎo)致在不同型號的產(chǎn)品中存在配置的數(shù)據(jù)庫的情況有所不同,本文的主要目的是詳細(xì)介紹
    的頭像 發(fā)表于 01-14 11:35 ?1537次閱讀

    創(chuàng)信息技術(shù)嵌入式系統(tǒng)設(shè)備驅(qū)動(dòng)接口的C#編程

    創(chuàng)ARM9系列嵌入式主板,均預(yù)裝了WinCE 5.0、WinCE 6.0操作系統(tǒng),用戶可使用標(biāo)準(zhǔn)的C/
    的頭像 發(fā)表于 01-15 11:29 ?1351次閱讀

    創(chuàng)信息技術(shù)WinCE遠(yuǎn)程桌面介紹

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

    創(chuàng)信息技術(shù)C/C#開發(fā)基于WEC7的CAN通訊介紹

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

    創(chuàng)信息技術(shù)WinCE平臺下通過系統(tǒng)異常信息定位程序bug位置

    使用基于WINCE平臺創(chuàng)系列工控主板進(jìn)行應(yīng)用程序開發(fā)時(shí),當(dāng)程序產(chǎn)生異常退出,CE操作系統(tǒng)將通過調(diào)試串口打印類似如下錯(cuò)誤信息。根據(jù)這些
    的頭像 發(fā)表于 01-17 11:14 ?1370次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>WinCE</b><b class='flag-5'>平臺</b>下通過系統(tǒng)異常<b class='flag-5'>信息</b>定位程序bug位置

    創(chuàng)信息技術(shù)主板WinCE應(yīng)用程序的FTP遠(yuǎn)程更新介紹

    創(chuàng)公司推出的嵌入式工控主板產(chǎn)品系列,均預(yù)裝了正版的WinCE5.0、WinCE6.0、WCE7操作系統(tǒng)。微軟的WINCE實(shí)時(shí)多任務(wù)操作系統(tǒng)
    的頭像 發(fā)表于 02-03 09:00 ?1560次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>主板<b class='flag-5'>WinCE</b>應(yīng)用程序的FTP遠(yuǎn)程更新<b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)WinCE工控主板開發(fā)常見問題介紹

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

    創(chuàng)信息技術(shù)WinCE主板與STM32多功能模塊通訊介紹

    ETA321是創(chuàng)推出的基于STM32單片機(jī)的多功能擴(kuò)展模塊,可為創(chuàng)現(xiàn)有的WinCE系統(tǒng)增加AD、DA、PWM、脈沖計(jì)數(shù)等功能。ETA32
    的頭像 發(fā)表于 02-06 11:12 ?2146次閱讀

    創(chuàng)信息技術(shù)WinCE6系統(tǒng)CEDB故障分析介紹

    導(dǎo)致的。直到近期,創(chuàng)公司通過大量實(shí)驗(yàn),找到了觸發(fā)CEDB故障的原因。本文將介紹我們的實(shí)驗(yàn)結(jié)果,為防止CEDB故障,希望客戶注意: 使用WINCE6
    的頭像 發(fā)表于 02-07 10:30 ?1095次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>WinCE</b>6系統(tǒng)CEDB故障分析<b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)WinCE文件系統(tǒng)測試及故障分析簡介

    進(jìn)行了長期分析測試,希望能找到有效辦法來規(guī)避WINCE文件系統(tǒng)故障。本文主要介紹創(chuàng)在這方面的工作及獲得的成果。 先前的工作 過去多年,
    的頭像 發(fā)表于 02-07 11:15 ?1506次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>WinCE</b>文件系統(tǒng)測試及故障分析簡介