最近的幾個月裡,都在從事軟硬體間的程式設計,雖然我懂得不多,但是經過一段時間的摸索之後也找到了一些解決問題的方法。雖然從前的我,只會寫軟體程式,也從來沒有想到我會接觸到這個領域的東西,但是經過這幾個月的努力終於有了一些小小的收穫。

我記得在這幾個月裡接觸了不少硬體的東西,ARM 9的平台、8051的系統還有一些單晶片的MCU,我也到處向人請教,四處要求協助,最遠曾跑到台南去向技術人請教硬體的設定。我真佩服那些硬體的專業人員,面對複雜的線路圖還能處變不驚,一條一條的理出頭緒,他們看著線路圖就能檢查出版子到底出了什麼問題,他們量著板子上的訊號就能知道目前的運作狀態。我現在也嘗試著利用儀器去了解目前開發板到底發生了什麼問題,去查出到底是什麼原因讓機器無法正常運作。進一步,我現在稍稍學會了看著線路圖上的訊號去撰寫程式,我現在已經會控制簡單的GPIO訊號,並且了解其中的對應關係。

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
VC++ 2005編出來的程式無法在WINXP下執行,這件事情竟然困擾了我一個下午。我花了一個上午的時間將我的程式編譯完成,並且可以在我的電腦上正常運作,但是將這個程式拿給別人時,竟然出現"由於應用程式配置不正確,應用程式未能啟動,重新安裝應用程式可能可以解決這個問題"的提示對話框,我所撰寫的程式無法執行。
 
我第一個直覺動作就是換一台電腦試試看,於是從WINXP換成WIN2000上執行,結果發現WIN2000出現不同的錯誤訊息。但是這個錯誤訊息卻比較好解決,因為我看的懂。主要是說找不到一些動態連結檔,於是我把該程式需要的動態連結檔(dll)複製到WIN2000那台機器上,結果就可以執行了。於是我又將這包程式,當然包含那些動態執行檔(dll)複製到WINXP的作業系統上,結果依然不能執行,而且出現和之前一樣的錯誤。出現"由於應用程式配置不正確,應用程式未能啟動,重新安裝應用程式可能可以解決這個問題"的提示對話框。於是我又開始懷疑是不是.net framework ,於是在WINXP上安裝.NET Framework 2.0,結果仍然出現相同的錯誤。明明是相同的程式,而且都是在微軟的作業平台上執行,竟然因為作業系統的不同而不能執行。
 

CJY0503 發表在 痞客邦 留言(2) 人氣()

 
UML是透過一些圖表來描述程式中資料的關係與流程,根據這些圖表可以自動產生程式碼。如果你的Python程式學的夠徹底,你應該知道Python程式有一個叫class的資料型態,這裡的class指的就是這個東西。 其他語言如C++或Java中也存在class這樣的資料型態。 一個class中包含一些成員變數和成員函式。class包含三個欄位,最上面的那個欄位置的是class的名字,中間是存在於該class的成員變數,最後一個欄位指的就是成員函式(method方法)。
 
 大致上class與class之間有一些特定的關係,這是建立在物件導向程式設計的基礎上所得到的一些關係。這些關係包含︰繼承、衍生和組合(UML class中的連線)。一個package可以存在若干個class,如圖一,Content包含title含text兩個class左邊在描述title的class,右邊在描述text的class。另外圖一還描述了text和title這兩個類別(class)是從object這個class繼承而來,object是text和title的父母。圖一的例子︰描述了兩個class,其中text那個class包含一些存放資料變數,abstract_text, text_title, body, key_word 和 index,這些資料放在UML class中間的那個欄位就可以了。其中這個class提供了5個方法,讓使用者可以設定上面這些變數的值,例如︰getAbstract() 可以取出文字的摘要,setAbstract()可以設定文字摘要。
 

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
How to Extend and Embed the Python Interpreter
 
這篇文章主要是將之前所研究"關於C++擴展與嵌入Python"的問題做歸納與整理,一般編寫Python C/C++ Module(模組),或者為C/C++ lib編寫Wrapper,我所看到的有以下幾種方式,可以在文章1找到一些相關資料,裡面提到一些工具的使用,例如:SWIG, Boost等等。文章2以一個範例來說明如何編寫Python C/C++ Module,或者為C/C++ lib編寫Wrapper,裡面談到我所使用的工具和include library,如:python23.lib或python24.lib甚至是python25.lib,這些函式庫你可以在C:\PYTHON23\libs或C:\PYTHON24\libs或C:\PYTHON25\libs目錄下找到。在linux的環境下應該可以使用gcc,並include /usr/include下面的資料來編寫Python C/C++ Module(模組),或者為C/C++ lib編寫Wrapper,而函式庫可以在/usr/lib或/usr/local/lib中找到。在Windows環境中要達到C++擴展與嵌入Python可以透過dll,文章3給一個實際的範例來說明lib與dll如何產生,如何利用c/c++擴展python的能力。文章4說明如何在python 2.5中產生lib,以及編譯出來的dll該如何修改,並且要放在哪裡才可以被執行。相信讀完上面的四篇簡單的文章之後,你對"關於C++擴展與嵌入Python"的問題應該更得心應手,對python如何透過動態聯結(dll)與c/c++建立新的Module應該有比較清楚的觀念與想法。

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
當你誤刪了電腦中的資料時,相信你會先到資源回收筒去尋找,如果可以在資源回收筒中找回你誤刪的資料,只要將該資料復原即可。糟糕的是,你刪除的資料在資源回收筒中找不到怎麼辦?尤其是公司的重要資料,一但刪除幾個月的心血可能都毀於一旦,有些人喜歡按著"shift+del"將電腦的資料刪除,而一旦這樣將電腦資料刪除,在資源回收筒中找不回資料時,該怎麼辦?第一件事:不要哭,不要慌,因為這一切都是有救的,世界是美好的。第二件事找工具來幫你解決問題。
 
這裡要介紹一個檔案復原工具R-Studio,這一套工具十分厲害,可以恢復你之前所刪除的檔案,曾經利用這個軟體恢復某個硬碟中的資料,沒想到2年前所看的影片竟然也被復元,讓你可以找回2年前的回憶。
 

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
 
日前參加行動裝置應用大賽,目的在設計一個系統,可以透過行動裝置簡化生活上的一些瑣事,例如:購物、繳費或者資料查詢。
我們設計的一個音樂下載的平台,透過行動裝置下載並推薦使用者喜歡的歌曲,讓使用者隨處都可以聽歌,隨處都可以點歌。
我們描述手機端和伺服器端所包含的主要元件、各元間之間的關聯和各元件的功能以及用途。最後我們以一個實際的例子說明整個系統的運作方式和軟體的操作流程。

CJY0503 發表在 痞客邦 留言(1) 人氣()

 
什麼是cross compiler?就是在某個工作環境中產生另一個工作環境所能執行程式的工具軟體,例如:在微軟的Windoes平台上產生Linux平台上所能執行的程式,或者在x86的電腦硬體環境編譯出可以在ARM平台上可以執行的程式。我們在此所要建造的cross compiler環境是屬於後者,編譯完的程式是給其它硬體架構的機器執行。下面將簡單的介紹如何在Windows平台中打造一個可以編譯出ARM平台可以執行的程式。大部分的cross compiler工具都是在Linux上開發使用,在Windows也有一些辦法可以建立cross compiler的環境,你可以參考GNU ARM的網頁建立cross compiler的環境,或直接使用cygwin來建立工作環境。
 
所需要的軟體:
  1. cygwin
  2. cygwin-arm-cross-2.95.3

我所介紹的方法是使用cygwin在Windows上建立開發環境,首先先下載上述的兩個軟體,並安裝cygwin

Setp 1: 下載cygwin

 

Setp 2: 選擇直接從網路安裝(Install from Internet)

 

Step 3:  選擇你的安裝路徑

 

Step 4: 選擇Direct Connection 

 

Step 5:  選擇要從哪裡下載軟體,當玵選擇一個速度比較快的網站

 

Step 6:  選擇想要安裝的套件,建議安裝Devel中的gcc函式庫與核心,make程式也安裝

 

安裝完成之後下載cygwin-arm-cross-2.95.3.tar.gz,將程式放在c:/cygwin檔案夾下(你安裝cygwin的地方),啟動cygwin,並利用cygwin將程式解開。執行cygwin進入命令視窗

$  tar -zxvf cygwin-arm-cross-2.95.3.tar.gz

將編譯程式解開會產生opt的資料夾

$ PATH=/opt/arm-cross/bin:$PATH

設定執行檔的路徑,這樣cross compiler的環境就已經建立完成,當你想將helloworld.c編譯成helloworld的執行檔並且在ARM上執行,你只要打入下面的指令,helloworld的執行檔就會產生。

$ arm-linux-gcc helloworld.c -o helloworld

 

CJY0503 發表在 痞客邦 留言(2) 人氣()

 
這是我在2005年時完成的作品,目的是要達到兩部電腦之間安全的檔案傳輸,或許現在點對點安全性的傳輸軟體都有對傳輸資料加密保護,但是對於機密性的資料傳輸應該需要更嚴格的加密保護,因此需要一個強大而且能夠被信任的加密方法來將要被傳輸的資料進行加密處理。

關於加解密方面,目前該程式的加解密方法仍需加強,但是應該足夠抵擋一般性的攻擊。加解密的方法可依不同的需求加以修改,依事情的重要而給定期加解密的方法,加解密的方法沒有一個是絕對安全的,只有被破解的時間長短的區隔,因此定時的更動加解密的方法或更動密鑰是維護安全的唯一方法。

 

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
最近電腦常常動不動就當機,不知是哪個程式運作不正常,或是中了什麼毒,但是裡面已經安裝上一堆軟體,重新安裝系統又要重新安裝這堆軟體,實在很麻煩而且浪費時間。網路上有一堆的木馬程式和病毒程式企圖想入侵我們的電腦,一但遭受到嚴重病毒的入侵,而又沒有比較好的解決方案時,重新安裝系統或許是一個比較快的方法吧。備份電腦系統中的資料是降低意外傷害減少資料損失的一個辦法,所以平時可以好好的將電腦中重要的資料做好備份,以免出事時後悔。
 
所需要的軟體工具

CJY0503 發表在 痞客邦 留言(3) 人氣()

 
使用新版本的Python程式時發現無法使用擴充函式庫來擴充Python的library。
Python 2.5 的擴充函式庫,其檔名已經不能再使用XX.dll,而要將檔名改成XX.pyd否則無法使用。2.5版之前都可以使用XX.dll直接擴充函式庫。
 
 

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
我想我可能必須將我所研究過的一些東西及資料作一些紀錄,否則大部分的東西都將從我的腦袋中漸漸的消失。研究資訊首頁已經很久沒有去維護了,所以有些連結已經失效,有揭舊的程式也忘記從舊的電腦中移植到新的機器中,所以資料有些不齊,有時間我應該具續維護此網頁的完整性,以供我參考使用。這些資料有些已經有點舊,大都是三四前所遺留下來的研究資料,所以在網頁中可能要在2002~2004年間才會有一些研究資料被記錄下來。
今天大概將裡面的資料稍微整理一下,發現竟然以前所撰寫的一個爲網頁或文章加註解的線上工具還可以使用,記得之前我好像有做了幾個不同的版本,目的是將資料加上註解之後,以XML或RDF的格式輸出,我記得當初好像有要將資料輸出成RSS,但是不知道為什麼找不到這項功能,不知是偷懶沒做,還是忘記了。
 

 

CJY0503 發表在 痞客邦 留言(3) 人氣()

 
 
資料數位化到底是帶來好處還是壞處,有人曾說將資料做數位化之後,這些資料可以保存的更久。我覺得將紙張資訊變成電子檔案,不能使資訊保存的更久更完整,只能說變成數位化之後更容易散佈,因為數位化的資訊必須儲存在某種媒體之中,磁片、磁帶或者是光碟,而想要閱讀數位化的資訊就必須有這些硬體設備,試問如果你在10年前將資料做數位化並且將這些資料儲存起來,試問你會將資料存放在哪哩,硬碟中嗎?或許不會,因為你現在所使用的硬碟絕對不是10前的那一顆(512MB),而是容量倍增好幾倍的新硬碟(80~120GB),10前的你到底將資料存放在哪裡呢?或許你可能和我一樣存在5又1/4吋的大片磁碟片中(1.2MB),或者存在3又1/2吋的小張磁碟片中(1.44MB),如今這些資料已經拿不出來了,因為可以讀取這些資料的裝置慢慢的消失了,所以資訊變成數位化不一定能將資訊保存的更久更完整,反而是唐朝宋朝所留下的詩詞紙本,才將資訊完整原汁原味的保存下來。現在你可能利用VCD存放的的資料,或許使用DVD儲存你的數位內容,難保有一天有一個容量更大更好用的儲存媒體取代了VCD與DVD,使得你之前所存放的資料變成一堆沒用的垃圾。不只是儲存的媒體在變,存放資料的軟體也在變,或許你現在已經找不到軟體來開啟你以前所存放的數位內容了吧。
 
企業積極的推動資訊數位化電子化是有原因的,因為企業所造出來的文件都是有時效性的,與歷史文物或古董是不一樣的,所以將歷史資料或器具照相製作成數位資訊所帶來的效果只是方便這些資料短時間的散佈,並無法達到長久存的目的,但是製作成數位化的歷史資料或古董照片卻很容易將這些資料加值在其他的商品上。企業所造出來的文件大都不需要長久保存,一份契約或企劃書最多只要保存個3~5年就沒用了,雖然3~5年間有不少新的硬體被發表出來,但基本上存放的資訊應該都還能被讀取出來,而且目前已經是後PC(個人電腦)時代了,電腦的架構以及功能大致上不會有太大的變動,只是有許多的產品中會被加入PC的功能,而PC已經變成價格低廉的一般性設備,就和家中的電視與電話一樣,家家戶戶都有。

CJY0503 發表在 痞客邦 留言(3) 人氣()

 
 
 
在進入嵌入式系統之前,必須要懂得如何將裝置與電腦連線,一般來說,大部分都會透過RS232來與裝置建立連線,透過RS232傳送資料並做程式碼的偵錯。利用C撰寫出從RS232讀取到資料並不是一件太困難的事,透過CreateFile()這個函數能讓我們很快的與裝置建立連線,下面列出簡單的程式碼供大家參考。
 

CJY0503 發表在 痞客邦 留言(1) 人氣()

 
現在程式設計都需要一個方便的使用者介面,不管這個程式是在電腦上運行或者要在手機上運行,視窗設計都是必要的一件工作。Python有提供一些方便的方法讓程式設計者可以輕鬆的建造出視窗介面,例如利用BOA工具軟體讓你產生視窗的控制環境。在微軟的程式設計中,視窗事件的控制與處理也是一大學問,微軟的VB(Visual Basic)提供簡便的方法讓程式設計者建造他們想要的視覺畫面,簡化視窗的建置程序。VB(Visual  C++)也提供工具讓設計者能夠建造出他們心中想要的視窗畫面(MFC)。在JAVA方面也有方法(SWING)讓設計者快速的佈置視窗所需要的元件(JFC)。
 
QT是一個跨平台的視窗設計函式庫,它的使用在Linux、Unix、MAC、Windows平台上面,更可以利用這個圖形函式庫來建立手機上視窗畫面。透過QT的設計畫面可以讓設計者快速的建設需要的視窗畫面。這篇文章簡單的介紹如何在Windows上安裝QT。
 

CJY0503 發表在 痞客邦 留言(0) 人氣()

 
 
連續三天的元旦假期,我們全家人(爸爸、媽媽、弟弟、妹妹)一起到阿里山玩,但是不巧的是一大清早我們所要乘坐的交通工具發生了一點小故障,所以延後了一點時間才出發。那邊的天氣有點涼只有九度,但是因為一直都在運動,所以一點都不覺得冷,反而汗水一直從皮膚滲出。我們一家人在奮起湖的民宿中過夜,那間民宿的設備有點奇怪。我們住入這間民宿之後第一件事就是上廁所,一進入廁所之後發現一件怪事,就是馬桶蓋竟然無法打開,最後想了一些辦法讓馬桶蓋固定在打開的狀態,但是仍就不小心又會自動蓋上,最後我利用牙刷來固定馬桶蓋,才解決廁所的故障問題。關於熱水的使用,晚上有提供熱水,但是到了清晨就沒有熱水可以使用,所以要用熱水一定要在晚上使用。半夜睡到一半會感覺有點悶熱,根據我們的推測,這間民宿似乎到了半夜會自動偷偷的開啟暖氣。還有就是它的電源開關也有點奇怪,有些的開關似乎是失效了,按了老半天沒有反應。另外這間民宿的天花板也經過巧妙的設計,讓我的頭動不動就和天花板做親密接觸,撞了好多次,還好都沒有很嚴重。這間民宿的天花板竟然是斜的,從左邊往右邊斜,由裡面向外面斜,左邊的天花板比右邊高,裡面的天花板比外面高,而且有一部分的天花板比我的身高還低,所以讓我的頭常常撞到。
 
假期的第一天(12/30)因為交通工具發生問題,延後三個多小時才出發,所以到達奮起湖(1, 2)時,已經是黃昏了,我們只去逛一逛商店老街,並且到火車站附近閒晃了一下,並且吃了一頓晚餐,就回民宿(六福賓館)睡覺了。

CJY0503 發表在 痞客邦 留言(1) 人氣()