国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

使用.NET智能版進(jìn)行SIM編程

2019-11-17 04:39:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友


  摘要:學(xué)習(xí)如何使用 SIM 治理器 API、Compact Framework 的 Interop 服務(wù)以及 .NET 開(kāi)發(fā)環(huán)境來(lái)創(chuàng)建用于 Pocket PC Phone 的連接應(yīng)用程序。(本文還包含英文鏈接。)
  下載 sim_PRogramming.exe  SIM 卡

  Pocket PC Phone 的內(nèi)置電話功能使它成為移動(dòng)電話家族的重要成員,在創(chuàng)建新的連接應(yīng)用程序時(shí),可以利用該功能。與所有移動(dòng)電話一樣,Pocket PC 電話也需要用戶身份模塊 (SIM) 卡才能撥打電話(緊急電話除外,撥打緊急電話時(shí)無(wú)需 SIM 卡)。例如,連接應(yīng)用程序可以通過(guò)在啟動(dòng)連接之前檢查用戶的個(gè)人識(shí)別碼 (PIN) 代碼來(lái)利用 SIM 卡的安全功能。  SIM 卡可以存儲(chǔ)移動(dòng)電話的電話號(hào)碼以及提供此號(hào)碼的操作員的身份標(biāo)識(shí)。另外,它還可以存儲(chǔ)附加有姓名的電話號(hào)碼以及多條短消息服務(wù)的消息。SIM 卡不僅具有存儲(chǔ)器,還具有使卡可以進(jìn)行安全和加密處理的中心處理器。通常情況下,您需要使用 PIN 代碼“登錄”到 SIM 卡。  SIM 治理器 API

  在 Pocket PC Phone 中,您可以使用一系列 Windows CE API 調(diào)用(統(tǒng)稱為 SIM 治理器)來(lái)訪問(wèn) SIM 卡上的信息。以下為 SIM 治理器 API(按功能分組):表 1:SIM 治理器 API
使用.NET智能版進(jìn)行SIM編程  會(huì)話以調(diào)用 SimInitialize 開(kāi)始,這將返回一個(gè) SIM 句柄,此后,在調(diào)用 SIM 治理器 API 函數(shù)時(shí)均需要此句柄。通過(guò)將此句柄傳遞給 SimDeinitialize 來(lái)終止會(huì)話?! ∈褂?Compact Framework 調(diào)用 Windows API

  使用 SDE (Smart Device Extensions) 和 Compact Framework,可以進(jìn)行 Microsoft? Windows? API 調(diào)用,例如使用 Interop(erability) 服務(wù)訪問(wèn) SIM 治理器 API。
  SIM Anyplace 示例

  該示例是使用 Microsoft Visual Studio? .NET、C#、SDE 和 .NET CF 創(chuàng)建的 Pocket PC Phone 的示例應(yīng)用程序。它展示了如何使用 SIM 治理器 API 訪問(wèn) SIM 卡。該應(yīng)用程序包含一個(gè)窗體:  此示例的用途僅限于通過(guò)敲擊“獲取 SIM 信息”按鈕從 SIM 卡獲取一般信息。但是,通過(guò)使用此示例的結(jié)構(gòu)可以將其用途擴(kuò)展至包含更多的 SIM 治理器 API 功能?! 〈a演練

  要使用 Compact Framework 的 Interop 服務(wù),需要添加以下代碼:using System.Runtime.InteropServices;  創(chuàng)建類 SIMWrap 來(lái)存儲(chǔ) Windows API 的原型,該示例需要以下原型:[DllImport("cellcore.dll")]
public static extern int SimInitialize(uint dwFlags,
int lpfnCallBack, uint dwParam, ref int lphSim);[DllImport("cellcore.dll")]
public static extern int SimGetPhonebookStatus(int hSim,
uint dwLocation, ref uint lpdwUsed, ref uint lpdwTotal);[DllImport("cellcore.dll")]
public static extern int SimGetDevCaps(int hSim,
uint dwCapsType, ref SimCaps lpSimCaps);[DllImport("cellcore.dll")]
public static extern int SimGetSmsStorageStatus(int hSim,
uint dwStorage, ref uint lpdwUsed, ref uint lpdwTotal );[DllImport("cellcore.dll")]
public static extern int SimDeinitialize(int hSim);  每個(gè)原型均具有一個(gè)指向 DLL(動(dòng)態(tài)鏈接庫(kù),在其中執(zhí)行函數(shù))的 DllImport 屬性,在本例中為 cellcore.dll。創(chuàng)建這些原型時(shí),Visual Studio .NET 幫助文件提供了一個(gè)包含類型映射的極好表格(請(qǐng)?jiān)谒饕胁檎摇捌脚_(tái)調(diào)用”和“數(shù)據(jù)類型”)。例如,本地類型“DWord”映射到治理類型“UInt32”,UInt32 為 C# 中的一個(gè)“單位”。  用于獲取 SIM 卡功能的調(diào)用 (SimGetDevCaps) 包含一個(gè)由引用 (lpSimCaps) 作為最后參數(shù)傳遞的結(jié)構(gòu)。本地 (C++) 結(jié)構(gòu)如下所示:typedef strUCt simcaps_tag {

DWORD cbSize;
DWORD dwParams;
DWORD dwPBStorages;
DWORD dwMinPBIndex;
DWORD dwMaXPBIndex;
DWORD dwMaxPBEAddressLength;
DWORD dwMaxPBETextLength;
DWORD dwLockFacilities;
DWORD dwReadMsgStorages;
DWORD dwWriteMsgStorages;
DWORD dwNumLockingPwdLengths;
SIMLOCKINGPWDLENGTH rgLockingPwdLengths[SIM_NUMLOCKFACILITIES];
} SIMCAPS, FAR *LPSIMCAPS;  當(dāng) SIM_NUMLOCKFACILITIES 等于 10 時(shí),相同結(jié)構(gòu)的 Compact Framework 版本如下所示:[StructLayout(LayoutKind.Sequential)]
public struct SimCaps
{
public uint cbSize;
public uint dwParams;
public uint dwPBStorages;
public uint dwMinPBIndex;
public uint dwMaxPBIndex;
public uint dwMaxPBEAddressLength;
public uint dwMaxPBETextLength;
public uint dwLockFacilities;
public uint dwReadMsgStorages;
public uint dwWriteMsgStorages;
public uint dwNumLockingPwdLengths;
public SimLockingPwdLength rgLockingPwdLengths0;
public SimLockingPwdLength rgLockingPwdLengths1;
public SimLockingPwdLength rgLockingPwdLengths2;
public SimLockingPwdLength rgLockingPwdLengths3;
public SimLockingPwdLength rgLockingPwdLengths4;
public SimLockingPwdLength rgLockingPwdLengths5;
public SimLockingPwdLength rgLockingPwdLengths6;
public SimLockingPwdLength rgLockingPwdLengths7;
public SimLockingPwdLength rgLockingPwdLengths8;
public SimLockingPwdLength rgLockingPwdLengths9;
}  請(qǐng)注重,即使 MarchalAsAttribute 類在 Compact Framework (Beta 1) 中不受支持,通過(guò)使用附加后綴 (0-9) 將陣列添加為成員幾乎可以實(shí)現(xiàn)相同的結(jié)構(gòu)。實(shí)際上,這些成員屬于另一種結(jié)構(gòu) (SimLockingPwdLength)?! ÷暶鬟m當(dāng)時(shí),“獲取 SIM 信息”按鈕所表示的代碼如下所示:SimWrap.SimCaps simCaps = new SimWrap.SimCaps();
int hSim = 0;
uint phoneUsed = 0;
uint phoneTotal = 0;
uint smsUsed = 0;
uint smsTotal = 0;// 清空 ListView
lvwItems.Items.Clear();// 啟動(dòng) SIM 治理器會(huì)話(獲取句柄)
SimWrap.SimInitialize(0, 0, 0, ref hSim);// 獲取電話簿狀態(tài)(使用部分、全部)
SimWrap.SimGetPhonebookStatus(hSim, SimWrap.SIM_PBSTORAGE_SIM,
ref phoneUsed, ref phoneTotal);
AddToListView("Total phonebook size:", phoneTotal.ToString());
AddToListView("Phonebook entries:", phoneUsed.ToString());// 獲取 SIM 功能
SimWrap.SimGetDevCaps(hSim, SimWrap.SIM_CAPSTYPE_ALL, ref simCaps);
AddToListView("Max. length of name:",
simCaps.dwMaxPBETextLength.ToString());
AddToListView("Max. length of phone number:",
simCaps.dwMaxPBEAddressLength.ToString());// 獲取消息 (SMS) 狀態(tài)(使用部分、全部)
SimWrap.SimGetSmsStorageStatus(hSim, SimWrap.SIM_SMSSTORAGE_SIM,
ref smsUsed, ref smsTotal);
AddToListView("SMS message storage capacity:", smsTotal.ToString());
AddToListView("SMS messages:", smsUsed.ToString());// 結(jié)束 SIM 治理器會(huì)話
SimWrap.SimDeinitialize(hSim);  清空 ListView 且檢索 (SimInitialize) 到 SIM 治理器句柄 (hSim) 后,將調(diào)用 SIM Wrapper 類 (SimWrap) 上的每個(gè)靜態(tài)方法,從而產(chǎn)生 API 調(diào)用。作為引用傳遞的變量將獲取返回值,并使用代碼將其添加至 ListView 中。private void AddToListView(string Item, string Value)

{
ListViewItem lvi = new ListViewItem(Item);
lvi.SubItems.Add(Value);
lvwItems.Items.Add(lvi);
}  最后,在調(diào)用 SimDeinitialize 時(shí)將釋放 SIM 治理器句柄 (hSim)?! ⌒〗Y(jié)

  由于 Pocket PC Phone 是移動(dòng)電話家族的重要成員,因此在創(chuàng)建大型的連接應(yīng)用程序時(shí)可以利用其功能,例如 SIM 卡。使用 SIM 治理器 API、Compact Framework 的 Interop 服務(wù)以及 .NET 開(kāi)發(fā)環(huán)境,可以獲得實(shí)現(xiàn)這一功能的工具。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 涡阳县| 盐亭县| 名山县| 神池县| 邛崃市| 台江县| 金华市| 高密市| 阿拉善左旗| 宁乡县| 宣武区| 海盐县| 通江县| 德州市| 开平市| 广东省| 惠水县| 临江市| 紫云| 江油市| 锦州市| 兴和县| 茂名市| 全椒县| 改则县| 华安县| 玛纳斯县| 东至县| 天全县| 泰宁县| 南岸区| 得荣县| 玉林市| 正阳县| 利津县| 阿图什市| 钦州市| 鹤壁市| 西畴县| 萝北县| 霍山县|