2008年1月16日 星期三

[C#] 跨執行緒作業無效: 存取控制項 'xxx' 時所使用的執行緒與建立控制項的執行緒不同

    .NET 2005 的 Thread 比較嚴格  不能隨意存取其他 Thread 的資料
    看網路上找到的資料聽說 .NET 2003 是 ok 的


      其錯誤訊息:


        跨執行緒作業無效: 存取控制項 'xxx' 時所使用的執行緒與建立
        控制項的執行緒不同。


    至於用來解決的方式有  BackgroundWorker  等相關技術
    但由於我的目的是要變動 winform 裡頭的東西  不太ok
    最後摸到一個方法:


        http://www.purecs.net/thread/topic736_1.aspx


    簡敘:

        Step 1:


          在 form 中請多添加以下這個 member
          private delegate void InvokeUpdateState(string state); // 依需求


        Step 2:


          要透過 Thread 做動作的東西
          如 event handler 會 call 到的那支 function
          對那支 function 做一些調整


          ex:


          private void show( string k ){
             if( this.form元件.InvokeRequired ){
               this.Invoke(
                 new InvokeUpdateState(this.show) , new object[]{k}
               );
             }else{  // 原先寫好動作的部分


             }
          }
          這樣就沒啥問題了


2008年1月7日 星期一

六招 gdb

    我到現在還只會用 printf  真弱啊  XD  但這招陪伴我解決了大大小小的作業
    雖然 OS 作業有做過 gdb kernel  但其實我不太會去改 kernel  就又忘光了
    今天看 Kudo 稍微操作  還不賴
    亦回想起嵌入式課程的介紹  有些呼應  越來越懂 gdb 的精神了

    記一些簡單的指令就夠用一輩子了

        1.# gcc -g test.c   這應該是加入 debug 資訊
        2.# gdb a.out       出錯時就可以用了
        3.(gdb) run         就給它 run 到出錯處
        4.(gdb) br linenum  就是設中斷點
        5.(gdb) display xx  顯示 xx 變數之值
        6.(gdb) n           往下執行

    這六招就很夠用了哩!!
    以前都沒用過 -g   而修課時又很恍神  今天看大神用才終於融會貫通啊
    簡單地說  就是先按 run 會跑到出錯的地方  因為有 debug 資訊
    所以會顯示在第幾行出錯  此時就可以設中斷點  除此之外還可以設定要顯示的變數
    接下來再 run 一次  就是重跑囉  就會停在中斷點  就可以看到資訊啦

[ESD] Cygwin & SkyEye 安裝紀錄

    原由簡介:
        1.原先課堂上所給的範例都是用 ARM Developer Suite (ADS) 來編譯環境
          但不知為啥  想編 interrupt 都是失敗的
          隨後問了修課的同學  他跑光碟的範例時
          因為 ADS 出現錯誤訊息所以遲遲沒用  那個訊息如下
                            Missing END directive at end of file
            解決方式(二選一):
                a.其實只要點那個錯誤訊息  就會開啟指定的檔案
                  然後共有三個檔會顯示這個錯誤  當三個檔皆被打開就可以編過了
                b.修改 2410init.s 將
                        GET option.a        =>  GET option.o
                        GET memcfg.a        =>  GET memcfg.o
                        GET 2410addr.a      =>  GET 2410addr.o
                  並記得將檔案也改成 *.o 囉
          而他也告訴我其他 lab 有人也用 ADS 但其 interrupt 效果一樣沒有
          所以我打算使用 cygwin 了

        2.使用 SkyEye 是很特別的理由  最主要的原因是沒有板子  orz
          然後他可以模擬一些東西  我還在嘗試中  :P

    Step 1: 安裝 cygwin http://www.cygwin.com/
            http://www.cygwin.com/setup.exe
            然後擔心會少裝東西的話  請全選
            結果我發現灌完共 3.34 GB (有含 skyeye & arm-elf-gcc )

    Step 2: 安裝 arm-elf-gcc
            由於光碟有附  就直接擺到恰當的位置
            將 arm-elf-tools-cygwin.tar.gz 擺至 X:\cygwin\usr\local 下
            # cd /usr/local
            # tar –zxvf arm-elf-tools-cygwin.tar.gz
            即安裝完成

    Step 3: 安裝 SkyEye http://www.skyeye.org/
            下載位置 http://gro.clinux.org/projects/skyeye/ 請選 skyeye 類別
            接著把下載到的東西擺到恰當的位置
            將 skyeye_1_2_3_Rel.tar.bz2 擺至 x:\cygwin\home\user\
            # tar -xvf skyeye_1_2_3_Rel.tar.bz2
            # cd skyeye_1_2_3_Rel
            # make
            這樣應該就搞定了
            記得 skyeye 擺在 ~\skyeye_1_2_3_Rel\binary\skyeye.exe

    這樣要的工具都有了

2008年1月6日 星期日

生活的角度

陽光很自然地灑落在寢室一角,望望窗,風淡雲輕。

人,很容易因當下的壓力而縮小了自我的眼光,人,一定需要曬曬太陽!看看那光彩的世界,儘管政局散亂,但總會有那一角,默默成長。這是我搭車返家數次的心得,無論發生什麼困難事,每當我看到慢慢成長的街景、車站,便振奮自己,告訴自己,世界一直變好,幹嘛也不把自己的心情變好呢!

持正向的心,面對生活,自己的生活也會越變越好的。

2008年1月5日 星期六

[Windows] Office 2003 整合 SP3

  Step 1:


    將 Office 2003 正版光碟之映像檔擺在 F: 槽


  Step 2:


    cmd 0:


        F:setup.exe /a


    此時會問你序號  我就順便給了他
    並且安裝在 D:\Office_2003_mix\ 中


  Step 3:


    下載 Office 2003 SP3 並使用解壓縮軟體將之打開
    解縮縮到 D:\Office_2003_mix\sp3


  Step 4:


    開始進行整合


    cmd 1:

        msiexec /p d:\Office_2003_mix\sp3\MAINSP3.msp /a
        d:\Office_2003_mix\PRO11.MSI shortfilenames=true /qb
        (上兩列要和成一列使用)


    cmd 2:


        msiexec /p d:\Office_2003_mix\sp3\OWC11SP3.msp /a
        d:\Office_2003_mix\OWC11.MSI shortfilenames=true /qb
        (上兩列要和成一列使用)


    經過上述即完成整合
    可以將 D:\Office_2003_mix\sp3 此目錄刪除


  Step 5:


    此時 D:\Office_2003_mix 即為 Office 2003 with SP3
    目錄大小約 720 MB
    所以  我就只是簡單地壓縮起來  用7z的zip壓縮為 388 MB
    未來要再製成 DVD 安裝片再說吧  :P