2008年3月7日 星期五

昨天吃太多,今天也吃太多,肚子不太舒服

今天我把玩了一下之前老師買的裝有Sensor的手套
他是USB介面的,直接插上XP後就會出現"找到USB人性化裝置",支援Plugin & Play
然後利用廠商提供的Win32 DLL (包含一個.DLL 跟 .lib, .h)
這個DLL有點像是filter的東西並不是真的驅動程式,他只是一段程式
去跟Windows的驅動程式溝通,Open, Close, Read, Write,IOCTL 這些東西都看不到
而是直接提供比較高級的API,如果是Memory Mapped IO
應該是去讀取某段記憶體位址 (非虛擬記憶體)
或是Port IO就去開啟另一個特殊的位址
但應該沒有分配到IRQ, API只提供主動去讀取值
他範例的作法是透過一個Timer去取得手套Sensor的值

手套上總共有5個Sensor,測定每個Sensor的張力,表現手指的狀態
手套有預設幾組手勢,例如比Yeah就是3
我改了一下他的範例讓程式可以在某些手勢時發出聲音 ( 後來發現比中指的辨識率最高 哈哈 )

關於這個DLL, 應該是MicroSoft C++ Compiler產生的
我嘗試用Gnu C++ Compiler去include他會出現Signature出問題的Error(我試過改calling conversion還是不行)
g++ 跟 cl 產生的DLL果然是不能互通的? 也許有方法但我沒google到(但意外google到把Dll轉成static lib的東西)
其實DLL就是一段編譯好的程式,利用.h跟(.a / .lib)在你Inlude的程式裡面留個空間
當你執行(或使用)的時候在動態載入( 藉由Loader的幫忙,幫你把DLL mapped到你的程式,包含Data & Code segement )

今天晚上用Visual C++ Express 2008嘗試玩用一下
第一次對MS這麼厭惡
之前寫VB.net都沒什麼感覺,用得很爽
但為了.Net Framework, C++多出了很多莫名奇妙的東西, ref Class? &Class::Function ???
弄得我有點暈頭轉向,把以前寫的Code要port進來,我看有得改
他同時支援標準的C++跟他自己發明的一些玩意(copy Java copy 很大),.net Framework可以用很多種語言C#, VB, C++, ...
不想去搞那些東西,看他.net版本跳那麼快,還是把基礎打好要緊
.Net的程式跟Java比較大的差別是.Net編譯出來是Assembly Code, Java是ByteCode
.Net會因為這樣所以效能好一點嗎? 但也比較不好Port到其他平台吧?

對了 今天慢跑的時候 忽然想到怎麼寫論文的誌謝 哈哈


以上都是我在自言自語 沒有整理 想到什麼就寫什麼

沒有留言: