2008年12月18日

免費的Ubuntu

從網路看到可以免費索取, 好奇的填一下資料,沒想到真的寄來了!!












-- Post From My iPhone

2008年9月4日

iPhone 2.0擷取畫面功能

原來iPhone 2.0已經內建擷取畫面的功能,只要先按著Home鍵,再按一下開關鍵就能擷取畫面了,真方便~不用安裝其他軟體了!
擷取的畫面會存在照片相簿內!
##CONTINUE##

2008年9月3日

這次是真的了~不是又狼來了


今年真的是忙碌的一年,房子買了,也確定今年要結婚了,跟當初自己訂下在35歲前想要完成的三件大事,終於可以完成兩件了!
不過,僅剩的半年看樣子最後一件是不可能完成了,尤其大環境如此,只能說可欲不可求了~
##CONTINUE##
不過,還是要想想該如何才好,比別人要晚到職場上,年紀又比別人大,已經沒有本錢再去茫然過日子了,尤其又貸了一大筆錢~也該好好規劃一下才是!

Anyway,先把目前的事忙完,順便到外面玩玩,畢竟有好幾年沒出國了!等好久了,剩下的等回來了再來想了~~

2008年7月2日

房事搞定了!


##CONTINUE##
歷經一個多月的忙碌,終於把房事搞定了!
從畫設計圖,找廠商估價,自己找材料到監工等,為了省錢,連磁磚都要自己搬,不過都已經度過了,終於有屬於自己的小天地了,期間不知道請了多少天假,還好有老闆與mac的相助,不然再多假可能都不夠!了!^_^
接下來,又要開始忙婚事了!天啊!會不會被老闆殺了~~
一整年都在忙自己的事!!

2008年5月7日

HTC Touch Diamond

HTC Touch Diamond & TouchFLO 3D

##CONTINUE##

HTC Touch Diamond Product Tour


HTC Touch Diamond: TouchFLO 3D -- Weather


HTC Touch Diamond: TouchFLO 3D -- Photos and Videos


HTC Touch Diamond: TouchFLO 3D -- Music


HTC Touch Diamond: TouchFLO 3D -- People

Macbook送修了~

用了將近兩年的Macbook,前幾天用到一半時,鍵盤突然無法使用,原本以為是Windows XP的問題,不過重新開機後竟然就無法再開起了,只有送去
##CONTINUE##
維修,經維修人員判斷,可能需要更換主機板與鍵盤模組,還好當初有買Applecare,不然維修費不知道要花多少錢了!

最近問題還真多啊!PC壞了之後,Macbook也出問題了,希望iMac不要也出問題了,沒錢維修!

2008年4月17日

IPL與SPL

節錄於Mobile01 : (偽)官方 818Pro 繁中 WM6 ROM Evo5.1/EVO6.2文章

IPL SPL

IPL與SPL實質為Windows mobile的Bootloader裡的兩大部份,WM啟動的程序是IPL--SPL--OS

1.IPL 英文全稱是 Initial Program Loader,它負責主板的通電管理並把SPL裝入RAM。
IPL損壞了就把手機拿去扔進河裡吧。

2.SPL 英文全稱是 Second Program Loader,「第二次裝系統」,就是負責裝載OS你好作系統到RAM中。另外SPL還包括許多系統命令,如mtty中使用的命令等。SPL損壞了還可以用燒錄器重寫。
##CONTINUE##

2008年4月8日

Quake3 in iPhone


##CONTINUE##

2008年3月9日

終於完成人生大事之一

終於要結束無殼蝸牛的生活,說真的,還在懷疑是不是在做夢,事情似乎有點太突然了一點,從看屋到簽約完成僅僅不過五天的時間而已,之前看了快一年的房子,也許太過龜毛,仲介一個換一個,已經看得有點灰心了,想說換家看看,沒想到第一間就買了!
##CONTINUE##

不過也許太過突然了吧,在付完斡旋金後的幾天,完全無法好好睡覺,滿腦子都是接下來該去哪籌錢(果然太衝動了)!

不過當然也不會後悔啦!至少是雙方都滿意了才決定的,房子格局方正,雖然有西晒的問題,還好主臥並沒有,另外完全沒有遮蔽的視野,這才是我最喜歡的原因之一!

接下來,就是錢~錢還是錢的問題了,既然已經買了,心也該好好收斂一下了,已經完成一個目標了,接下往下一個目標了吧!

2008年3月3日

仿HTC介面軟體:HTC Cube OpenGL

Basic Navigation:


Adding/Removing a Contact:

##CONTINUE##
Button Functionality:


程式發表區:http://forum.xda-developers.com/showthread.php?t=358102

2008年2月28日

MSN® Direct

MSN® Direct is a unique information service using the Microsoft® DirectBand™ wireless datacasting network to deliver information to devices such as Smart Watches for MSN Direct, the Oregon Scientific Complete Regional Weather Station with MSN Direct Weather Data Service, the Melitta Smart Mill & Brew Coffee Maker, Personal navigation systems from Garmin, and Microsoft Streets & Trips 2008 with Connected Services.
資料來源:http://www.msndirect.com/MSNDirectAbout.aspx

##CONTINUE##
Microsoft® DirectBand™ is a wide-area wireless datacast network built and operated by Microsoft. The network utilizes unused FM radio spectrum to constantly stream data to 125 cities in the US and Canada, including the top 100 biggest cities in all 50 US states and five Canadian provinces. The network has been up and running since the end of 2003, with the first products being Smart Watches with the MSN Direct service.

DirectBand is particularly well suited for delivering frequently changing data to low-powered mobile devices. Examples include sending traffic conditions to navigation devices, weather reports to table-top weather stations, and movie times to Smart Watches. It can also be used to maintain extremely accurate time in a variety of devices, and automatically adjusts for Daylight Savings Time and time zones.

Several leading consumer electronics companies have already built products with DirectBand receivers, and more products are on the way from additional companies. If your company is interested in learning more about DirectBand and how it can enhance your products with live content, this site is for you.
資料來源:http://www.msndirect.com/DirectBand_Network_Main_Page.htm

相關報導:

微軟開始測試SPOT技術
[CES 2008]新一代Garmin Nuvi 800系列增加聲控功能

2008年2月27日

Google 地圖行動版加入定位功能

##CONTINUE##
Google Maps三角定位功能
Google Maps功能再進化,現在有定位服務囉!它不是用GPS來定位,但它可以告訴你大約的位置。

之前,若你在咖啡店中想搜尋附近哪裡有影印店時,得先輸入一個地址進行定位,之後Google Maps for Mobile才會顯示出附近店家的列表。
現在新推出的測試版則利用手機基地台的三角定位原理來抓出使用者所在地。

相關報導:
http://www.google.conn.tw/2007/11/google_30.html
http://taiwan.cnet.com/crave/0,2000088746,20127119,00.htm

2008年2月21日

Overlay Surface Overview[MSDN]

轉貼MSDN
Overlay surfaces, casually referred to as overlays, are surfaces with special hardware-supported capabilities.

Overlay surfaces are frequently used to display live video, recorded video, or still bitmaps over the primary surface without blitting to the primary surface or changing the primary surface's contents in any way.

Overlay surface support is provided entirely by the hardware; DirectDraw supports any capabilities as reported by the display device driver. DirectDraw does not emulate overlay surfaces.

An overlay surface is analogous to a clear piece of plastic that you draw on and place in front of the monitor.

When the overlay is in front of the monitor, you can see both the overlay and the contents of the primary surface together, but when you remove it, the primary surface's contents are unchanged.

In fact, the mechanics of overlays work much like the clear plastic analogy. When you display an overlay surface, you are telling the device driver where and how you want it to be visible.

While the display device paints scan lines to the monitor, it checks the location of each pixel in the primary surface to see if an overlay should be visible there instead. If so, the display device substitutes data from the overlay surface for the corresponding pixel, as shown in the following illustration.

##CONTINUE##

By using this method, the display adapter produces a composite of the primary surface and the overlay on the monitor, providing transparency and stretching effects, without modifying the contents of either surface.

The composite surfaces are injected into the video stream and sent directly to the monitor. Because this on-the-fly processing and pixel substitution is handled at the hardware level, no noticeable performance loss occurs when displaying overlays.

Additionally, this method makes it possible to seamlessly composite primary and overlay surfaces with different pixel formats.

You create overlay surfaces by calling the IDirectDraw::CreateSurface method, specifying the DDSCAPS_OVERLAY flag in the associated DDSCAPS structure.

Overlay surfaces can only be created in video memory, so you must also include the DDSCAPS_VIDEOMEMORY flag.

As with other types of surfaces, by including the appropriate flags you can create either a single overlay or a flipping chain made up of multiple overlay surfaces.

2008年2月19日

[轉貼]Samsung全新TouchWiz UI觸摸介面

轉貼癮科技

##CONTINUE##

2008年2月14日

[轉貼]何謂 DirectX?

轉貼:http://www.gamebase.com.tw/forum/content.html?sno=65634843

DirectX 提供存取顯示卡及音效卡的功能,可讓程式提供寫實的立體 (3D) 圖形及環場的音樂及視訊效果。DirectX 是一組低階「應用程式發展介面 (API)」,可提供 Windows 程式高效能硬體加速的多媒體支援。
##CONTINUE##

DirectX 可讓程式輕易地決定電腦的硬體功能,並依此設定符合的程式參數。這可讓多媒體軟體程式在任何具備 DirectX 相容硬體及驅動程式的 Windows 型電腦上執行,並確保多媒體程式能充分利用高效能的硬體。

DirectX 包含一組 API 供存取對高效能硬體進階功能,如 3-D 圖形加速晶片及音效卡。這些 API 控制著低階功能,包含 2-D 圖形加速;支援如搖桿、鍵盤及滑鼠等輸入裝置;以及控制音效混合及輸出。組成 DirectX 的這些元件支援低階功能:

Microsoft DirectDraw

Microsoft DirectDraw API 支援極快速存取電腦視訊介面卡上的加速硬體功能。它支援在所有視訊介面卡上顯示圖形的標準方法,並在使用加速驅動程式時,可以更快且更直接的存取。 DirectDraw 為程式 (如遊戲、2-D 圖形套裝軟體) 及 Windows 系統元件 (如數位視訊轉碼器) 提供一種與裝置無關的方法,以取得對指定顯示裝置的存取功能,而不需使用者提供關於裝置功能額外的資訊。

Microsoft Direct3D

Microsoft Direct3D API (Direct3D) 為內建於大多數新視訊介面卡的 3-D 轉換功能提供一個介面。Direct3D 是低階 3-D API,為軟體程式提供與裝置無關的方法,有效地與加速硬體進行通訊。Direct3D 包括特定之 CPU 指示設定的支援,可提供較新電腦的額外加速功能。

Microsoft DirectSound

Microsoft DirectSound API 提供程式與視訊介面卡的音效混合、播放功能之間的連結。DirectSound 提拱多媒體軟體程式低延遲混音、硬體加速,以及存取音效裝置。它會提供此功能並同時維護與現存裝置驅動程式的相容性。

Microsoft DirectMusic

Microsoft DirectMusic API 是 DirectX 的互動視訊元件。和擷取及播放數位音效範例的 DirectSound API 不同,DirectMusic 是處理數位音訊,以及藉由音效卡或內建的軟體合成器轉換為數位音訊的訊息型音樂資料。DirectMusic API 可支援 Musical Instrument Digital Interface (MIDI) 格式的輸入,並同時支援壓縮及未壓縮的數位音訊格式。 DirectMusic 提供的軟體開發程式具備建立動態音軌的能力,可以回應軟體環境中的各種變更,不僅是直接的使用者輸入。

Microsoft DirectInput

Microsoft DirectInput API 為遊戲、搖桿處理程序輸入,以及其他相關裝置,包含滑鼠、鍵盤及其他遊戲控制器 (如壓力反饋遊戲控制器) 提供進階輸入。

Microsoft DirectPlay

Microsoft DirectPlay API 支援透過數據機、網際網路或 LAN 上的遊戲連線。DirectPlay 簡化了對通訊服務的存取,並且為遊戲提供一種彼此通訊、獨立於基本通訊協定或線上服務的方式。DirectPlay 提供的 Lobbying 服務可簡化多玩家遊戲的起始設定並支援可靠的通訊協定,來確保重要的遊戲資料不會在網路上遺失。DirectPlay 8.0 的新功能是支援網路上的語音通訊,這可以大為提昇團隊型、多玩家遊戲的遊戲樂趣,並透過提供與其他遊戲者談話的能力,而為社交遊戲開啟新的一頁。

Microsoft DirectShow

Microsoft DirectShow API 可提供多媒體檔案 (位於您電腦及網際網路伺服器上) 的高品質擷取及播放。DirectShow 可支援各式各樣的音訊及視訊格式,包括「進階資料流格式 (ASF)」、「影像交錯技術 (AVI)」、「數位影像 (DV)」、Motion Picture Experts Group (MPEG)、 MPEG Audio Layer-3 (MP3)、Windows Media Audio/Video (WMA/WMV) 及 WAV 檔案。 DirectShow 可啟用影像擷取、DVD 播放、視訊編輯及混合、硬體加速影像解碼,以及廣播類比訊號及數位電視訊號的調整。
測試 DirectX 元件可以在已連接至您系統的每個監視器上測試 Microsoft DirectDraw 及 Direct3D。也可在每個音效輸出裝置上測試 DirectSound,並在每個音樂連接埠上測試 DirectMusic。

2007年11月15日

A first hand look at building an Android application


##CONTINUE##
Androidology - Part 1 of 3 - Architecture Overview


Androidology - Part 2 of 3 - Architecture Overview


Androidology - Part 3 of 3 - Architecture Overview

2007年10月8日

Display PNG file in WinCE 5.0







PNG圖檔支援背景透明的效果,不過一開始使用時,卻發現原本應該是要透明的背景,卻仍然顯示出來,這樣在將來若做UI介面時會使的美觀上大打折扣

##CONTINUE##
後來在書上發現,可以利用程式來自行處理,不過,處理時必須要指定要變為透明的顏色,也就是說,每載入一張PNG圖都必須去取得透明色的RGB值,才能將它變為透明,這樣會使得設計上非常不方便,同時,在處理後的圖示上,由於只譨指定一種顏色為透明,因此,若圖示上有陰影的效果,會使得圖示的邊緣處理的不漂亮!







後來,發現在WinCE 5.0上其實有提供透明背景顯示,不過需要加入Component後才行,可以在platform builder上搜尋SYSGEN_GDI_ALPHABLEND,加入"Alphablend API",重新Build image後即可!







至於顯示PNG的方便,有很多library可以使用,不過還需要時間比較一下,微軟也有提供
IImage class可以使用。


CoInitializeEx(NULL, 0);
IImagingFactory* pImageFactory;
IImage *pImage = NULL;


HRESULT hr = CoCreateInstance(CLSID_ImagingFactory, NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IImagingFactory),
(LPVOID *)&pImageFactory);

// Load image from file
pImageFactory->CreateImageFromFile(L"info.png", &pImage);

// Get image information
ImageInfo info;
pImage->GetImageInfo(&info);

RECT rc={0,0,info.Width, info.Height};

pImage->Draw(dc, &rc, NULL);

// Clean up
pImage->Release();
pImageFactory->Release();

CoUninitialize();

2007年10月1日

修正Reset Registry to default問題

藉由更動TOC中變數來判斷是否要將系統回復為預設值

AP部分:將TOC中bReserved[3]的值設為0X45

TOC *p;
BYTE InBuf[2048];
DWORD psize,val=0;
if(::KernelIoControl(IOCTL_READ_TOC, NULL,0,&InBuf, 2048,&psize))
{
p = (TOC *)InBuf;
p->bReserved[3] =0x45;
::KernelIoControl(IOCTL_WRITE_TOC, &InBuf, 2048,NULL,0,&psize);
KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL); //reboot device
}


##CONTINUE##
Driver部分:

  • 在IsAnyKeyDown()加入判斷:若值為0x45則將系統回復為預設值

if(toc->bReserved[3] == 0x45)
{
RETAILMSG(1, (TEXT("#####toc->bReserved[3]=%d \r\n"),toc->bReserved[3]));
return TRUE;
}
.........


  • 在XXXDaemon中加入判斷:若值為0x45,則將PETestFolder刪除,並將值設為0避免重複作回復預設值的動作!

if(toc->bReserved[3] == 0x45)
{
if(::KernelIoControl(IOCTL_READ_TOC, NULL,0,&InBuf, 2048,&psize))
{
p = (TOC *)InBuf;
p->bReserved[3] =0;
::KernelIoControl(IOCTL_WRITE_TOC, &InBuf, 2048,NULL,0,&psize);
}
hFind = FindFirstFile (L"\\My Flash Disk\\PETestFolder", &FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
FindClose(hFind);
if(EmptyDirectory(_T("\\My Flash Disk\\PETestFolder"),TRUE))
{
RemoveDirectory(_T("\\My Flash Disk\\PETestFolder"));
}
}

2007年9月20日

[轉貼]滿街都是iPod跟iPhone‧漫談UI界的逆向工程

出處:HandyUI.com
作者:陳文剛


逆向工程(Reversed Engineering)普遍存在於各個領域,尤其在台灣,各行各業的高手們,更是樂此不疲。大廚師喜歡到處吃吃喝喝,用舌頭跟鼻子去破解各地美食的料理秘方;電影工作者喜歡把經典橋段拿來重複播放、快轉倒轉、慢動作格放,反覆地推敲每一個走位跟運鏡。就連裕隆老總嚴凱泰都曾發生過類似的趣事,他在正式代理Armani前,就曾經把Armani西裝丟給港台一流的打版師傅拆解研究,直到怎麼組都組不回原樣時,他才心甘情願地放棄自行生產,專心做代理銷售。

每個人看到好東西時,心裡自然都會想著:「媽阿,這是怎麼辦到的?」也因此,人們都會渴望把美好的東西拆解,把它的外表一層一層地撥開,直到搞清楚這是怎麼一回事為止。這個過程就像拆禮物一樣,一層一層的包裝被打開,外觀越來越接近物品本身應有的大小跟重量,最後露出禮物的一瞬間,謎底終於揭曉,這可是相當迷人的經驗。「喔,原來是這樣做的阿!」這樣的讚嘆聲,就在最終破解的那一刻,發自內心地冒了出來。人類最原始,那種窺探、追根究底、搞懂怎麼做的本能渴望,就在這樣的過程中,一次又一次地被徹底滿足。


##CONTINUE##
就像上面所提到的,逆向工程的過程裡,充滿了驚喜與刺激,既知性,又充滿挑戰性。不過,從 UI Design的角度來看,搞懂怎麼做(know-how),跟知道為什麼要這樣做(know-why),其實是天差地遠的兩件事。

在UI界,逆向工程這檔子事也是常常在發生,每天都在做,只是抄得多抄得少,或是依賴程度高低的差別而已。設計手機介面的時候,拿起Nokia或是Sony Ericsson玩看看,參考一下人家輸入法是怎樣做的;或是設計相機時,拿起 Canon或Nikon,看看人家的人臉對焦框是方的還是圓的,合焦時會不會變色?久而久之,所有類似產品的介面都長得很像,用起來都一樣,沒有特別好,也不會特別差。由於這種狀況每天都在發生,所以部分的介面設計師,很可能已經習慣於大量地參考別人,然後小幅地改善自己。



從模仿中學習,其實是個必經的歷程

從現有案例中學習,其實是件好事,也或許可以當作是蹲馬步般的基本功。舉個例來說,要一個沒吃過義大利菜的人,做出好吃的義大利式燉飯 (Risotto),或是要一個沒玩過遊戲軟體的人,憑空設計出一款多人線上角色扮演遊戲 (MMORPG),那都是相當困難,甚至天方夜譚的事。

介面設計師在開始著手設計前,當然要對該產品,或是同一領域的其他產品,有清楚的認識。在介面設計流程裡,這個知己知彼的過程與方法,就叫做競爭者分析 (Competitor Study)。通常在做產品定位,或是進行設計前,都會先跑過一次分析,搞清楚現有產品的優勢劣勢,以及自家產品的機會點。

在做介面設計的競爭者分析時,最簡單的方法是,找來各家產品,快速比較一下設計風格、資訊架構、互動效果等,一個表格或是幾張slide大概就可以搞定。另一種比較嚴謹的做法則是,把整個介面設計的元素全部拆解開來,重製出一份UI flow,並且將layout跟icon全部攤開,把各種互動設計都分門別類,一個一個做比較分析。後者的做法,跟所謂的逆向工程,其實沒什麼兩樣。

經過上述的拆解與分析之後,簡單如iPod,複雜如iPhone,內部的操作流程跟介面設計元素,都可以攤開來一覽無遺。這時候要抄要改,幾乎都像扒滷肉飯一樣輕鬆 (其實也沒這樣輕鬆,苦工夫一堆,又會被告,千萬別傻傻地去做)。至於要參考哪個部分,如何轉化成自己的設計,則完全看設計師自己的功力與經驗。

就像前面舉做燉飯,或是研發線上遊戲的例子一樣,做介面設計時,要是不做點競爭者分析的功課,就很可能會閉門造車,搞出類似重新發明輪胎的糗事 (歷史上,輪胎的外型曾經被重新發明很多次,方型的,雪橇型的都有,但是弄到最後,事實證明還是圓的最有效率)。透過逆向工程的手段,去快速學習、了解競爭者特性,是非常有效率且必要的做法。莫內、梵谷、畢卡索,哪一個沒有畫過靜物素描,沒有揣摩過大批翻製的石膏像?從模仿中學習,是人類進步的重要技能,在科技快速發展的今天,更是得不停地模仿,不停地踩在別人既有的基礎上,追求實質的進步。



掌握關鍵本質,才能夠舉一反三

只不過,模仿應該只是手段,而不是最終目的;知道如何做得一模一樣,跟了解背後的原理原則,真的是天差地遠的兩件事。

舉個實際的例子來說,有時候我們常會看到許多四不像的產品規格,去找PM討論時,總會聽到:「XX大廠就是這樣設計的,我想他們這樣做,一定有他的原因跟道理,我們照著這樣做比較安全。」 更厲害的PM則會融會貫通、旁徵援引,說出一套道理來:「我會想拿掉電源開關,是因為iPod也沒有電源開關;至於這裡要長按兩秒鐘,是因為PDA也都是長按兩秒鐘;而且我還加了閃七下的燈號提示,這是我們自己發明的,非常friendly,跟Canon的印表機有異曲同工之妙。」

這樣噴飯的對話常常出現,每回聽到這些謬論,除了心裡苦笑之外,也很懶得去反駁。老實說,我不太能夠接受「XX大廠這樣設計,一定有他的原因跟道理」這種說法,太籠統,而且也太馬虎行事。在搞不清楚別人為什麼這樣設計之前,就一股腦地抄,抄到最後就像拼裝車一樣,東拼西湊,重看不重用。

好的介面設計師不只懂得欣賞好產品,具有一眼就看出關鍵概念的鑑賞力,而且更懂得將這些精采地設計概念消化吸收,重新轉化成新的設計,比過去看過的更精練,更貼近使用者需求。夠水準的介面設計師,絕對不會只從Apple, Nokia等公司產品找靈感,更大一部分的啟發來自於日常生活,來自於人類歷史當中所有的經典設計。

舉個例來說,在思考手寫輸入介面的可能性時,我們會去參考Windows Mobile、漢王、蒙恬,或是甚至是iPhone的觸控螢幕鍵盤。但是在此同時,我們更關注的是,手、筆跟紙的關係。我們觀察人們長久以來怎麼樣用筆紀錄,如何在紙張上頭註記,如何塗改,如何銷毀。漸漸地會發現到,現有的手寫輸入介面都不夠好,連市面上最棒的產品也頂多在及格邊緣,離感動人心還差的遠。這時候,精采的就來了。從競爭者分析中看到現況,找到機會,然後透過設計師的經驗與巧思,就有可能設計出一套全新的手寫輸入介面,一舉超越現下的所有產品,或者你要說是,有史以來的所有產品也可以。

這就是具備鑑賞力、觀察力,並且掌握關鍵本質的奇妙功效。同樣是做競爭者分析,同樣是逆向工程,不明就裡地抄,跟了解原理原則後的全新設計,很可能就是地獄與天堂的差別。在這一點上,台灣廠商的逆向工程技術確實很先進,但是少了創意,少了理想與堅持,最後很可能開發出的全是一堆me too,或甚至比me too還差的產品,真的是很可惜。

2007年9月19日

XXX7600 : Fix Calibration

  • 讀取Registry儲存值:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\TOUCH"), 0, KEY_QUERY_VALUE, &hkey) != ERROR_SUCCESS)
return 0;

dwSize = sizeof(str);
lResult = RegQueryValueEx(hkey, _T("CalibrationData"), NULL, &dwType, (LPBYTE)str, &dwSize); //query registry value


##CONTINUE##
  • 分割字串,並計算與預設值的差值總和(每一點座標相減)
pStr = wcstok(str, seps);

for (i=0; pStr != NULL; i++)
{
wcscpy(token[i], pStr);
tokennum[i]=_wtoi(token[i]);
pStr = wcstok(NULL, seps);
}

for(i=0;i<10;i++) sum =" sum"> 50)
bMAXVal = true;
}
if(sum > 400)
{
lResult = RegSetValueEx(hkey, _T("CalibrationData"), NULL, REG_SZ, (LPBYTE)defaultval, dwSize);
RegCloseKey(hkey);
bMAXVal = true;
}
else
RegCloseKey(hkey);

  • 若差值總和過大或其中一點差值大於40則在進入系統後重新做校正。