巧遇鬥牛犬

今天有幸,女友的鄰居寄住了一隻鬥牛犬,

剛好我有帶相機來,就刷刷刷地拍了好幾張照片囉~

IMG_3773.jpg

IMG_3775.jpg

IMG_3806.jpg

IMG_3811.jpg

IMG_3821.jpg

IMG_3823.jpg

IMG_3825.jpg

IMG_3826.jpg

IMG_3827.jpg

IMG_3830.jpg

IMG_3831.jpg

IMG_3765.jpg

IMG_3768.jpg

IMG_3770.jpg

 

[自動控制] RS232 同步與非同步作法

win32api所提供的serial port讀寫方式有分兩種
同步方式: 讀夠了指定的字元才會返回(執行緒不會先返回去做其他工作)
非同步方式: ReadFile/WriteFile函式被呼叫之後,執行緒會先返回,win32api自動幫你新增一個執行緒在背景做IO工作,你必須去檢查OVERLAPPED結構的hEvent物件是否已被觸發,才知道背景IO工作是否已經結束

標準做法是先用WaitForSingleObject去檢查hEvent物件,如果觸發了,才使用GetOverlappedResult去檢查執行的結果(IO工作結束後有很多種結果,讀取到的字元可能介於0~N個你指定的字元,可能是順利讀完之後返回或是因為timeout被迫先返回而實際讀取字元=0或是<N)

win32做IO的方式(serial port/檔案讀寫/和其他IO都適用)會受到timeout的影響,否則同步方式很容易會鎖死,如果是在XP系統,逾時機制的預設值應該都是0,也就是不使用timeout機制
你在開啟通訊埠使用CreateFile函式的時候並沒有指定要用overlapped非同步方式去執行,我也沒看到你有去設定timeout值,所以你的IO執行緒是以同步方式在跑,overlapped結構和設定等等動作是白做的,因為ReadFile根本不會去使用

因此你的程式應該是會鎖死住,一直等到ReadFile讀夠了256個bytes才會返回…,我建議你要把一些事情做好,比較容易debug

1. 開啟通訊埠之後,把UART晶片的緩衝區一律清除掉,否則程式上一次執行所傳送的資料仍然會在緩衝區裡面等著被讀取(至系統記憶體內),事實上一般白牌的UART晶片的接收緩衝區大約是16到256個bytes,很容易就被塞暴,因此windows事實上在背後幫你提早接收了這些資料,並自行保管,等到你去讀取serial port的時候,它就直接把資料給你(系統記憶體的複製動作),所以你會發現寫入serial port返回的時間跟baudrate以及字數有相關,但是讀取serial port卻是””瞬間””完成,即使你的baudrate很低…我把這個稱之為windows所提供的””軟體緩衝區””,實測結果是這個軟體緩衝區可以放超過1MB以上的資料(雖然被灌暴的時候,win32API函式有檢查overrun的事件和機制,也可以警告你,但是資料仍然被存放入軟體緩衝區裡面,一個byte都沒少也不會被丟掉),所以開啟/關閉通訊埠的動作要確實,該清空/reset的動作都要做,不然改過的新程式碼去讀取軟體緩衝區裡面的舊資料,改對了還是可能產生錯誤結果

2. 因為win32api提供了timeout返回的機制,所以你可以沒事就去讀取看看,大不了就是沒資料可讀而已,這種方式特別適合資料固定在流動,但是資料量不定的情況(而且最新資料可以取代舊資料),另一種方式是先檢查接收緩衝區之後,知道了有無字元和實際數量,然後才去做讀取動作,這種方式如果出了問題比較好debug

[食記] 嘉義市民雄鄉 松林庭園咖啡精緻餐飲

上次到這裡吃飯時,應該是快要兩年前的事,

陸續到訪曾經走過的景點,漸漸更新了內心深處的記憶,

開心的是,更新之後留下來的,都是美好的記憶。

 

位於嘉義縣民雄鄉,民雄火車站附近的松林庭園咖啡精緻餐飲庭園咖啡精緻餐飲,是就讀於中正大學時,常聽到同學提到的中高階餐飲店,

因為是中高階餐飲店,所以我直到畢業前後那陣子,才敢來這裡享用看看。

 IMG_3715.jpg

結果發現…其實價位並不會很高啊

餐點還蠻好吃的,店內的氣氛也很不錯,屬木製裝潢的風格,

氣氛很舒服,隔音也很不錯,

不會像一些簡餐店的隔音不太好,用起餐來心浮氣燥。

 

門口有一個小徑

IMG_3670.jpg

 

裡面充滿了中國風的木造建築氣息,很舒服,

IMG_3712.jpg

IMG_3707.jpg

等了一下子,我們的菜就上桌啦~ 好大一份雞腿!

IMG_3693.jpg

 

小菜三碟

IMG_3694.jpg

涼拌

IMG_3690.jpg

IMG_3691.jpg

餐後甜點

IMG_3697.jpg

 

電話:05-2060355

地址:嘉義縣民雄鄉寮頂村民權路42號

地圖:


檢視較大的地圖

送給我們的第一本紀念書 – 黑豬的日記

緣起:

拍攝了超過 50GB 的照片後,實際上沖洗出來的,是少之又少,

我深知數位資料的風險性,但每張照片都洗出來要耗用大量的金錢,即使是精挑細選,也要耗費大量的精神與金錢,

所以,我這次打算先試挑了一些照片出來出來洗,寫寫文字附於照片之下,當作記錄。

然後,我想起了先前看到的 -「相片書」的概念。

 

經過了一些挑選,包括:

①印刷品質

②編排介面的方便性

③價錢

④尺寸

⑤評價

我選擇了點點印(TinTint)。

 

花了不少精神,終於完成了自己的第一本書,等待一些時間後,它終於寄到我手上了,所以就寫下這篇開箱文。

 

精美的防震包裝

IMG_5179.jpg

裡面放了一層防震的泡泡袋

IMG_5182.jpg

發票及清單

IMG_5183.jpg

確定是我編的書

IMG_5184.jpg

雖然我訂的是平裝本,它的包裝還算是蠻不錯的。

IMG_5187.jpg

開~箱!

IMG_5190.jpg

哦! 乍看之下質感真好!

IMG_5192.jpg

我的攝影集以透明塑膠袋包裝起來,看起來質感很不錯

IMG_5193.jpg

拿在手上,好像…以前在買的 CD!

IMG_5201.jpg

拿手邊拿的到的貼利康金絲膏當比例尺XD..

當初選定這個尺寸,就是怕印刷出來太小本的話,照片會很小,也沒有地方塞文字,

太大本(像A4)那麼大的話,又會很像笨重的 Ipad,感覺很蠢-_-,

看來當初選的是正確的。

IMG_5202.jpg

背面印上 TinTint 的標誌,可惜這裡沒辦法自由選擇放置的圖示。

IMG_5203.jpg

看一下內頁,印刷很美,沒有看到印刷黑點,相當細緻,

難怪編輯的介面上,幾乎每張都提醒我,照片的解析度太低。

 

結論:很滿意!

 

Borland C++ – Project Options 無法開啟,顯示記憶體錯誤

Problem:Borland C++ – Project Options 無法開啟,顯示記憶體錯誤

原因:Windows DEP 系統服務

Solution:

控制台→系統→進階→「效能」下的「設定」鈕→

「資料執行防止」→選擇「為所有的 Windows 程式和服務開啟 DEP,除了我選擇的這些」→

「新增」按鈕→選擇 Borland C++ IDE 的應用程式路徑。

 

Reference:http://pcsupport.about.com/od/fixtheproblem/ht/depexplorerexe.htm