顯示具有 工程軟體 標籤的文章。 顯示所有文章
顯示具有 工程軟體 標籤的文章。 顯示所有文章

2013年4月20日 星期六

Matlab 替代方案 及 數值運算 軟體

Octave

http://alternativeto.net/software/octave/
http://www.gnu.org/software/octave/

  • 數值計算與繪圖,其語法與 Matlab 幾乎相同
    另外亦可將程式寫成指令稿(script)對資料進行批次處理。

(...繼續閱讀.../...CONTINUE...)

2009年3月11日 星期三

Cygwin 習作 ---- 編譯 DrawTiming

你應該也有這種經驗, 想找某方面的軟體, 尋尋覓覓尋尋覓覓的結果, 卻發現怎麼就只有 Linux 版本 ..., 這時候你怎麼辦? 會想動手把它『移植』到 Windows 嗎?

例如: 有機會和 Evernote 或 OneNote 互補的 BasKet Note Pads, 讓我差點想把 andLinuxcoLinux 架起來....。而最近找到『畫時序圖的免費工具 DrawTiming, 就讓我安裝了第一次使用的 Cygwin 來編譯執行檔, 最後又換成 MSYS + MinGW ...

. 

Cygwin 與 MinGW 的不同

Cygwin 與 MinGW 有什麼不同? 我的看法是: 比較複雜, 或是使用到較多外部函式庫的程式, 適合使用 Cygwin; 而比較單純, 沒有使用到外部函式庫, 而且又希望很容易分享出去的程式, 則適合使用 MinGW

其他說明可以參考 :

Cygwin ... 透過 ... Cygwin1.dll ... 建立一個系統呼叫轉換層,將原先 unix 世界裡的 system call 呼叫,... 映對到微軟視窗作業系統的系統呼叫,... 在 Windows 底下模擬出一個 unix 平台來

MinGW ... 將 gnu 這個 open source, free 的開發工具移植到微軟視窗平台,他直接產生出來的PC視窗平台機器碼,

MinGW 是取 Minimalist GNU for Windows 計劃之意,其目標為提供一個可在 Win32 平台上開發 Win32 native code 的 GNU GCC tools ,而非提供 Unix 程式移植到 Win32 平台之用,此即為其 Minimalist 之意。... 在 MinGW 中,有提供一套最小化的 unix shell 擬似執行環境,稱為 MSYS (Minimal SYStem)
... 如果是打算將原本在unix 環境下的程式移植到win32 的使用者,也不建議用這套工具, Cygwin 更合適。

簡單的說,cygwin在windows上提供了一個像linux (Linux-like)的環境,可以讓使用者在windows上執行linux的程式。

嚴格地說, cygwin 是模擬了 GNU 的環境, 而不是 linux 的環境,藉著 cygwin 的函式庫(library), 在 Win32 API 環境上提供了像 linux 般的API 環境. 利用 Cygwin, 你可以:

  • 將 linux 上的程式移植到 Windows , 而不必做重大的修改,只需將原始碼拿來作 configure 與 make 就好了。
  • 使用常用的 linux 工具程式,如grep, sed, awk等。
  • 撰寫 Win32 native console 或是 GUI 應用程式。

.

下載與安裝 Cygwin

  1. 連至 www.cygwin.com 下載 setup.exe
  2. 執行 setup.exe , 選取Download from Internet
    1. 選取距離自己最近的下載點
    2. 選取所需套件 // 建議全選devel, lib等分類的所有套件
  3. 執行 setup.exe , 選取Install from Local directory安裝套件 //最好選取 All user
    1. 選取所有套件
  4. 執行桌面上的 Cygwin 的 icon 圖示即可執行此一 Cygwin 環境。// 視窗大小可由icon 圖示右點按 選取調整字型 及佈置

step by step 可參考 http://linux.tnc.edu.tw/techdoc/shell/x52.html

.

例如, DrawTiming 官網的 安裝說明 提到已經在 FreeBSD, Linux, 和 Cygwin 底下測試過, 另外在 編譯成 Cygwin 版本的注意事項 又說到需要這些函式庫: ImageMagick, libMagick-devel, libbz2-devel, gcc-g++, make, xorg-x11-devel, ghostscript-base, 所以我裝 Cygwin 的步驟就是 :

  • 先下載 572K 的 Cygwin setup.exe,
  • 執行 setup.exe, 選『下載但不安裝』 (Download Without Installing)
  • 指定下載檔案到本機的存放位置
  • ... 選下載點, 例如 ftp://ftp.???.???.edu.tw (台灣的幾個大學)
  • ... 選 下載的函式庫
    這是一個樹狀選單, 如果不清楚到哪一個類別節點去找函式庫, 可以在 本機存放位置的 ftp://ftp.???.???.edu.tw 子目錄底下找到 setup.ini 的內容, 例如下面的例子 :
  • 下載完成之後, 再執行一次, 這次選『從本機的存放位置安裝』(Install from Local Directory) ...

setup.ini 的內容

@ libMagick-devel
sdesc: "Image manipulation software suite (development)"
ldesc: "ImageMagick is a software suite to create, edit, and compose bitmap ..."
category: Graphics
requires: cygwin libbz2-devel
libfontconfig-devel libfpx-devel libfreetype2-devel libjasper-devel libjbig-devel libjpeg-devel liblcms-devel libpng12-devel libtiff-devel libwmf-devel libxml2-devel libX11-devel libXext-devel zlib

...

@ xorg-x11-devel
sdesc: "Obsolete package"
ldesc: "Obsolete package"
category: _obsolete
requires: libX11-devel xorg-x11-base

可以得知 libMagick-develGraphics 這個類別節點底下, 而且它同時需要 cygwin libbz2-devel, 這些相依的函式庫 (dependency), 會在點選 libMagick-devel 時被自動納入, 而 xorg-x11-devel 則是不存在 (_obsolete)

下面是我在 Cygwin 內定的部份之外, 配合 DrawTiming 再勾選的函式庫 :

類別節點 函式庫
Devel gcc-core
gcc-g++
make
Graphics ImageMagick
ghostscript
ghostscript-fonts-others
ghostscript-fonts-std
libMagick-devel
Libs libbz2-devel

_obsolete (不存在)

ghostscript-base
xorg-x11-devel

.

製作 Cygwin 版的 DrawTiming

假設 drawtiming-0.7.tar.gz 存放在 e:

  • 點選桌面的 Cygwin 圖示
  • cd cygdrive/e/
    ( cygwin 底下的 e: 會對應成 /cygdrive/e/, c: 會對應成 /cygdrive/c/ )
  • tar -xzf drawtiming-0.7.tar.gz
  • cd drawtiming-0.7
  • ./configure
  • 依照需求 make
    make           (編譯執行檔)
    make install  (編譯並自動安裝到)
    make check  (編譯並測試執行結果)
  • 回到 Windows, 檢查 *.gif 的結果是否正確

如果只需要在一台機上器上執行 DrawTiming, 到這邊就算完成了。

總計 Cygwin 版完整的 DrawTiming, 過程中除了120KB 的 DrawTiming 原始程式碼之外, 還要下載 Cygwin 將近 80MB 的安裝檔 (含 gcc, ImageMagick, ghostscript ... 等), 安裝之後則變成大約 300MB 的 Cygwin 的執行環境 ....。不過, 這一番辛苦之後可以正確輸出 GIF, JPG, PS, EPS。

.

『免安裝 Cygwin』的 DrawTiming

經過一番嘗試, 我發現可以抽取出一些 DLL, 變成『免安裝 Cygwin』在 Windows 命令列執行的 DrawTiming。而這個『免安裝版』因為字型相依性還沒全部解決, 所以只能輸出 PS, EPS 格式。雖然功能上打了折扣, 但是只需要複製大約 10MB 的檔案, 就 可以在另一台『沒有安裝 Cygwin 的電腦』執行 DrawTiming

把下面這些檔案, 連同在 Cygwin 底下編譯的 drawtiming.exe 複製到同一個目錄,
其中, type-ghostscript.xml 裡面的路徑設定 /usr/share/ghostscript/fonts/ 要去掉

例如 :

... metrics="/usr/share/ghostscript/fonts/a010013l.afm" glyphs="/usr/share/ghostscript/fonts/a010013l.pfb"

改成 :

... metrics="a010013l.afm" glyphs="a010013l.pfb"

cygbz2-1.dll
cygexpat-1.dll
cygfontconfig-1.dll
cygfreetype-6.dll
cygiconv-2.dll
cygjpeg-62.dll
cyglcms-1.dll
cygMagick++-1.dll
cygMagickCore-1.dll
cygMagickWand-1.dll
cygtiff-5.dll
cygwin1.dll
cygX11-6.dll
cygXau-6.dll
cygxcb-1.dll
cygxcb-xlib-0.dll
cygXdmcp-6.dll
cygXext-6.dll
cygz.dll

原本在 c:\cygwin\bin

懶得篩選, 也可以 *.dll 全部複製
n019*.* 原本在 c:\cygwin\usr\share\ghostscript\fonts

type.xml
type-ghostscript.xml
type-solaris.xml
type-windows.xml

原本在 c:\cygwin\lib\ImageMagick-6.4.0\config

.


(...繼續閱讀.../...CONTINUE...)

2009年3月10日 星期二

畫時序圖的免費工具 DrawTiming

DrawTiming 是『畫時序圖的免費工具, 可以從命令列產生時序圖, 不僅描述時序的文字檔語法非常直覺, 而且還能畫出時序的相依性
sample

.

Windows 也能使用 DrawTiming

原本 DrawTiming 要自己在 Linux 或 Cygwin 底下編譯成執行檔, 而且要搭配 Magick++ API 等 ..., 不過, 我改造出一版 只能產生 PS, EPS 格式的『免安裝版』, 請從 這裡下載 zip 檔
之後就可以 在 Windows 命令列執行 DrawTiming ...

  • 將 zip 檔解壓縮到任意目錄
  • 開啟命令列 ---- (附屬應用程式-命令提示字元, 或是 開始-執行-cmd),
  • 切換到那個目錄
  • 執行 sample-eps.bat
  • 或是手動執行 drawtiming  -o  sample.eps  sample.txt
    -o *.eps    => 指定輸出檔名
    *.txt         => 輸入檔名
  • 順利的話就可以產生如下幾個 *.eps 檔

.

  • 可以安裝 GhostView 來觀看 EPS 檔,
  • 可以將 EPS 檔插入 (或拖放) 到 Word, Excel, PowerPoint 等 MS-Office 軟體而成為向量圖檔
  • 繪圖軟體 (例如: PhotoShop), 看圖軟體 (例如: XnView) 也可以支援 EPS 檔,
    ---- 歡迎大家補充
  • 原始程式 EPS 檔頭缺了一個驚歎號, 已經一併修正
    => %!PS-Adobe-3.0 EPSF-3.0

 

sample.eps
sample_font.eps (和 sample.eps 一樣, 但文字變大)

guenter 
guenter

statement1

statement1

memory

memory

.

DrawTiming 使用技巧

DrawTiming描述時序的文字檔語法』非常直覺, 並且有『命令列參數』可以調整字體大小, 圖檔格式 ... 等, 這些在 官網上有詳細的說明, 就不再贅述。

如果急著上手, 也可以從 示範的輸出結果『看圖說故事』, 直接從圖形上找到想要的圖樣, 再回頭研究 *.txt 文字檔案的相關內容。

以下補充其他的注意事項 :

  • 善用 # 號開頭的整行註解, 讓檔案更具可讀性
  • 依照要顯示的順序列出所有的變數和它們的初始值, 不確定的值還是應該指定 Z (high Z) 或 X (don't care),
  • 不需要全部擠在同一行, 在句號之前都是表示同一個單位時間
  • 在兩個句號之間 (同一單位時間), 不需要特別注意順序, 但是除了下面這種例子 :

token = "\"=\"".
token = SYMBOL.
token = "\".\"" => clock = "N+1" => deps.length = "0".

token = "\"=\"".
token = SYMBOL.
token => clock = "N+1" => deps.length = "0";
token = "\".\"".

statement2

.

目前有下面的小問題, 不清楚是否有相關語法可以解決

  • 當有多個訊號而希望分成幾個群組時, 無法插入空白行, 暫時的解決方法是插入一個沒有變化的假訊號當作區隔

.

UML 與 TDML

在搜尋『畫時序圖』軟體的過程, 我用 Timing Diagram 當關鍵字, 發現另外兩個名詞

  • UML (Unified Modeling Language, 統一塑模語言)

    image軟體系統發展人員用以建造模型 ... 使得工作團隊能夠:將系統具象化、系統結構化、行為規格化、建構系統、以及記錄發展系統過程中之各項決策。...

    UML所涵蓋的內容是表示法而非程序,UML是與程序無關的,也就是說,無論以任何程序來開發軟體系統,都可以使用UML來建構軟體模型。 (淺談UML 資策會)

2005年, UML 2.0 增加 時間圖 (UML Timing Diagram) 的定義, 不過可惜的是找到幾種免費的 UML 軟體, StarUML, BOUML, umbrello, 看來都只有『循序圖』(Sequence diagram), 而沒有『時序圖』(Timing Diagram)

.

  • TDML (Timing Diagram Markup Language)

http://xml.coverpages.org/tdml.html 有 TDML 的說明, 也列出一些軟體, 不過我並沒有找到合用的軟體來畫『時序圖』。

付費版的可以參考 Timing designer

有一款免費線上使用的 TimingTool Lite, 看來需要 Java 1.5, 而且點下 "Demo" 之後會提示要註冊一個帳號, 所以我還沒使用過。

AndyTiming 是我同事找到的另一款免費的時序圖工具, 它比 DrawTiming 更簡單, 請見下面的說明

.

AndyTiming 另一款免費的時序圖工具

imageimage

AndyTiming (下載點) DrawTiming
在下半視窗直接輸入一串字元來代表波形 命令列工具
用字元『畫出』時序圖 從時序描述檔案轉換成圖形 (邏輯上較為嚴謹)
無法表示『時序的相依性』, 也不能標示『時間間隔』 可以標示『時序的相依性』與『時間間隔』

.


(...繼續閱讀.../...CONTINUE...)

輕鬆學會 MSYS + MinGW ---- 在 Windows 底下重新編譯 GNU 程式

因為 DrawTiming 的關係, 我安裝了第一次使用的 Cygwin 來編譯執行檔, ....

後來, 編譯環境換成 MSYS + MinGW 之後, 就可以擺脫 cygwin1.dll, 而直接在 Windows 底下執行 DrawTiming 了。

MSYS + MinGW 真的是苗條許多, 下載 20MB, 安裝後 70MB, 相形之下, Cygwin 就顯得龐大 (下載 50~80MB, 安裝後 250~300MB),

.

configure --> build --> install 三部曲

MinGW 與 Cygwin 的不同處 (E-Office學園, 2006-02-05)

MinGW ... 將 gnu 這個 open source, free 的開發工具移植到微軟視窗平台,他直接產生出來的PC視窗平台機器碼,

UNIX 世界Open source 的玩法,大約都是 ... 取得 Source code,然後 configure --> build --> install 三部曲

configure 會先蒐集你平台上各個工具元件實際安裝路徑,根據它們來調整軟體 Project檔(通常它是一個Makefile),之後才執行 make 去 Build 出軟體,透過 Install 腳本,最後再把作好的軟體 install (安裝)到適當的資料夾來使用。這 MSYS 就可以讓 MinGW 這編譯工具也具備第一步的 configure 功能。

簡單的說 :

下載原始碼 例如 : DrawTiming
解開原始碼

tar -xzf drawtiming-0.x.tar.gz

執行 configure 自動調整編譯環境

cd drawtiming-0.x
./configure

依照需求 make make           (編譯執行檔)
make install  (編譯並自動安裝到)
make check  (編譯並測試執行結果)

而 MSYS + MinGW 就是讓我們能在 Windows 底下重新編譯 GNU 程式的 Minimum System

.

安裝 MinGW

GCC在windows的開發環境叫MinGW
MinGW代表Minimalist GNU for Windows
官方網站在 http://www.mingw.org/
sourceforge的專案網站 http://sourceforge.net/projects/mingw/

...

安裝過程中會詢問你還需要安裝哪些套件
通常會再選make跟g++

...

其餘詳見 installation of GCC on windows (koukai的Blog, 2007-05-17)

koukai 有提到要設環境變數, 不過我覺得 要搭配 MSYS 使用, 其實可以不必設定環境變數

可以先下載 MinGW-5.1.x.exe 再透過它來下載其餘的檔案, 我選了make跟g++之後, 總共下載了下面這些檔案:

mingwrt-3.15.1-mingw32.tar.gz
w32api-3.12-mingw32-dev.tar.gz
binutils-2.17.50-20060824-1.tar.gz
gcc-core-3.4.5-20060117-3.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
mingw32-make-3.81-20080326-2.tar.gz
mingwrt-3.15.1-mingw32.tar.gz

安裝過程 在 koukai 的 installation of GCC on windows 有清楚的說明

.

安裝 MSYS

MSYS是一套類似cygwin在windows建構出unix-like的shell
並擁有一些常見的GNU utilities可以使用,也可以利用mingw的一些程式

 

... 首先安裝好mingw,可參閱http://koukaipan.pixnet.net/blog/post/4716500
... 再來安裝MSYS
... 問你要不要進行post install,鍵入y,
問你有沒有安裝mingw,當然有,鍵入y,
位置填入你mingw安裝位置,記住,這邊路徑目錄的斜線是正斜線
...
其餘詳見 MSYS環境建置 (koukai的Blog, 2008-10-10)

安裝完成之後, 點選桌面的 MSYS 圖示, 進入類似 Linux 的命令列, 操作 tar, configure, make ... 等指令, 就大功告成了。

不過, 這邊有個小問題, 是無法確定磁碟機如何對應, 像 cygwin 底下的 e: 會對應成 /cygdrive/e/, c: 會對應成 /cygdrive/c/ (參見 安裝Cygwin, Forster Wu, 2001-03-09), 但不清楚 MSYS 的作法 ...

所以, 我把下載的檔案用 7-Zip 或 IZArc 直接解壓縮到 x:\msys\1.0\home 底下, 也就是 MSYS 的 /home 底下

.

打造輕巧版的 DrawTiming

原本 DrawTiming 提供的是 120KB 的原始程式碼, 在 Linux 或 Cygwin 底下編譯成執行檔, 再配合 Magick++ API 來產生圖型檔 。

除了第一個純 Linux 的環境我沒試過之外, 越往下的編譯執行環境就是越輕巧的版本

  • 配合 Linux 底下安裝的 Magick++ API, ghostscript 字型,
    自行編譯 Linux 命令列的 DrawTiming 執行檔
  • 配合 Cygwin 底下安裝的 Magick++ API, ghostscript 字型,
    自行編譯 Cygwin 命令列的 DrawTiming 執行檔 (整套 cygwin 約 300MB)
  • Windows 命令列執行 DrawTiming
    ----
    『免安裝 Cygwin』, 但需要 Cygwin 的一堆 DLLs, ghostscript 字型 ... 等 (共10MB)
  • 改造程式碼 (詳見 Google Code),  使其獨立於 Magick++ API, ghostscript ... 
    ---- 使用 Cygwin 編譯, 執行時需要執行檔本身再加上 cygwin1.dll (共 2MB)
  • 真正的輕巧版, 改用 MSYS + MinGW 編譯, 連 cygwin1.dll 都不用了, 產生的執行檔拿到沒有裝 MSYS + MinGW 的別台 Windows 電腦還是一樣可以執行 (只要 1MB, 下載點)

.


(...繼續閱讀.../...CONTINUE...)

2008年8月22日 星期五

DWG, DXF 看圖/量測軟體 -- Brava! DWG Viewer

不只能看 AutoCAD 圖檔, Brava! DWG Viewer 提供的『量測功能』更是好用。而且安裝程式只有 16M, 比原先用的 Volo View Express 2 或 3 來得更小。Brava! DWG Viewer (Informative Graphics) 的使用非常直覺 ---- 滑鼠左鍵平移圖形, 滾輪縮放圖形 ..., 相信你也能很快上手。

原本, 一直都用 Volo View Express 2.01 (24M) 來看 AutoCAD 的 DWG, DXF 圖檔, 但是沒有量測功能, 後來改用 Volo View Express 3 (93M), 但量測的功能還是很陽春, 真不知道為何需要那麼大的安裝檔。還好現在發現了 Brava! DWG Viewer

.

Brava! DWG Viewer 『量測功能』

  • Measure - Setting, 設定 量測單位, 例如: 公制 / mm
2008-08-22_154240  2008-08-22_154252 
2008-08-22_153659
再選擇 Measure - Calibrate
2008-08-22_153956
決定是否勾選 Snap
2008-08-22_154542-1

量測已知的長度『線段的第一點』

按下滑鼠左鍵先不要放開, 此時會出現局部放大的視窗, 將游標移到準確的位置, 再放開滑鼠左鍵
 2008-08-22_154558

量測已知的長度『線段的第二點』

同上, 按下滑鼠左鍵先不要放開, 此時會出現局部放大的視窗, 將游標移到準確的位置, 再放開滑鼠左鍵
2008-08-22_154614

輸入已知的長度, 即完成校正

.

  • 同樣在 Measure 選單, 可以選擇量測單一線段, 多重線段, 多邊形, 長方形, 圓形, ... 等

不但可以量測長度, 還可以量測面積
用『按下左按, 對準再放開』的方式, 依序點選每一個頂點, 最後按『右鍵』即完成

2008-08-22_155643 2008-08-22_155652 2008-08-22_155701
2008-08-22_155708 2008-08-22_155715 2008-08-22_155734
2008-08-22_155743    

得到寬度, 周長, 面積 ...

2008-08-22_155743-1

.

類似功能的軟體

  • HYCAD (brothersoft.com), 绘易CAD之家 (drawease.com) -- 4M (英文版)
    看來可以讀取 *.dxf 檔, 但只看到單色的線條, 尚未找到是否可以設為彩色

2008-08-22_145318

.


(...繼續閱讀.../...CONTINUE...)