Johnny talk Johnny way


自己動手做數位像框(前提)
2009, 五月 5, 星期二, 6:44 下午
分類: DIY, Linux Device | 標籤: , , , , , , , ,

上回在我弟家裏看到他買的Wifi數位像框,很驚訝只花了NTD 1800,我也對數位像框蠻有興趣的,但價格總是讓我卻步,後來看到家裡的老NB,裝了不太好搞的FreeNAS之後就擺著沒再用了,卻突然想到NB跟數位像框有什麼差別?!沒錯~那就把NB改成數位像框吧!!嘿嘿嘿~

上次有篇Frame buffer的介紹文章,沒想到還沒寫到程式的部份,就已經有應用了…(拍謝)

在做之前先想想看要準備那些東西:
0. 一開始當然先拜一下股溝大神,沒想到還真有不少人這樣做,只不過台灣似乎還看不到相關的文章,國外有看到用Windows跟Linux,因為我手上那台古董NB只有256MB的記憶體,我看我還是老老實實的用Linux好了.老實說, 國外大部分並沒有提到程式的部份,都是外觀的作業,不過程式牽扯不多,就自己想辦法了!

1. Linux套件:當然是越小越好, 最好的狀況就只要有Kernel跟基本的命令跟基本的程式就可以了,可是我是很怕麻煩的人,目前還是先採用有X環境好了;那到底是哪一套呢?Ubuntu的安裝友善程度可說是Linux的奇葩,當然不是只有指安裝步驟,連硬體辨識都很優呢!可是Ubuntu還是太大了,別擔心!Ubuntu還有發行輕量的版本XuBuntu, 嗯!以前有在這古董安裝過, run起來的速度還算可以,所以作業系統就暫定是Xubuntu.

2.播放軟體:開完機,當然就自動開始播放照片了,所以要找一套可以在Frame buffer上跑的照片播放軟體, 好在有找到兩套,如下
fbvfbida, fbv最新版本到2004/9/7 version 1.0b, fbida是到2008/6/9 version 2.07,都下載來看看吧!

嗯,這下最基本的功能應該可以達到, 讓我們開始動手做囉~



opendir讀取目錄裡的檔案清單
2009, 四月 22, 星期三, 3:10 下午
分類: C Language | 標籤: , , , , , , ,

其實跟讀取檔案內容差不多, 一開始想用ls輸出檔案,再從檔案中來取得檔案清單,但是必須有可以使用空間的先決條件,如果用popen也覺得不太安全(在thread的狀況下使用),後來找到有現成的system call可以用,就是opendirreaddir,
還蠻簡單的, 請看下面的範例程式囉~


#include
#include

main(int argc, char **argv)
{
struct dirent *entry;

DIR *dh = opendir(path);

while ((entry = readdir(dh)) != NULL) {
printf("%s\n", entry->d_name);
}

closedir(dh);
}



Linux Framebuffer … Action!
2009, 四月 10, 星期五, 1:39 上午
分類: Linux Device | 標籤: , ,

Frame buffer是一個顯示記憶空間,從試驗中可以直接在指定的位置填入RGB數值,就可以改變螢幕畫面上的一個點;簡單一些,可以下cat命令,把Frame buffer的內容Dump出來,這樣等於是把畫面剪貼下來一樣,若再把畫面Dump回Frame buffer,剛剛的畫面又會回去,很直覺的操作,中間不需要透過複雜的轉換,後面我們就來認識他吧!

一般套裝Linux,Kernel似乎預設就有開啟Frame buffer,所以只要在Loader的參數加上vga mdoe就可以在Console開啟Frame buffer,不過開啟後Frame buffer的解析度跟Color bit就已經決定,不可動態更改。

在loader的選單中加入VESA mode

title Linux
root(hd0,0)
kernel .......................................... vga=792
initrd ...

可以參考的模式如下表

Bits 640×480 800×600 1024×768 1280×1024 1600×1200
8 769 771 773 775 796
16 785 788 791 794 798
32 786 789 792 795 799

開機後,看到企鵝就代表成功啟動Frame buffer囉!



strtok()
2009, 四月 5, 星期日, 5:13 下午
分類: C Language | 標籤: , , ,

以前用ASP在寫購物車的時候會用的split這樣的Func call來解析購物車裡面的內容,覺得這是個很好用的字串工具,現在在寫C的時候也會用到一些文字的設定檔的狀況,不知道有strtok()的狀況下,就是ㄧ個字元ㄧ個字元慢慢判斷,昨天在查CGI Session程式的時候,看到使用了這個System Call,第一個感覺是又驚又喜。

好吧!讓我們來認識strtok()

原型:

#include <string.h>

char *strtok(char *s, const char *delim);

第一個參數s所帶入的是要被切割的字串,

第二個參數delim(定界線)也就是分界的依據字元,

舉個實例:

字串 str=”Name=Johnny”;

strtok(str, “=”);

return回來的字串point會是”Name”

那要如何取出下ㄧ個字節”Johnny”的話呢?

strtok(NULL, “=”);

return回來的就是”Johnny”了!

很奇怪, 為什麼不用再傳入字串, 反而是NULL呢?

因為第一次的字串已經被系統暫存到記憶體了,

如果繼續取下ㄧ個字節呢?

return回來的會是NULL喔!

所以可以利用NULL來辨識字串是否已經結束。

千萬要記得必須連續使用喔!



2007 Happy New Year!!
2007, 一月 3, 星期三, 11:55 下午
分類: C Language, 攝影 | 標籤: , ,

  很久沒有在外面跨年了,因為同事提議到101跨年,心頭一閃而過的是攝影,打定主意一定要去101,前一天爬了些文章,都說道要提早去卡好位,我就是懶,也不願意在那乾等七八個小時甚至十幾個小時,所以晚上六點到了台北,約了舊同事Donny一同吃飯喝咖啡(咖啡好喝!),直到九點才前往國父紀念館,手機已經開始成為廢物了,怎麼撥都撥不通了,就這樣沒有目的地的開始在信義區遊牧中…
  第一張照片是在國父紀念館拍的,正好有人正在放小型煙火,就構成了這樣的畫面。

  移動到信義誠品前面的路上,道路已被民眾完全的覆蓋,我站在大馬路上中間,被大樓華麗的霓虹吸引,突然好想天天看到這樣的景象。

  好不容易穿過了人牆,在旁邊留下了像白晝似的101大樓。
  3…2..1…Happy new year!! 101的煙火為2006年劃下完美句點,為2007年起了個美麗的揭幕。
煙…怎麼都是煙…|||
  不得不承認,這是一次失敗的攝影,面對風向,最後只照到一堆煙霧…,我看明年還是去參加Party算了!
  這次算是個經驗,風向判斷是粉重要的,若選錯位置,就只有等一年後的機會了;煙火近拍與遠拍的結果應該是有差別的,近拍似乎比較適合用錄影方式,真要攝影,那建議光圈不要開太大,近拍煙火反而會太亮,至於快門大約一到兩秒就可以了,因為101的煙火太過集中,太久反而只會照到一團亮光,就像是101火把似的…
  近拍適合的地點有國父紀念館、誠品信義店、A9館、信義路五段跟松勤街都很近,誠品與A9附近人算多的了,若能到附近大樓樓頂也很棒,不過要需要一些門道才有辦法上去;至於遠拍,南邊的象山虎山是一定少不了的,往北似乎只有大樓一途,若手腳俐落,快速道路或許也是好地點,不過安全要注意,可以研究一下google earth應該也會有些幫助。




Follow

Get every new post delivered to your Inbox.