2008年12月20日 星期六

無薪假 無心假

12/16 公司連續對全體員工開了兩槍...

1. 取消RD加班津貼..~好大的一槍
2. 無薪假實施 (約等於減薪15-20%)

而且兩封EMail公告發出間隔時間不到半小時~~~
真是重創所有員工~
看來我們應該是手機廠第一個實施這項措施的~唉

福利都沒比人家先 減薪竟然要搶先其他公司...

然後..用"共體時艱"這項字眼告訴大家
如果沒自己請無薪假(公告上美化名稱為"行政假") 公司就直接記曠職(不管你有沒有到公司)
這樣子 可以告嗎???

觀察了公司公告這兩項措施之後 幾乎每位RD都工作的很"無心"~~
希望這景氣不好的低潮趕緊過掉....

2008年12月17日 星期三

[BCB] 資料庫備份/還原程式

最近這套應用程式 加上其資料庫備份及還原的功能

備份還蠻容易做的, 直接將目前的 mdb檔案 複製到某個目錄下即可, 這部分我做成當使用者把form關掉的時候 自動備份

還原我遇到了一些問題, ADOConnection 這個元件, 我執行了 Close()這個函式之後, 資料庫依然被lock住, 最後搞了一個很賤的方法, 寫了另外一隻批次檔 當使用者選好他要還原的資料庫檔案
我會呼叫 這隻批次檔, 批次檔的內容是:
1. 將原本的應用程式關掉(這樣子就沒有資料庫被lock的問題)
2. 自動備份目前的資料庫到某個備份目錄下
3. 將使用者選的資料庫檔案替換掉目前使用的資料庫檔案
4. 重開應用程式

這裡遇到一個問題 怎麼關掉原本呼叫批次檔的這隻應用程式呢?
我找到一個shell指令, tasklist 以及 taskkill
tasklist 是顯示目前電腦中正在執行的程式
taskkill 則是讓他關掉, taskkill /f /im "應用程式名稱"

這樣子就完成了~這其實是無奈的解法(因為資料庫檔案一直被Lock住)

2008年12月15日 星期一

[BCB] 取得目前執行檔所在路徑

在BCB中取得目前執行檔所在路徑很簡單
只要一行 ExtractFilePath(Application->ExeName);

如果要在之後加一個資料夾 只要

AnsiString szExecPath;
AnsiString szBackupFolderPath;

szBackupFolderPath= szExecPath + "BackUpFolder\\";
CreaterDir(szBackupFolderPath.c_str());
這樣子就會在執行檔目錄下建立一個 "BackUpFolder" 的目錄囉

[BCB][WIN32] 檔案處理

這次終於把朋友請我客製化的軟體修改好

其中搞定了連接來電顯示裝置並得到來電號碼且跳至訂購單建立的功能以及自動建立一筆未存在資料庫的新客戶資料, 自動備份功能

而關於自動備份功能 就是當程式開啟以及關閉的時候, 將資料庫檔案拷貝到另外的資料夾而已

以下紀錄一下 我用的Win32API
資料夾建立API: CreateDir(填目錄名稱, ex: "\BKDB");
檔案拷貝API: CopyFile("來源檔名", "目的檔名", (FALSE: 強制覆蓋同檔名檔案, TRUE則否));

還有 在BCB去得到windows msg方法

1. 先於 header file 加入要聽取的號碼
#define WM_USBLINEMSG (WM_USER + 180)

2. 在 class definition的地方加入
void __fastcall RecvDeviceMsg(TMessage& Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_USBLINEMSG, TMessage, RecvDeviceMsg)
END_MESSAGE_MAP(TForm)
3. 將code implement到 cpp檔裡頭
void __fastcall TfmMain::RecvDeviceMsg(TMessage& Message)
{
int nMsg = LOWORD(Message.WParam);
int dwChannel = HIWORD(Message.WParam);
int intSearchRes=0;

pcMain->ActivePage = tsAddRecord;

switch(nMsg)
{
....
}
TForm::Dispatch(&Message);
}

這樣子就完成啦~

至於載入dll的方式 跟在vc上一樣 都是用 Win32 API, 就 LoadLibrary and FreeLibrary
在此紀錄一下

2008年11月11日 星期二

工作紀錄:

11/11 今天將fat32 function porting 到 EBOOT下, sdmmc 的控制以及傳輸目前是空的
download function 大致上是8成了, 只差 bin格式的decoder還沒寫而已

11/12 Todo: .bin decoder 寫完

花了一天trace DownloadImage function

11/10 花了一天trace整個原本的EBOOT download流程以及使用EVM來看下載流程中的log檔

當EVM開機後, 用 Samsung 6410附的 Dnw.exe, connect to uart, 跳出一個download選單, 這時候先下載EBOOT.nb0, 讓mainmenu可以出現 這時候選 6 (NAND writable) 然後用他內附的 usb driver 去下載 flash.bin (by UBoot, means usb boot).

而看程式碼的過程中, main function 會先讓blcommon呼叫一些OEM該要implement的function (OEM_開頭的), 過程簡單來說 這pc端下載軟體會先將 flash.bin 下載到SDRAM中, 然後在EBOOT中
解開 bin 格式的(hdr: B00FF\x0A) 然後在一段一段(record) 寫到 nand中(by block)

DownloadImage@blcommon.c 就是在解開bin格式檔案 一段一段寫到SDRAM中
OEM_Launch@main.c 就是將這些解開來的raw檔案 一個一個 block寫到NAND上

簡化來說就這樣子

2008年11月7日 星期五

BootPart library of WINCE

Bootpart 這套在wince public底下的full source code library
功能是能夠利用底下 FMD driver 來做 partition 的規畫 將FMD physical的nand block讀寫
轉換成 logical 的 partition 讀寫對應.
看來我們要先看熟這套了 因為之後的 partition 規畫會用這套library來做

重要的 function 如下

BP_Init
BP_OpenPartition
BP_ReadData
BP_SetDataPointer
BP_WriteData

這應該是我們會用到的..function 詳細用法請見 MSDN吧