2012年10月13日 星期六

Deskpins教學應用,將視窗釘在最上層

最近為了教學的需要,想將軟體教學的畫面用打字的方式錄製,也是為了不想用聲音(不會有人想聽聲音的,而且看過很多大陸駭客教學內容大都以這種方式),所以想把word使用最上層顯示,找了一個工具,Deskpins,這個工具的中文化有點問題,很多防毒軟的都的報毒,所以還是使用英文的,下載位置在這
DeskPins 1.30 setup.exe:
https://gofile.me/25iiS/mURMkYsm

2012年10月12日 星期五

PhoneGap安裝教學

最近看一本PhoneGap教學的書,里面寫的真是…讓人看不懂,只好自己慢慢試,這本書藏的東西真多,留很多手,有很多並沒有寫出來,所以自己把安裝過程寫一下囉!
我的環境在Mac OSX mountain lion

  • 首先當然先安裝Xcode,直接進App Store安裝就可以了,安裝過程會有點久。
  • 執行Xcode,點選上方功能選單Xcode→preferences看到這個畫面,選Downloads,記得選Components,有個Command Line Tools,選取後install安裝。




  • 接下來執行終端機,這時鍵入git,應該能看到以下畫面

  • 進入你可以完全控制權限的目錄,執行以下指令
git clone git://github.com/phonegap/phonegap.git


  • 執行結果如下:

sh-3.2# git clone git://github.com/phonegap/phonegap.git
Cloning into 'phonegap'...
remote: Counting objects: 14017, done.
remote: Compressing objects: 100% (5051/5051), done.
remote: Total 14017 (delta 8566), reused 13077 (delta 7728)
Receiving objects: 100% (14017/14017), 256.00 MiB | 1.13 MiB/s, done.
Resolving deltas: 100% (8566/8566), done.

  • 再來執行 cd ./phonegap/lib/ios
  • 執行make,畫面如下


sh-3.2# make
Xcode.app: '/Applications/Xcode.app'
Using Developer folder: '/Applications/Xcode.app/Contents/Developer'

  • 這時執行xcode後,執行file→new→project,會有下面畫面,多了一個Cordova-base Application的icon,這時就代表已經安裝完了


  • 想試試看是否成功,可以選下一步建立一個專案,記得不要勾選Use Automatic Reference Counting
  • 執行Product→Build,這時xcode左邊會顯示一個三角形的警告,顯示www目錄找不到,依照它說的解決方式,先點左邊顯示專案資料夾(左邊像資料夾的圖案show the project navigator),將所建立的專案目錄下的www目錄自finder拉過來到專案名稱放開即可

  • 執行左上角的run(像play的東西)就會看到模擬器執行的結果了

其他的平台安裝方式可參考以下網站
http://www.netmagazine.com/tutorials/getting-started-phonegap

2012年9月25日 星期二

如何更改Synology Station php 上傳檔案大小


先以root登入synology,不然無法修改
vi修改 usr/syno/etc/php.ini
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 210M
upload_max_filesize = 200M
伺服器重開機
已可以上傳大檔

2012年9月24日 星期一

在synology nas中定期執行moodle crontab

1. Edit /etc/crontab (nano /etc/crontab)
2. 10 * * * * root wget -q -O /dev/null http://moodleIP address/moodle/admin/cron.php    //含義是每10分鐘執行一次cron
3. Restart crond service (synoservice --restart crond)
4. DONE!

2012年8月19日 星期日

OpenCV設定及測試

 #include <stdio.h>  
 #include <cv.h>  
 #include <highgui.h>  
 int main()  
 {  
      char filename[]="0.jpg"; // 想要取得的圖檔名稱,將其放在和專案同一資料夾中  
      IplImage *image; // IplImage利用 cvLoadImage()圖檔中的資料結構  
      image = cvLoadImage(filename,CV_LOAD_IMAGE_UNCHANGED); // 讀取影像的資料結構  
      if(!image){  
           printf("Error: Couldn't open the image file.\n");  
      }  
      cvShowImage("HelloWorld",image); // 函式使影像在視窗中顯示  
      cvWaitKey(0); // 函式使影像視窗停留   
      cvDestroyWindow("HelloWorld"); // 函式用來銷毀一個視窗  
      cvReleaseImage(&image); // 釋放IplImage資料結構  
   return EXIT_SUCCESS;  
 } 
使用OpenCV, C語言存取檔案的格式範例,在安裝OpenCV時要注意的是devc++要設定編譯器環境:
(1)下載 OpenCV-2.0.0a-win32.exe
(2)安裝OpenCV2.0在C:\OpenCV2.0
(3)在DEV 工具/編譯器選項/編譯器/編譯器設定組態
新增編譯器設定(綠色加號按鈕)並命名為"OpenCV2.0″
(4)在連結器命令列中加入以下命令(前面框號記得打勾)
-llibcxcore200 -llibcv200 -llibcvaux200 -llibhighgui200 -llibml200
(5)在DEV 工具/編譯器選項/目錄/二進位檔 加入:
C:\OpenCV2.0\bin
C:\Dev-Cpp\Bin
C:\Dev-Cpp\libexec\gcc\mingw32\3.4.2
(6)在DEV 工具/編譯器選項/目錄/函式庫 加入:
C:\OpenCV2.0\lib
C:\Dev-Cpp\lib
(7)在DEV 工具/編譯器選項/目錄/C引入檔 加入:
C:\OpenCV2.0\include\opencv
C:\Dev-Cpp\include
(8)在DEV 工具/編譯器選項/目錄/C++引入檔 加入:
C:\OpenCV2.0\include\opencv
C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include
C:\Dev-Cpp\include\c++\3.4.2\backward
C:\Dev-Cpp\include\c++\3.4.2\mingw32
C:\Dev-Cpp\include\c++\3.4.2
C:\Dev-Cpp\include
(9)在C:\OpenCV2.0\include\opencv中找到cxoperations.h檔
(10)找到檔中第66行部分程式碼如下
#else
#include
#if __GNUC__ >= 4
(11)將它改成如下程式碼並儲存
#else
#include
#if __GNUC__ >= 4 || __MINGW32__

2012年8月18日 星期六

linux embedded嵌入式系統初學

不是電子相關科系的,突然就鑽進了單晶片的世界,第一堂課老師就叫大家畫一個USB電子電路圖,要學的可多了,找到了一個講PIC單晶片的初學資料,怕忘了在那找的,就放這了。

剛才看到一個PIC的板子 不知道它跟51的區別 特此 去相關論壇上找到這篇文章,以求給跟我類似的人掃掃盲  高球可以飄過 (*^__^*) 嘻嘻……

前段時間,小弟閒逛,偶發現一論壇,一前輩講pic系列,講得那個通俗啊!估計識字的都能看的懂,好東西不敢獨享,拿出來與大家分享,未經作者同意擅自轉載,請作者諒解,不過既然前輩那能這麼無私,我這樣也不為過吧,呵呵! 

閒話少說,上菜了! 


單片機入門不難------談PIC系列(轉自礦石收音機論壇---嶗山) 


罈子裡的老兄小弟,如果你已經多次想進單片機之門而未入,如果你有很多空閒時間想打發,如果你玩收音機感到疲勞想換個口味,如果。。。 
那就聽小弟我白話白話,反正我們這些老大難也沒有什麼重要的事情做。。。。 

閒言少許,話說人間事物的學習,不外兩類:一類入門易,精通難比如礦石機,再比如練書法誰都會寫兩下,可寫好卻不是一朝一夕的事兒。另一類則入門難精通易,比如超外差收音機,學會需要各種放大、振蕩、反饋、混頻、中頻、統調等等,但是一旦你學會,做出一個高質量的收音機,確也不是難事。單片機屬於後者,所以無論如何,你得用些時間,學習一些新名詞並理解,甚至還得花一些小錢。但是,一旦你掌握,其樂趣也像收音機一樣,很有吸引力的。本故事說給一點也不懂計算機,甚至數字電路的引引道。一般入門應該有保障。 

改為:  本故事說給懂電工、電子、邏輯電路的老傢伙和半老傢伙,如果對電子一竅不通人講那我勸你也別瞎子點燈了,要是邊講基礎邊講pic這書就不知唱到何年何月啦。 

    單片機不同於收音機,收音機的任務最終就是聽好聲音一個,單片機可以做很多事情,要你來安排它的工作。安排它就先的認識它,熟悉它 
請看圖1 


這個8條腿的小螃蟹就是我們的第一頓飯,只要把它吃下去,以後的大餐就好辦了。 
第1、8條腿接電源 +5V  和 地線。頭兩條腿是螃蟹鉗子,好吃的很。 現在剩下了 6 條腿 
第2、3條腿 使用時外接一個晶振的東西  我們接一個 4 MHz的。 
第4條腿是復位腳,是一個信號輸入腳。單片機正常運行時接高電平。當有一個低電平脈衝輸入到這個腳時單片機就復位。所謂復位就是單片機內部所有的工作部件統統回到規定的狀態,程序也復位到頭一句上開始逐條運行。例如,你設計的一個報警鎖定的 LED紅燈亮後,當需要解除報警時,用一個按鈕給這個腳瞬時接地一下,相當於給它一個夫脈衝,系統就復位了,led燈就熄滅了,程序從頭開始。 

以上5個腳,幾乎所有單片機都有,包括世界上最複雜的,和世界比較簡單的單片機-----PIC12CE519 

輪到底幾條腿啦?奧是第5條腿,這條叫單片機的 I/O 腳。就是輸入輸出腳。你可通過程序動態地控制它作為輸入或輸出,作為輸出時可以程序控制它的輸出電平為高1或低0。所以,他的工作狀態有四種:輸入0,輸入1,輸出0,輸出1 

剩下的兩條腿和第5腳功能一個樣。 
原來編輯帖子是有時間限制的阿。也好,俺學乖了,先在記事本上編輯,在複製粘帖。 
歡迎各位捧場,在此不敢以講課回答問題的姿態出現,不過各位的問題我盡力而為。 

       上邊我們已經把8條腿消化掉了,其實我們要弄明白的也就3只腿,我們再簡單一些,先整明白兩條腿,即GP0,GP1.這兩條腿低級一點的用法,可以控制繼電器,LED燈,高級一些的用法可以進行I2C總線,RS232總線的通信,作為擴展輸入可以模擬出來A/D轉換器(6--7bit),可以測量一個電阻的粗略值。作為輸出也可以直接推動揚聲器奏出音樂。這是後話暫且不提。 

現在要控制使用這兩隻腿,我這個三腳貓功夫的說書的不得不講一下軟件了,要想講明白軟件又不得不涉及到單片機的內部結構。那位說啦,你可別提這軟件和結構了,以前俺就是讓它們打敗的,現在聽到這個心裡就打鼓。嘿嘿,不要緊,果真如你所說,那你就不妨跟著我再失敗一次, 反正嗎多一次失敗又不納稅,嘿嘿。不過你也要有思想準備,徹底弄明白是個漸進的過程。 

       要說這程序和單片機內部結構,還真是老大難,不過蟹黃蟹肉都可都在裡面。我現在要是給你說PIC單片機是哈佛結構的,51系列是馮-諾伊曼結構的,恐怕你要立馬扎走人了。所以我得用點心思不讓你溜號。 

       好在PIC系列的製造商(microchip 微芯公司 美國)理解我等苦衷,全部只有35條指令,而且有一些指令我們一般很少使用,常用的也就十幾句,用的時候查手冊,無需記憶。就算我們兩天學習一句,也就兩三個月時間,總比到老了還怕它們強啊。廢話少說先看下面的兩個例語: 

my_name006:           movlw  02h       '常數2進入w 
                              movwf  GPIO     'W 的數進入 寄存器GPIO 
          
這就是我們編的程序裡的兩個句子,也叫源程序。有以下特點 

每行只能寫一句話 
每句話由四部分組成: 

標號:  操作指令   操作數        '程序註釋 

下面我結合例子把這四部分解釋一下。 

第一部分 my_name006: 叫做標號,它是由字母或數字組成,由冒號結束。標號可有可無,比如第二句就沒有標號。 
第二部分movlw 叫做操作指令。它是必須有的,不能省略。PIC 系列的單片機共有 35 條指令。 
第三部分02h   叫做操作數。有的指令沒有操作數或者操作數是默認的,也不用寫。 
第四部分是程序註釋,必須以單引號開頭,主要作用是提醒和備忘。註釋也是可有可無。 

第二個例句中,省略了標號,當然註釋也可以省略。他的指令是movwf, 操作數是GPIO。操作數不一定是數字,也可能是一個由字母組成的字符串。 

      知道了語句格式以後,我們下面就學習一些常用語句。我們先把這兩個例句弄清楚。 

      這兩句話的作用是把 2 這個常數寫入到 GPIO 這個寄存器裡。 
      單片機裡有一些部件需要我們使用和操作,都是通過讀寫寄存器來實現的。每個部件都對應有操控它的寄存器,例如我們要控制使用的管腳GP0,GP1 這兩個管腳對應的寄存器就叫做GPIO。對GPIO寄存器讀操作,實際等效察看管腳電平的高低;對GPIO寄存器相應的位寫1操作,實際等校讓管腳輸出高電平。寫0,輸出低電平。 

每個寄存器可以儲存一個八位的二進制數。這八個位的每個位都有名稱,從左向右的名稱是: 
                                            左端第首位名稱叫D7, 
                                            左端第二位名稱叫D6, 
                                            左端第三位名稱叫D5, 
                                            左端第四位名稱叫D4, 
                                            左端第五位名稱叫D3, 
                                            左端第六位名稱叫D2, 
                                            左端第七位名稱叫D1, 
                                                 最後一位叫D0, 

而每一個位對應一個管腳的電平,例如當GPIO寄存器的D0位等於1時表示管腳GP0 的電平是高電平。D0位等於0時表示管腳GP0 的電平是低電平。常數2的八位二進製表示是「00000010」  所以,GPIO寄存器存放的8位2進制數的每個位的值以及管腳電平是: 
                                D7對 應於內部總線管腳的電平      D7=0  內部總線管腳輸出低電平              
                                D6對應於內部總線管腳的電平       D6=0  內部總線管腳輸出低電平 
                                D5對應於GP5 管腳的電平            D5=0   GP5 管腳輸出低電平 
                                D4對應於GP4 管腳的電平            D4=0   GP4 管腳輸出低電平 
                                D3對應於GP3 管腳的電平            D3=0   GP3 管腳輸出低電平 
                                D2對應於GP2 管腳的電平            D2=0   GP2 管腳輸出低電平 
                                D1對應於GP1 管腳的電平            D1=1   GP1 管腳輸出低電平      
                                D0對應於GP0 管腳的電平            D0=0   GP0 管腳輸出低電平 
GP0---GP5管腳我們可以從上一講的圖1硬件中查出所對應的管腳。d7 d6 對應的內部時鐘和數據總線我們現在暫且不要管它。以後本事大了在調_教它們。在我們的例句中,向GPIO寄存器寫入了2,常數2的八位二進製表示是「00000010」  因此如果此時GP0, Gp1等都已經被定義成輸出的話,那麼GP1輸出高電平(接LED燈亮),GP0 輸出低電平(所接led燈熄) 。 

       截止到現在,你已經學會如何控制管腳的電平高低了。儘管還有一些疑問,比如怎樣定義管腳為輸出腳(以後會說),我得說如果事先gp1,gp0這兩個管腳處於輸入狀態,這兩個例句無效,是控制不了電平的。 

      無論如何,這一會兒,你就學會了兩個指令,35條我看也沒啥難的。   
                                         
'------------------------------------------------------------------------------ 
                                           
再加深一下對寄存器的認識: 

要把一個常數存儲到,或者說寫到一個寄存器中,僅用一條指令是辦不到的,必須通過一個特殊的寄存器W,把數據倒過去. 這就應該使用到兩個語句。 

movlw   02H    指令的意思是把一個常數存入特殊寄存器W, 這個常數是3,後面的H是表示十六進制 
movwf   GPIO   指令的意思是把特殊寄存器W的數值存入寄存器. 這個寄存器的名稱是 GPIO 

這裡涉及到兩個概念,常數和寄存器. 
常數好說,比如說十進制數 35,  26 但要注意,在單片機系統裡我們一般不用十進制,而使用十六進制. 有關數制轉換方面的知識,是計算機的基礎,必須會熟練地在二進制、十六進制、十進制之間轉換,我就不羅索了. 
寄存器也叫單片機的內存。 
一個寄存器可以存儲的數值範圍是0--255,用十六進製表示就是 0---FFH.用二進製表示就是00000000----11111111. 
以後要養成習慣用十六進製表示數.  

那麼,一個單片機裡有多少個這樣的寄存器哩,pic12ce512里面有1024個這樣的寄存器可以供你使用,為了使用方便生產商已經給它們編上了號碼,第一號碼是000H,往下依照次序為 001H,002H........3FFH.(怎麼樣,開始用十六進制說事了吧,如果你不熟悉熟制轉換趕緊補課來得及) 

有了編號就像我們居住的房間有了房間號碼,使用就方便的多了.房間號碼在郵政行業叫地址,因此我們稱這些號碼叫做寄存器地址,或稱地址數  例如 名稱為 GPIO 的寄存器,他的地址,或地址數是  06H 。所以我們的兩個例句完全等同於: 

my_name006:           movlw  02h      '常數2進入w 
                              movwf  06H      'W 的數進入 寄存器GPIO 
'----------------------------------------- 
有兩個寄存器比較特殊,它們沒有地址,一個名字叫做 W,  另一個叫做 TRIS. 所以他們兩個在存儲數據的時候比較快,一個指令就可以解決問題,例如:    movlw   03H    一條指令就把常數3寫入到W寄存器了。關於TRIS寄存器,我們以後用到它再說. 
除了他們兩個以外的其他所有寄存器,在寫入數據時一般都要用兩條指令進行。 

今天就扯到這裡,雖然只有兩個指令,但主要目的是要同學們接觸一下指令,建立寄存器的概念以及他們同硬件部件的聯繫。增強學習的信心。能有這些體會,這一節就算過關了。 
           隨著以後的深入,你會發現小小單片機裡面是一個大世界,興趣也由此而生。

2012年1月23日 星期一

B-mobile日本北海道使用經驗

2012.1.20-14使用b-mobile的SIM卡在北海道上網,速度實在慢到不行,連在市區也是一樣,最多只能用來在FB打卡,實測速度在0.6K~3K/秒,那來的300K限制,同團的今天訂了一天吃到飽的,也是一樣,慢慢慢,日本不是很進步嗎?誰說日本網路便宜又快了?