MPI 函式庫 參考手冊 MD19UC _V2.0

Size: px
Start display at page:

Download "MPI 函式庫 參考手冊 MD19UC _V2.0"

Transcription

1 MPI 函式庫 參考手冊 _V2.0

2 修訂紀錄 手冊版次資訊亦標記於手冊封面右下角 _V2.0 手冊版次 發行年份與月份 發行日期版次 DLL 版次更新內容 2020/02/ 初版發行

3 目錄 1. 前言 關於本手冊 資料庫驗證 資料庫更新 初始化 opendce deletedce ver diserrmsgbox disallerrmsgbox getfwerr getvererrcodesl comparefw setmfcmode resetcontroller 通訊 setcompar 連線至 EtherCAT mega-ulink 連線至 USB getcompar getdcecnffname getslavefname getusbhubport closeport openport showcomstatus loaddcesw updatedatabase

4 目錄 4. 事件接收 waitonmsgp releasewaitmessage insertevent closeevent getevent seteventcode getlasteventdata 數據收集 ( 記錄 ) StartRecordData StartRecordDataN StartRecordFileN GetRecdordStatus StopRecord OpenRecord 取得變數 / 陣列 GetVarAddr GetVarAddrType SetVarN GetVarN SetVarN GetVarN setarrayn getarrayn setarraydn getarraydn setarraysn getarraysn getpac getandsetarrayn getandsetarraydn

5 目錄 6.16 GetScopeData GetErrorStr 取得狀態 setstaten getstaten 執行 PDL 函式 RunFuncPdlN KillTask 回調函式 setcallbackstevnt 錯誤代碼 範例程式 初始化 MPI 函式庫 編碼器回授

6 ( 此頁有意留白 )

7 1. 前言 1. 前言 關於本手冊 資料庫驗證 資料庫更新 HIWIN MIKROSYSTEM CORP. 1-1

8 前言 1.1 關於本手冊 本手冊適用於 HIWIN D 系列驅動器與 E1 系列驅動器 MPI 函式庫, 藉 DLL 檔實現, 接受任何由 Microsoft Visual C++ Visual Basic.NET 或 LabVIEW 所生成的應用程式 其特色為使用 MFC, 以及可在 Windows 95/98/2000/XP/7/10 Professional 上運作 透過 MPI 函式庫, 使用者可完成以下項目 設定通訊組態 ( 如通訊埠編號 鮑率 RS232/USB/CAN/ ) 註 :HIWIN 台灣所製造的 D 系列驅動器不支援 CAN 同時使用多個通訊埠 每個通訊埠須連接不同台驅動器, 或具兩個以上 RS232 埠的同一台驅動器 支援多工 多個任務可以以最小的延遲時間, 透過 DLL 介面進入驅動器 處理錯誤 例如 : 通訊錯誤發生時,MPI 函式庫會持續發送訊息, 直到錯誤被清除, 或次數達到 try again 變數的極限 讀取 / 寫入驅動器的變數或陣列 支援 64 位元變數 執行 PDL 函式 設定 / 清除 / 切換 / 讀取狀態 以 PDL 命令監控控制器事件 支援數據收集 ( 記錄 ) 在兩個或多個使用 mpi 的應用程式之間建立網路連結 MPI 函式庫由四個檔案所組成 :mpi.lib mpi.dll canlib32.dll 與 mpint.h 至於 PDL 語言與 DCE 資料 庫的相關資訊, 請參閱大銀微系統官網上的 PDL Reference Manual for D-series Drives 手冊 1.2 資料庫驗證 資料庫為驅動器裡的主程式, 內含 MDP 與 PDL 檔, 用來當作每個驅動器中暫存器與變數之間的參考 驅 動器裡的資料庫須與 PC 裡的一致, 詳細內容請參閱函式 comparefw 1-2 HIWIN MIKROSYSTEM CORP.

9 前言 使用者可利用 Wizalg 程式 (Lightening 安裝包裡的工具 ) 來驗證驅動器的資料庫 操作流程如下 步驟 1. 開啟 Wizalg 程式 ( 路徑為 C:\HIWIN\dce\toolswin\winkmi) 步驟 2. 步驟 3. 步驟 4. 步驟 5. 連線 PC 與驅動器 選擇 File 中的 Verify data base, 開啟 firmware s 視窗 點擊 firmware s 視窗左方 slave 列表的每一個驅動器 如圖 所示, 將顯示一個兩欄三列的表格 欄 1 為驅動器裡的韌體, 欄 2 為 PC 工作目錄裡的檔案 每個 Csum 副列裡的校對和須一致 ( 不適用於第一個 Csum 副列 Boot Dsp Program) 藍字代表校對和匹配 ( 如圖 所示 ), 紅字代表校對和不匹配 ( 如圖 所示 ) 若校對和不匹配, 請參閱 1.3 節來更新資料庫 欄 1 欄 2 點擊 slave 0 驅動器裡的資料庫與 PC 裡的一致 圖 校對和匹配 點擊 slave 1 驅動器裡的資料庫與 PC 裡的不一致 圖 校對和不匹配 HIWIN MIKROSYSTEM CORP. 1-3

10 前言 1.3 資料庫更新 使用者可利用 Wizalg 程式來更新 MDP 與 PDL 檔 操作流程如下 步驟 1. 開啟 Wizalg 程式 ( 路徑為 C:\HIWIN\dce\toolswin\winkmi) 步驟 2. 步驟 3. 步驟 4. 連線 PC 與驅動器 選擇 Boot 中的 Auto load programs, 開啟 Auto load programs 視窗 取消勾選 Compile PDL, 再點擊 Run 按鈕 圖 HIWIN MIKROSYSTEM CORP.

11 2. 初始化 2. 初始化 opendce deletedce ver diserrmsgbox disallerrmsgbox getfwerr getvererrcodesl comparefw setmfcmode resetcontroller HIWIN MIKROSYSTEM CORP. 2-1

12 初始化 本章說明開始或結束應用程式時所需呼叫的導出函式 2.1 opendce 建立 PC 與驅動器之間的通訊 MDCE *opendce(char *pwdin, char *cnfname); *pwdin 組態檔路徑 *cnfname 組態檔名稱 若將其設為 NULL, 預設組態檔為 system.dce 回傳值指向 通訊物件 的指標, 在其他函式中可被視為 pcom 備註 (1) 使用者可開啟多個通訊物件 利用函式 setcompar, 每個通訊物件會被設定至不同的通訊埠 每個回傳的 MDCE 指標 ( 通常是其他函式中的最後一個 ) 為通訊物件的識別符 (2) 若只有一個通訊期, 使用者可忽略回傳的 MDCE 指標, 並在其他函式中設定 pcom=null (3) 呼叫函式 opendce 後, 請呼叫函式 setcompar 以定義通訊物件的 每個通訊物件僅能各呼叫一次函式 opendce (4) 欲取得組態檔完整的路徑名稱, 請呼叫函式 getdcecnffname (5) 欲關閉通訊物件 ( 約莫在結束應用程式之前 ), 請呼叫函式 deletedce (6) 不同的驅動器須對應不同的組態檔, 請參閱下表 表 D2T D1 驅動器類型 D2T- -S D2T- -F D2T- -E D1- -S D1- -F D1- -E opendce 路徑 opendce("c:\\hiwin\\dce", "d2.dce"); opendce("c:\\hiwin\\dce", "D2COE.dce"); opendce("c:\\hiwin\\dce", "tamuz.dce"); opendce("c:\\hiwin\\dce", "D1COE.dce"); 2-2 HIWIN MIKROSYSTEM CORP.

13 初始化 D1-N E1 D1-N- -S D1-N- -F D1-N- -M D1-N- -E ED1S ED1F opendce("c:\\hiwin\\dce", "D1N.dce"); opendce("c:\\hiwin\\dce", "D1NCOE.dce"); opendce("c:\\hiwin\\dce", "D3.dce"); opendce("c:\\hiwin\\dce", "D3COE.dce"); HIWIN MIKROSYSTEM CORP. 2-3

14 初始化 2.2 deletedce 結束 PC 與驅動器之間的通訊 void deletedce(mdce *pcom=null, int closemfc=false); pcom closemfc 指向 通訊物件 的指標 欲清除 MFC 內部執行緒 ( 使用者於應用程式開始時呼叫函式 setmfcmode 才有效 ), 請將此設為 TRUE 大部分的情況下, 此應為 FALSE, 因關閉 DLL 時 MFC 內部執行緒會自動被清除 回傳值無 備註不再需要通訊時 ( 約莫在結束應用程式之前 ), 請呼叫此函式 2-4 HIWIN MIKROSYSTEM CORP.

15 初始化 2.3 ver 取得 DLL 版本 char *ver(int print); print 欲在訊息框中印出 DLL 版本, 請將此設為非零值 回傳值指向 DLL 版本 的指標 備註 DLL 會不定期更新, 故建議在應用程式中使用此函式, 以定期取得 DLL 版本 HIWIN MIKROSYSTEM CORP. 2-5

16 初始化 2.4 diserrmsgbox 關閉通訊錯誤提示訊息框 ( 偵測到版本衝突時, 無法關閉版本比較視窗 ) void diserrmsgbox(int dis); dis 欲關閉通訊錯誤提示訊息框, 請將此設為 1 欲開啟訊息框, 則設為 0 回傳值無 備註 (1) 可隨時呼叫此函式來關閉 / 開啟訊息框 (2) 第一次做 PC 與驅動器之間的資料庫確認時, 請在呼叫函式 setcompar 之前呼叫此函式, 以關閉訊息框 (3) 若偵測到版本衝突, 會彈出版本比較視窗 在這個情況下, 此函式無法關閉此視窗 (4) 一旦使用此函式, 所有從站皆適用 2-6 HIWIN MIKROSYSTEM CORP.

17 初始化 2.5 disallerrmsgbox 關閉通訊錯誤提示訊息框 ( 偵測到版本衝突時, 可以關閉版本比較視窗 ) void disallerrmsgbox(int dis); dis 欲關閉通訊錯誤提示訊息框, 請將此設為 1 欲開啟訊息框, 則設為 0 回傳值無 備註 (1) 可隨時呼叫此函式來關閉 / 開啟訊息框 (2) 第一次做 PC 與驅動器之間的資料庫確認時, 請在呼叫函式 setcompar 之前呼叫此函式, 以關閉訊息框 (3) 若偵測到版本衝突, 會彈出版本比較視窗 與函式 diserrmsgbox 不同, 此函式可以關閉此視窗 (4) 一旦使用此函式, 所有從站皆適用 HIWIN MIKROSYSTEM CORP. 2-7

18 初始化 2.6 getfwerr 確認 PC 與驅動器韌體之間是否有版本衝突 int getfwerr(mdce *pcom=null); pcom 指向 通訊物件 的指標 回傳值偵測到 PC 與驅動器韌體之間的版本衝突時, 將回傳非零值 備註進行版本比較的時機 : 第一次成功建立通訊時 或 呼叫函式 comparefw 時 2-8 HIWIN MIKROSYSTEM CORP.

19 初始化 2.7 getvererrcodesl 取得詳細的版本錯誤代碼 unsigned int getvererrcodesl(int slave=0, MDCE *pcom=null); slave pcom 從站編號 指向 通訊物件 的指標 回傳值詳細的版本錯誤代碼 每兩位元代表各檔案資料庫的錯誤狀態 0 無錯誤 1 無法進行版本比較 2 存在版本衝突 位元與檔案的關係如下表所示 位元檔案 0 1 BOOT 韌體檔 *.edb 4 5 MDP 韌體檔 < 組態檔名稱 >.edb 6 7 MDP 變數列表檔 < 組態檔名稱 >.vrs 8 9 PDL 韌體檔 < 名稱 >.edb PDL MDP 變數列表檔 <user_$>.vrs PDL MDP 函式列表檔 <user_$>.lbl PDL MDP 訊息列表檔 <user_$>.msg 註 : 不同的驅動器須對應不同的組態檔, 請參閱表 以驅動器型號 D2T- -S 為例, 其組態檔名稱為 d2 HIWIN MIKROSYSTEM CORP. 2-9

20 初始化 2.8 comparefw 進行 PC 與驅動器韌體之間的版本比較 int comeparefw(int show=0, MDCE *pcom=null); show 欲開啟版本比較視窗 ( 即便所有韌體皆匹配 ), 請將此設為 1 pcom 指向 通訊物件 的指標 回傳值無 備註 (1) 若偵測到版本衝突, 會彈出版本比較視窗 ( 除非使用者已事先呼叫函式 diserrmsgbox) 呼叫函式 getfwerr 後, 會回傳非零值 (2) 進行版本比較的時機 : 第一次成功建立通訊時 2-10 HIWIN MIKROSYSTEM CORP.

21 初始化 2.9 setmfcmode 呼叫不在主執行緒中的函式 showcomstatus 與 OpenRecord void setmfcmode(); 無 回傳值無 備註 (1) 呼叫其他函式前, 請先呼叫此函式 此函式僅須被呼叫一次 (2) 若函式 showcomstatus 與 OpenRecord 在主執行緒中, 使用者不須呼叫此函式 HIWIN MIKROSYSTEM CORP. 2-11

22 初始化 2.10 resetcontroller 重置驅動器 void resetcontroller(int slave=0, MDCE *pcom=null); slave pcom 從站編號 指向 通訊物件 的指標 回傳值無 備註呼叫此函式就如同重置硬體, 先至開機模式, 再回到正常模式 2-12 HIWIN MIKROSYSTEM CORP.

23 3. 通訊 3. 通訊 setcompar 連線至 EtherCAT mega-ulink 連線至 USB getcompar getdcecnffname getslavefname getusbhubport closeport openport showcomstatus loaddcesw updatedatabase HIWIN MIKROSYSTEM CORP. 3-1

24 通訊 本章說明所有與通訊設定相關的函式 3.1 setcompar 設定通訊 int setcompar(int port, int baudrate, int mode, int trid, int rcid, int canbaudrate, int msgstand, int canpipelevel, int timeout, int locktime, int iternum, MDCE *pcom=null); port baudrate 通訊埠編號 在 RS232(USB 接頭 ) 模式下的鮑率代碼 代碼 鮑率 代碼 鮑率 mode 通訊模式代碼 代碼 模式 RS232 (USB 接頭 ) EtherCAT mega-ulink USB ( 僅適用於 E1 系 列驅動器 ) trid 保留 設為 0 rcid 保留 設為 0 canbaudrate 保留 設為 0 msgstand 保留 設為 0 canpipelevel 保留 設為 0 timeout 等待驅動器回傳訊息的時間 ( 建議設為 100) 單位 : 毫秒 locktime 容許通訊錯誤存在的時間 ( 建議設為 200) 單位 : 毫秒 iternum 重覆傳送訊息給驅動器的最大次數 ( 建議設為 6) pcom 指向 通訊物件 的指標 3-2 HIWIN MIKROSYSTEM CORP.

25 通訊 回傳值 0 函式執行成功 2 通訊埠不存在 5 其他應用程式正在使用此通訊埠 備註呼叫函式 opendce 後, 再呼叫此函式 之後, 即可隨時呼叫此函式以變更通訊設定 連線至 EtherCAT mega-ulink 欲連線至 EtherCAT mega-ulink, 請呼叫函式 setcompar, 並設定 mode = 4 範例 setmfcmode(); MDCE *pcom=opendce("c:\\hiwin\dce\\", NULL); setcompar(0, 0, 4, 0, 0, 0, 0, 0, 50, 0, 8, pcom); 備註 (1) 呼叫函式 opendce 前, 須先呼叫函式 setmfcmode (2) 函式 setcompar 中, 所有非相關的皆為 0 且第三個 mode 為 4 (3) 手動選擇用於 PC 的網路裝置, 如下圖所示 按下 SetUp 按鈕以開啟 wizalg Communication Setup 視窗, 再按下 EtherCat 按鈕來選擇欲使用的網路 接著, 按下 Apply 按鈕來儲存此設定 這樣一來, 每次連線至 EtherCAT mega-ulink 時, 皆可恢復此設定 HIWIN MIKROSYSTEM CORP. 3-3

26 通訊 圖 HIWIN MIKROSYSTEM CORP.

27 通訊 連線至 USB 欲連線至 USB, 請呼叫函式 setcompar, 並設定 mode = 5( 僅適用於 E1 系列驅動器 ) 範例 : 連線至兩台 USB 裝置 setmfcmode(); int port0 = 0, port1 = 1; // 打開相對應通訊埠的通訊物件 MDCE *pcom_0 = opendce("c:\\hiwin\dce\\", NULL); MDCE *pcom_1 = opendce("c:\\hiwin\dce\\", NULL); setcompar(port0, 0, 5, 0, 0, 0, 0, 0, 50, 0, 8, pcom_0); // 連線至 port0 setcompar(port1, 0, 5, 0, 0, 0, 0, 0, 50, 0, 8, pcom_1); // 連線至 port1 備註須先安裝 USB 驅動程式 HIWIN MIKROSYSTEM CORP. 3-5

28 通訊 3.2 getcompar 取得函式 setcompar 所設定的 int getcompar(int *pport, int *pbaudrate, int *pmode, int *ptrid, int *prcid, int *pcanbaudrate, int *pmsgstand, int *pcanpipelevel, int *ptimeout, int *plocktime, int *piternum, MDCE *pcom=null); 這些引數為指標, 與函式 setcompar 中的相同 回傳值 0 函式執行成功 -1 無通訊物件 3-6 HIWIN MIKROSYSTEM CORP.

29 通訊 3.3 getdcecnffname 取得組態檔完整的路徑名稱 int getdcecnffname(char *str, MDCE *pcom=null); *str pcom 組態檔完整的路徑名稱 指向 通訊物件 的指標 回傳值 0 函式執行成功 -1 無通訊物件 備註 *str 與 pcom 須依據回傳字串的長度, 指向具有足夠大小的字串記憶體 ( 建議設為 200) HIWIN MIKROSYSTEM CORP. 3-7

30 通訊 3.4 getslavefname 取得從站名稱 int getslaveffname(char *str, int slave=0, MDCE *pcom=null); *str 從站名稱 slave 從站編號 若只有一台驅動器, 則為 0 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 -1 無通訊物件 3-8 HIWIN MIKROSYSTEM CORP.

31 通訊 3.5 getusbhubport 取得 USB 裝置名稱 int getusbhubport(int port, char *hubport, int strlen, MDCE *pcom=null); port *hubport strlen pcom 通訊埠編號 若只有一台 USB 裝置, 設其為 0 USB 裝置名稱 USB 裝置名稱的字串長度 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr( 將 str 設為 " ") 以取得錯誤的描述 備註 (1) 此函式僅適用於 E1 系列驅動器 (2) 呼叫函式 opendce 後, 再呼叫此函式 (3) 可利用此函式得到所有連接到電腦的驅動器 範例 #define MaxSlaveNum 32 MDCE *pcom[maxslavenum]; // 最大連線軸數為 32 軸 int port=0; char hubport[200]; int errcode; // 掃描 USB 裝置 for (int i=0;i<maxslavenum;i++) { HIWIN MIKROSYSTEM CORP. 3-9

32 通訊 } pcom[i]=opendce("c:\\hiwin\dce\\", NULL); // 打開通訊物件 if ((errcode=getusbhubport(port, hubport, sizeof(hubport), pcom[port]))==0) { printf("device %d: %s\n", port, hubport); port++; } else { // 印出錯誤訊息 char errstr[200]; GetErrorStr(errcode, " ", 0, errstr, pcom[port]); printf("device %d: %s\n", port, errstr); break; } 3-10 HIWIN MIKROSYSTEM CORP.

33 通訊 3.6 closeport 關閉通訊埠 void closeport(mdce *pcom=null); pcom 指向 通訊物件 的指標 回傳值無 備註此函式僅關閉通訊埠, 而不是像函式 deletedce 一樣刪除通訊物件 HIWIN MIKROSYSTEM CORP. 3-11

34 通訊 3.7 openport 再次開啟最後一個 setcompar 所指定的通訊埠 int openport(mdce *pcom=null); pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 2 通訊埠不存在 5 其他應用程式正在使用此通訊埠 備註 (1) 使用者可呼叫此函式以替代函式 setcompar 在這個情況下, 將應用最後設定的通訊設定 (2) 使用者可利用通訊狀態對話框 ( 參閱函式 showcomstatus) 來改變通訊設定 3-12 HIWIN MIKROSYSTEM CORP.

35 通訊 3.8 showcomstatus 開啟對話框, 顯示通訊設定與相關數據的資訊 使用者可在此對話框內執行多項任務, 如 : 關閉 / 開啟通訊 埠 開啟開機對話框 (PDL 與 MDP) 與取得網路 void showcomstatus(mdce *pcom=null); pcom 指向 通訊物件 的指標 回傳值無 備註執行應用程式時, 可開著或最小化此對話框 HIWIN MIKROSYSTEM CORP. 3-13

36 通訊 3.9 loaddcesw 更新與驅動器相關的所有軟體, 如 MDP 和 PDL int loaddcesw(int pdlcomp, MDCE *pcom=null); pdlcomp 欲編譯 PDL, 請將此設為非零值 否則, 請設為 0 pcom 指向 通訊物件 的指標 回傳值若函式執行成功, 將回傳 int 型態的值 0 否則, 將回傳載入過程中錯誤發生的次數 3-14 HIWIN MIKROSYSTEM CORP.

37 通訊 3.10 updatedatabase 更新 DLL 內部資料庫 void updatedatabase(mdce *pcom); pcom 指向 通訊物件 的指標 回傳值無 備註欲刷新 DLL 內部變數 / 函式列表, 不須關閉再開啟應用程式, 呼叫此函式即可 HIWIN MIKROSYSTEM CORP. 3-15

38 通訊 ( 此頁有意留白 ) 3-16 HIWIN MIKROSYSTEM CORP.

39 4. 事件接收 4. 事件接收 waitonmsgp releasewaitmessage insertevent closeevent getevent seteventcode getlasteventdata HIWIN MIKROSYSTEM CORP. 4-1

40 事件接收 4.1 waitonmsgp 接收在驅動器上運行的 PDL 程式所發送的 PDL printl 命令 PDL printl 命令的語法如下所示 printl/mode1/mode2(" String ", var1, varn); 此語法中,mode2 為選配 ( 若沒特別註明即為 0), mode1 代表字串或其他屬性的顏色,var1 varn 則為 選配變數 詳細內容請參閱手冊 PDL Reference Manual for D-series Drives int waitonmsgp(int *pcode, char *pmsg=null, int *pcolor=null, int *pparam=null, int *pnumovrflw=null, int timeout=infinite, MDCE *pcom=null); *pcode *pmsg *pcolor *pparam *pnumovrflw timeout pcom mode2 的值 printl 命令中的字串 ; 其大小應至少為 20 字元 將 mode1 所指定的顏色代碼轉換成 COLORREF 裡相對應的值 一陣列 陣列中的第一項為變數的數量, 其餘項目分別顯示每個變數的 32 位元值 若變數為 float 型態, 須將其轉態成浮點數, 而非整數 註 : 字串 (pmsg) 裡的變數型態須與 printl 命令裡的變數型態相符 漏掉的 printl 訊息數量 若沒有執行緒聽取函式 waitonmsgp, 但出現了很多 printl 訊息, 就有可能會發生溢位 函式 waitonmsgp 又被聽取時, 溢位計數器即歸零 註 : 若發生溢位, 收到訊息裡的屬性 (pcode pmsg pcolor pparam) 皆有效 取得 printl 訊息的時間 若 timeout = -1(INFINITE), 函式不會回傳任何值, 直到 printl 訊息被送出 ( 或函式 releasewaitmessage 被其他執行緒呼叫 ) 若 timeout = 0 且有有效訊息, 函式會立刻回傳 0; 若 timeout = 0 卻無有效訊息, 函式會回傳 -2 若 timeout = 其他正數 (timeout > 0), 函式會在所設定的時間被聽取 ( 單位 : 微秒 ) 此情況下, 沒訊息或呼叫函式 releasewaitmessage, 函式會回傳 5 指向 通訊物件 的指標 回傳值 0 ok -1 無通訊物件 -2 無有效訊息 ( 函式 releasewaitmessage 被呼叫或 timeout = 0), 或超過一個執行緒呼叫此函式 5 超時 4-2 HIWIN MIKROSYSTEM CORP.

41 事件接收 備註 (1) 欲忽略指標的內容, 請將其設為 NULL 例如, 若使用者不在意 mode2 的值, 設 *pcode = NULL (2) 此函式一次僅能被一個執行緒呼叫, 否則會回傳 -2, 也有可能會漏掉訊息 (3) 執行緒無法快速處理來自驅動器的訊息時, 就有可能會發生溢位 mpi.dll 的佇位大小為 200 範例一 PDL 程式執行以下 printl 命令 ( 假設 x_enc_pos = 2000 x_p_p_g = 0.01) printl/103/ ("x axis: enc_pos=%ld, pos loop gain=%g", x_enc_pos, x_p_p_g); 負責聽取函式 waitonmsgp 的執行緒會回傳 0( 代表 ok), 如下所示 *pcode=0x44; pmsg="x axis: enc_pos=2000, pos loop gain=0.01"; *pcolor=0x02ff0000; // mode1 的 103 轉換成 COLORREF 的 0x02ff0000: 藍色 pparm[0]=2; pparm[1]=2000; *((float *)&pparam[2])=0.01; *pnumovrflw=0 // 假設沒溢位 範例二在執行緒裡的迴圈執行函式 waitonmsgp( 變數 endmsgtread 設好時 ) int endmsgtread=0; Uint msgthrd(lpvoid ppar) { MDCE *pcom=(mdce*)ppar; // 指向 通訊物件 的指標 int st, code, c, numovrflow, param[10]; char msg[200], str[200]; while(!endmsgtread) { st = waitonmsgp(&code, msg, &c, param, &numovrflow, INFINITE, pcom); switch(st) { case 0: // ok if(numovrflow!=0){ sprintf(str, "####### %ld Message lost", numovrflow); } strcpy(str,msg); break; HIWIN MIKROSYSTEM CORP. 4-3

42 事件接收 case -1: sprintf(str, "####### No communication object"); break; case -2: break; // 什麼都不做 case 5: sprintf(str, "####### Time out"); break; default: // 其他的回傳值 sprintf(str, "Message return error %ld", st); break; } } return(0); } 4-4 HIWIN MIKROSYSTEM CORP.

43 事件接收 4.2 releasewaitmessage 釋放負責聽取函式 waitonmsgp 的執行緒 void releasewaitmessage(mdce *pcom); pcom 指向 通訊物件 的指標 回傳值無 備註 (1) 結束應用程式或呼叫函式 deletedce 之前, 請呼叫此函式 (2) 若函式 waitonmsgp 中的 timeout = 0, 則不須呼叫此函式 範例欲應用此函式, 使用者可在 4.1 節範例二的 Uint msgthrd 中加入以下敘述 endmsgtread = 1; // 離開 while 迴圈 releasewaitmessage(pcom); // 釋放負責聽取函式 waitonmsgp 的執行緒 HIWIN MIKROSYSTEM CORP. 4-5

44 事件接收 4.3 insertevent 利用事件 ID, 從眾多 PDL printl 命令中, 篩選出欲監控的特定訊息 int insertevent(int id, HANDLE h, MDCE *pcom=null); id 事件 ID; 範圍 :0~199 其值須與 PDL printl 命令中 var1 的值一致 ( 請參閱函式 waitonmsgp), 所以建議將事件 ID 與 var1 的值皆設為從站編號 h 事件處置器 ; 利用 Windows(32 位元 ) 中的函式 CreateEvent 建造而成 若將其設為 NULL, 事件會被清除 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 -1 尚未呼叫函式 opendce -2 事件 ID 超出範圍 備註呼叫此函式之前, 請先呼叫函式 seteventcode 4-6 HIWIN MIKROSYSTEM CORP.

45 事件接收 4.4 closeevent 關閉事件處置器 int closeevent(int id, MDCE *pcom); id 事件 ID; 範圍 :0~199 其值須與 PDL printl 命令中 var1 的值一致 ( 請參閱函式 waitonmsgp), 所以建議將事件 ID 與 var1 的值皆設為從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 -1 尚未呼叫函式 opendce -2 事件 ID 超出範圍 -3 函式執行失敗 HIWIN MIKROSYSTEM CORP. 4-7

46 事件接收 4.5 getevent 取得事件處置器 HANDLE getevent(int id, MDCE *pcom); id 事件 ID; 範圍 :0~199 其值須與 PDL printl 命令中 var1 的值一致 ( 請參閱函式 waitonmsgp), 所以建議將事件 ID 與 var1 的值皆設為從站編號 pcom 指向 通訊物件 的指標 回傳值事件處置器 -1 尚未呼叫函式 opendce -2 事件 ID 超出範圍 4-8 HIWIN MIKROSYSTEM CORP.

47 事件接收 4.6 seteventcode 設定事件代碼 此事件代碼可被視為一過篩器, 從眾多 PDL printl 命令中, 篩選出欲監控的特定訊息 int seteventcode(int code, MDCE *pcom); code PDL printl 命令中 mode2 的值 ( 請參閱函式 waitonmsgp) 預設值為 1 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 -1 尚未呼叫函式 opendce 備註不能動態變更 PDL printl 命令中 mode2 的值, 因為它是恆定的且已在 PDL 編譯時被定義 HIWIN MIKROSYSTEM CORP. 4-9

48 事件接收 4.7 getlasteventdata 取得最後呼叫的事件代碼的的字串與變數 int getlasteventdata(int id, char *pmsg, int *pparam, MDCE *pcom=null); id 事件 ID; 範圍 :0~199 其值須與 PDL printl 命令中 var1 的值一致 ( 請參閱函式 waitonmsgp), 所以建議將事件 ID 與 var1 的值皆設為從站編號 *pmsg printl 命令中的字串 ; 其大小應至少為 20 字元 *pparam 一陣列 陣列中的第一項為變數的數量, 其餘項目分別顯示每個變數的 32 位元值 若變數為 float 型態, 須將其轉態成浮點數, 而非整數 註 : 字串 (pmsg) 裡的變數型態須與 printl 命令裡的變數型態相符 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 -1 尚未呼叫函式 opendce -2 事件 ID 超出範圍 備註欲忽略指標 (*pmsg *pparam) 的內容, 請將其設為 NULL 範例 char reportstr[200]; int code=0x ; int id=1; HANDLE hevent=createevent(null, FALSE, FALSE, NULL); int timeout=10000; seteventcode(code, pcom); 4-10 HIWIN MIKROSYSTEM CORP.

49 事件接收 int error=insertevent(id, hevent, pcom); if(error){ sprintf(reportstr, "insertevent error = %ld", error); printout(reportstr); } else { error=waitforsingleobject(hevent, timeout); if(error==wait_timeout){ sprintf(reportstr, "Time out"); printout(reportstr); } else { int param[10]; char message[200]; error=getlasteventdata(id, message, param, pcom); if(error) { sprintf(reportstr, "get Data error = %ld", error); printout(reportstr); } else { sprintf(reportstr, "arrived message of id=%ld", id); printout(reportstr); printout(message); // 印出 PDL printl 命令的訊息 int n; int numpar=min(param[0],8); for(n=0;n<numpar;n++) { // 印出 sprintf(reportstr, "%ld %ld", n+1, param[n+1]); printout(reportstr); } } } } closeevent(id, pcom); // 關閉並清除事件 HIWIN MIKROSYSTEM CORP. 4-11

50 事件接收 此範例中,PDL 程式須執行 printl 命令以觸發 mode2 的值為 0x55 且從站編號 ( 事件 ID) 為 1 的事件 #long Z_id, X_id, Y_id; Z_id=0; X_id=1; Y_id=2; printl/103/ ("axis id=%ld; x axis: enc_pos=%ld, velocity=%g", X_id, x_enc_pos, x_vel_max); 4-12 HIWIN MIKROSYSTEM CORP.

51 5. 數據收集 ( 記錄 ) 5. 數據收集 ( 記錄 ) StartRecordData StartRecordDataN StartRecordFileN GetRecdordStatus StopRecord OpenRecord HIWIN MIKROSYSTEM CORP. 5-1

52 數據收集 ( 記錄 ) 5.1 StartRecordData 開始記錄 int StartRecordData(char *p[], int numvar, int rate, int numsamples, double *pdata, char *errstr, MDCE *pcom=null); *p[] 一陣列, 含一個或多個變數名稱 ; 其大小應至少為 numvar 的值 numvar 欲記錄的變數數量 rate 定義採樣率為 32000/rate Hz( 假設驅動器的採樣率為 32000) 因此, 每 rate* 秒, 變數就會被採樣一次 numsamples 每個變數欲記錄的最大樣本數 *pdata 一陣列, 含變數的數據 若為多個變數, 記錄完變數 1 的樣本數後, 才會記錄變數 2 的樣本數 因此,pdata[0] 為變數 1 的第一個數據,pdata[numSamples] 為變數 2 的第一個數據,pdata[n*numSamples] 為變數 n 的第一個數據 (n = 0 numvar-1) 故其大小應至少為 numvar*numsamples *errstr 錯誤的描述 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請從 *errstr 取得錯誤的描述 備註 (1) 此函式會立刻回傳回傳值 若回傳 0( 函式執行成功 ), 僅代表成功開始記錄, 不代表數據收集完成 此時呼叫函式 GetRecdordStatus, 即可知道記錄過程是否結束 收集到多少樣本 (2) 最終記錄到的樣本數或許會比 numsamples 所定義的來得少 rate 太小時, 就有可能會發生這種情況 ( 因與通訊速度相比, 實際記錄的頻率太快了 ) 即便如此, 成功收集到的數據仍為有效值 (3) 欲持續記錄 ( 直到 numsamples), 建議設 rate >= 8*numVar (4) 欲停止記錄, 請呼叫函式 StopRecord (5) 欲開啟記錄視窗, 請呼叫函式 OpenRecord 使用者可查看函式 StartRecordData 中設的所有以及其他即時的記錄資訊 5-2 HIWIN MIKROSYSTEM CORP.

53 數據收集 ( 記錄 ) 5.2 StartRecordDataN 開始記錄 int StartRecordDataN(char *varnames, int rate, int numsamples, double *pdata, char *errstr, MDCE *pcom=null); *varnames 一識別字, 含一個或多個變數名稱 請以 空白 或 逗號 區隔變數名稱 rate 定義採樣率為 32000/rate Hz( 假設驅動器的採樣率為 32000) 因此, 每 rate* 秒, 變數就會被採樣一次 numsamples 每個變數欲記錄的最大樣本數 *pdata 一陣列, 含變數的數據 若為多個變數, 記錄完變數 1 的樣本數後, 才會記錄變數 2 的樣本數 因此,pdata[0] 為變數 1 的第一個數據,pdata[numSamples] 為變數 2 的第一個數據,pdata[n*numSamples] 為變數 n 的第一個數據 (n = 0 numvar-1) 故其大小應至少為 numvar*numsamples *errstr 錯誤的描述 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請從 *errstr 取得錯誤的描述 備註此函式相似於函式 StartRecordData, 差別在於刪除了 numvar, 並以 *varnames 取代 *p[] 範例 StartRecordDataN("X_ref_pos, X_pcmd_err", 16, 5000, pdata, errstr); HIWIN MIKROSYSTEM CORP. 5-3

54 數據收集 ( 記錄 ) 5.3 StartRecordFileN 開始記錄, 並將結果存在特定的檔案裡 int StartRecordFileN(char *varnames, int rate, int numsamples, char *filename, char *errstr, int append, MDCE *pcom=null); *varnames 一識別字, 含一個或多個變數名稱 請以 空白 或 逗號 區隔變數名稱 rate 定義採樣率為 32000/rate Hz( 假設驅動器的採樣率為 32000) 因此, 每 rate* 秒, 變數就會被採樣一次 numsamples 每個變數欲記錄的最大樣本數 *filename 檔案名稱 *errstr 錯誤的描述 append 欲將結果存在舊檔裡, 設其為 1; 欲將結果存在新檔裡, 設其為 0 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請從 *errstr 取得錯誤的描述 備註 (1) 此函式相似於函式 StartRecordDataN, 差別在於結果是存在特定的檔案裡, 而不是存在陣列中 (2) 結果也會被存到 gpp 檔中 因此, 下面範例中的結果會被存到 "C:\\myresult.txt" 與 "C:\\myresult.gpp" 裡 (3) 使用者可利用 wingraph 工具查看 gpp 檔 欲從命令列操作, 請輸入 >wingraph myresult.gpp 範例 StartRecordFileN("X_ref_pos, X_pcmd_err", 16, 5000, "C:\\myresult.txt", pdata, errstr, 0); 5-4 HIWIN MIKROSYSTEM CORP.

55 數據收集 ( 記錄 ) 5.4 GetRecdordStatus 查看記錄過程是否結束 收集到多少樣本 int GetRecdordStatus(int *pnumsampcolect, MDCE *pcom); *pnumsamcolect pcom 已收集到的樣本數 指向 通訊物件 的指標 回傳值 0 記錄過程結束 2 進行中 3 檔案儲存失敗 -1 尚未呼叫函式 StartRecordData 備註使用者可在迴圈中呼叫此函式, 並印出 *pnumsamcolect 以查看數據收集的過程 HIWIN MIKROSYSTEM CORP. 5-5

56 數據收集 ( 記錄 ) 5.5 StopRecord 停止記錄 void StopRecord(MDCE *pcom=null); pcom 指向 通訊物件 的指標 回傳值無 備註 (1) 若記錄過程早已結束, 呼叫此函式時不會發生任何事情 (2) 欲在呼叫此函式後開始新的記錄過程, 請先呼叫函式 GetRecdordStatus, 確定前一個記錄過程已確實完成 範例 s=startrecordfilen(str, rate, numsampreq, "C:\\file1.txt", errstr, 0, pcom); Sleep(1000); StopRecord(pcom); int numsamp, cnt=0; int busy=getrecdordedstatus(&numsamp, pcom); while(busy==2 && cnt++<2000) { busy=getrecdordedstatus(&numsamp, pcom); Sleep(10); } if(busy==3) { // 檔案儲存失敗 } else if(cnt>=2000) { // 超時 5-6 HIWIN MIKROSYSTEM CORP.

57 數據收集 ( 記錄 ) } s=startrecordfilen(str, rate, numsampreq, "C:\\file2.txt", errstr, 0, pcom); HIWIN MIKROSYSTEM CORP. 5-7

58 數據收集 ( 記錄 ) 5.6 OpenRecord 開啟記錄視窗 void OpenRecord(int show=1, MDCE *pcom=null); show pcom 設為 1 以開啟記錄視窗 指向 通訊物件 的指標 回傳值無 備註 (1) 使用者可在此視窗中定義一個或多個欲記錄的變數 樣本數與速率 設定完成後, 點擊 Start(F5) 按鈕開始記錄, 再點擊 Graph 按鈕查看結果, 如下圖所示 (2) 若呼叫函式 StartRecordData, 此視窗中的變數會被更新為函式 StartRecordData 提供的變數 圖 HIWIN MIKROSYSTEM CORP.

59 6. 取得變數 / 陣列 6. 取得變數 / 陣列 GetVarAddr GetVarAddrType SetVarN GetVarN SetVarN GetVarN setarrayn getarrayn setarraydn getarraydn setarraysn getarraysn getpac getandsetarrayn getandsetarraydn GetScopeData GetErrorStr HIWIN MIKROSYSTEM CORP. 6-1

60 取得變數 / 陣列 當函式執行成功時, 本章節中大部分的函式都會回傳 int 型態的值 0 若回傳非零值, 請呼叫函式 GetErrorStr 以取得錯誤的描述 所有函式皆可視變數名稱為, 且可利用常數索引變數 ( 以取得陣列中的其中一個項目 ) 例如 :SetVarN("rec_buf[300]", 15, 0, NULL); 6.1 GetVarAddr 檢查變數的存在與大小 int GetVarAddr(char *varname, int slave, int *psize, MDCE *pcom=null); *varname slave *psize pcom 變數名稱 從站編號 變數大小 若為非陣列變數, 回傳 1; 若為陣列變數, 回傳陣列大小 若找不到此變數, 則回傳 -1 指向 通訊物件 的指標 回傳值變數的位址 若變數不存在, 則回傳 ADDERR(-100) 備註欲取得變數的型態, 請呼叫函式 GetVarAddrType 6-2 HIWIN MIKROSYSTEM CORP.

61 取得變數 / 陣列 6.2 GetVarAddrType 檢查變數的存在 大小與型態 int GetVarAddrType(char *varname, int slave, int *psize, int *ptype, MDCE *pcom=null); *varname slave *psize *ptype pcom 變數名稱 從站編號 變數大小 若為非陣列變數, 回傳 1; 若為陣列變數, 回傳陣列大小 若找不到此變數, 則回傳 -1 變數型態 1:short(16 位元整數 ) 4:pointer(32 位元 ) 2:long(32 位元整數 ) 8:64 位元變數 3:float(32 位元浮點數 ) 0: 找不到此變數 指向 通訊物件 的指標 回傳值變數的位址 若變數不存在, 則回傳 ADDERR(-100) HIWIN MIKROSYSTEM CORP. 6-3

62 取得變數 / 陣列 6.3 SetVarN 設定變數值 (32 位元 ) int SetVarN(char *varname, double data, int slave=0, MDCE *pcom=null); *varname data slave pcom 變數名稱 欲設定的變數值 若使用者以型態 float/long/short 設定, 其值會自動轉換成正確型態 double 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 6-4 HIWIN MIKROSYSTEM CORP.

63 取得變數 / 陣列 6.4 GetVarN 取得變數值 (32 位元 ) int GetVarN(char *varname, double *pdata, int slave=0, MDCE *pcom=null); *varname *pdata slave pcom 變數名稱 變數值 若使用者以型態 float/long/short 設定, 其值會自動轉換成正確型態 double 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 HIWIN MIKROSYSTEM CORP. 6-5

64 取得變數 / 陣列 6.5 SetVarN64 設定變數值 (64 位元 ) int SetVarN64(char *varname, _int64 data, int slave=0, MDCE *pcom=null); *varname 變數名稱 data 欲設定的變數值 (64 位元 ) slave 從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註變數型態須為 64 位元, 否則函式執行將失敗 6-6 HIWIN MIKROSYSTEM CORP.

65 取得變數 / 陣列 6.6 GetVarN64 取得變數值 (64 位元 ) int GetVarN64(char *varname, _int64 *pdata, int slave=0, MDCE *pcom=null); *varname 變數名稱 *pdata 變數值 (64 位元 ) slave 從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註變數型態須為 64 位元, 否則函式執行將失敗 HIWIN MIKROSYSTEM CORP. 6-7

66 取得變數 / 陣列 6.7 setarrayn 設定陣列 (32 位元 ) int setarrayn(char *varname, int *pdata, int num, int slave=0, MDCE *pcom=null); *varname *pdata num slave pcom 陣列名稱 欲複製到驅動器中的應用程式陣列 欲複製的變數數量 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 6-8 HIWIN MIKROSYSTEM CORP.

67 取得變數 / 陣列 6.8 getarrayn 取得陣列 (32 位元 ) int getarrayn(char *varname, int *pdata, int num, int slave=0, MDCE *pcom=null); *varname *pdata num slave pcom 陣列名稱 欲複製到應用程式中的驅動器陣列 欲複製的變數數量 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 HIWIN MIKROSYSTEM CORP. 6-9

68 取得變數 / 陣列 6.9 setarraydn 設定陣列 (64 位元 ) int setarraydn(char *varname, double *pdata, int num, int slave=0, MDCE *pcom=null); *varname *pdata num slave pcom 陣列名稱 欲複製到驅動器中的應用程式陣列 欲複製的變數數量 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註此函式相似於函式 setarrayn, 差別在於 *pdata 所指向的陣列為 64 位元 6-10 HIWIN MIKROSYSTEM CORP.

69 取得變數 / 陣列 6.10 getarraydn 取得陣列 (64 位元 ) int getarraydn(char *varname, double *pdata, int num, int slave=0, MDCE *pcom=null); *varname *pdata num slave pcom 陣列名稱 欲複製到應用程式中的驅動器陣列 欲複製的變數數量 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註此函式相似於函式 getarrayn, 差別在於 *pdata 所指向的陣列為 64 位元 HIWIN MIKROSYSTEM CORP. 6-11

70 取得變數 / 陣列 6.11 setarraysn 設定陣列 (16 位元 ) int setarraysn(char *varname, short *pdata, int num, int slave=0, MDCE *pcom=null); *varname *pdata num slave pcom 陣列名稱 欲複製到驅動器中的應用程式陣列 欲複製的變數數量 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註此函式相似於函式 setarrayn, 差別在於 *pdata 所指向的陣列為 16 位元 6-12 HIWIN MIKROSYSTEM CORP.

71 取得變數 / 陣列 6.12 getarraysn 取得陣列 (16 位元 ) int getarraysn(char *varname, short *pdata, int num, int slave=0, MDCE *pcom=null); *varname *pdata num slave pcom 陣列名稱 欲複製到應用程式中的驅動器陣列 欲複製的變數數量 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註此函式相似於函式 getarrayn, 差別在於 *pdata 所指向的陣列為 16 位元 HIWIN MIKROSYSTEM CORP. 6-13

72 取得變數 / 陣列 6.13 getpac 一次取得多個變數值 int getpac(char *varnames, char *l, void *data, int slave=0, MDCE *pcom=null); *varnames 一識別字, 含一個或多個 ( 至多 20 個 ) 變數名稱 請以 空白 或 逗號 區隔變數名稱 *l 一字元陣列, 按順序儲存與變數名稱相對應的變數型態 ; 其大小應至少為 20 1:short(16 位元整數 ) 3:float(32 位元浮點數 ) 2:long(32 位元整數 ) 8:64 位元變數 *data 一陣列, 按順序儲存與變數名稱相對應的變數值 ; 其大小取決於變數的數量 slave 從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註欲分別讀取此函式中的變數, 請呼叫函式 GetVarN 或 GetVarN64 範例 struct vargroup { long time; _int64 position; float velocity; short analoginput; long spare[10]; }; char vartypes[20]; 6-14 HIWIN MIKROSYSTEM CORP.

73 取得變數 / 陣列 char varlist[200]="fclk X_enc_pos X_vel_ff a2d[2]"; err=getpac(varlist, vartypes, &vargroup, 0, NULL); HIWIN MIKROSYSTEM CORP. 6-15

74 取得變數 / 陣列 6.14 getandsetarrayn 同時讀取與寫入陣列 (32 位元 ), 執行速度會比分別呼叫函式 getarrayn 與 setarrayn 還要快 int getarrayandsetn(char *varrep, int numrep, void *parrrep, char *varset, int numset, void *parrset, int slave, MDCE *pcom); *varrep 欲讀取的陣列名稱 numrep 欲讀取的變數數量 ; 範圍從 0 到 124 個 short 或 62 個 long *parrrep 欲複製到驅動器中的應用程式陣列 *varset 欲寫入的陣列名稱 numset 欲寫入的變數數量 ; 範圍從 0 到 124 個 short 或 62 個 long *parrset 欲複製到應用程式中的驅動器陣列 slave 從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註 parrrep 與 parrset 應指向適合當下驅動器 同樣型態的陣列 (float/long/short) 此函式不支援 64 位元 6-16 HIWIN MIKROSYSTEM CORP.

75 取得變數 / 陣列 6.15 getandsetarraydn 同時讀取與寫入陣列 (64 位元 ), 執行速度會比分別呼叫函式 getarraydn 與 setarraydn 還要快 int getarrayandsetdn(char *varrep, int numrep, double *parrrep, char *varset, int numset, double *parrset, int slave, MDCE *pcom); *varrep 欲讀取的陣列名稱 numrep 欲讀取的變數數量 ; 範圍從 0 到 124 個 short 或 62 個 long *parrrep 欲複製到驅動器中的應用程式陣列 *varset 欲寫入的陣列名稱 numset 欲寫入的變數數量 ; 範圍從 0 到 124 個 short 或 62 個 long *parrset 欲複製到應用程式中的驅動器陣列 slave 從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註此函式相似於函式 getandsetarrayn, 差別在於 : (a) 指向陣列的指標須為 double 型態 (b) 驅動器裡的變數 (*varrep 與 *varset) 須為 float 型態 (c) DLL 會在內部自行做型態轉換 HIWIN MIKROSYSTEM CORP. 6-17

76 取得變數 / 陣列 6.16 GetScopeData 在同一 DSP 中斷讀取一組變數與一個時間計數器 int GetScopeData(char *varnames, double *pdata, short *pfclk, int slave=0, MDCE *pcom=null); *varnames *pdata *pfclk slave pcom 一字串, 含一個或多個變數名稱 請以 空白 或 逗號 區隔變數名稱 一陣列, 含變數的數據 ; 其大小取決於變數的數量 基於 DSP 取樣率的計數器 ; 使用者可利用它將變數值畫在示波器上 從站編號 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註 (1) 此函式可應用於示波器 (2) 請在延遲不超過 200 毫秒的情況下, 持續呼叫此函式 否則, 會回傳錯誤代碼 300 因此, 第一次呼叫此函式時, 都會回傳錯誤代碼 300( 在沒有其他錯誤的情況下 ) 6-18 HIWIN MIKROSYSTEM CORP.

77 取得變數 / 陣列 6.17 GetErrorStr 取得錯誤的描述 void GetErrorStr(int errcode, char *str, int slave, char *errstr, MDCE *pcom=null); errcode *str slave *errstr pcom 變數 / 狀態取得函式 (SetVarN GetVarN setarrayn ) 的回傳值 變數 / 狀態名稱 從站編號 錯誤的描述 ; 其大小應至少為 200 位元組 指向 通訊物件 的指標 回傳值無 備註當其中一個變數 / 狀態取得函式回傳非零值時, 請呼叫此函式 HIWIN MIKROSYSTEM CORP. 6-19

78 取得變數 / 陣列 ( 此頁有意留白 ) 6-20 HIWIN MIKROSYSTEM CORP.

79 7. 取得狀態 7. 取得狀態 setstaten getstaten HIWIN MIKROSYSTEM CORP. 7-1

80 取得狀態 狀態為 1 位元之變數 ( 如布林值 ), 表示數位輸入 / 輸出與驅動器的內部狀態 ( 如軸運行 軸位置錯誤標誌 等 ) 狀態陣列中, 每一個位元代表一個狀態 7.1 setstaten 設定狀態 int setstaten(int slave, char *statename, int mode, MDCE *pcom=null); slave *statename mode pcom 從站編號 狀態名稱 欲設定的狀態 1 為觸發,0 為不觸發 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 7-2 HIWIN MIKROSYSTEM CORP.

81 取得狀態 7.2 getstaten 取得狀態 int getstaten(int slave, char *statename, int *state, MDCE *pcom=null); slave *statename *state pcom 從站編號 狀態名稱 狀態 1 為已觸發,0 為未觸發 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr 以取得錯誤的描述 備註 (1) 讀取狀態會比讀取變數快得多, 因狀態取自 DLL 的內部狀態表, 不須透過通訊連結取得資訊 (2) 狀態改變時, 內部狀態表會自動更新 HIWIN MIKROSYSTEM CORP. 7-3

82 取得狀態 ( 此頁有意留白 ) 7-4 HIWIN MIKROSYSTEM CORP.

83 8. 執行 PDL 函式 8. 執行 PDL 函式 RunFuncPdlN KillTask HIWIN MIKROSYSTEM CORP. 8-1

84 執行 PDL 函式 8.1 RunFuncPdlN 在驅動器中創造新的 task, 並執行特定的 PDL 函式 int RunFuncPdlN(char *pdlname, char *errstr, int slave, MDCE *pcom=null); *pdlname PDL 函式名稱 PDL 程式中, 任何以 _ ( 底線 ) 為開頭的標籤都會被上位控制器認得 *errstr 錯誤的描述 ( 不須呼叫函式 GetErrorStr) slave 從站編號 pcom 指向 通訊物件 的指標 回傳值執行此函式的 task ID(0~39) -1 函式執行失敗 請從 *errstr 取得錯誤的描述 備註若已執行含有特定 PDL 函式的 task, 則不會創造新的 task, 且會回傳既有的 task ID 8-2 HIWIN MIKROSYSTEM CORP.

85 執行 PDL 函式 8.2 KillTask 終止 / 暫停 / 繼續 task int KillTask(int st, int en, int what, int slave, MDCE *pcom=null); st 起始 task ID en 結束 task ID what 0 終止 task(s);1 暫停 task(s);2 繼續 task(s) slave 從站編號 pcom 指向 通訊物件 的指標 回傳值 0 函式執行成功 非零值 函式執行失敗 請呼叫函式 GetErrorStr( 將 str 設為 " ") 以取得錯誤的描述 備註若只須終止一個 task, 請設定 st = n en = n+1, 其中 n 可為函式 RunFuncPdlN 所回傳的 task ID HIWIN MIKROSYSTEM CORP. 8-3

86 執行 PDL 函式 ( 此頁有意留白 ) 8-4 HIWIN MIKROSYSTEM CORP.

87 9. 回調函式 9. 回調函式 setcallbackstevnt HIWIN MIKROSYSTEM CORP. 9-1

88 回調函式 使用者可透過呼叫本章的函式, 來定義一個可隨時被改變或解除 ( 將 func 設為 NULL) 的回調函式 9.1 setcallbackstevnt 狀態改變時會主動通知使用者, 並進行相對應的處理工作 void setcallbackstevnt(void (*func)(byte, int), MDCE *pcom); type 狀態類型 id 狀態 ID pcom 指向 通訊物件 的指標 回傳值無 備註 type 與 id 是 < 組態檔名稱.stt> 檔中為每個狀態所定義的狀態屬性 當狀態改變時, 須呼叫函式 PutEventSt, 且 type 中前兩個位元的其中一位元為 1( 定義送出事件方向的改變 ) 詳細內容請參閱手冊 PDL Reference Manual for D-series Drives 範例 void PutEventSt(BYTE type, int id) { char str[200]; sprintf(str, "state change, type=%02x, id=%ld", type, id); MessageBox(str); } setcallbackstevnt(puteventst, NULL); // 以回調函式指標設置 DLL 9-2 HIWIN MIKROSYSTEM CORP.

89 10. 錯誤代碼 10. 錯誤代碼 HIWIN MIKROSYSTEM CORP. 10-1

90 錯誤代碼 錯誤代碼表格如下所示 表 11.1 代碼編號 描述 31 從站編號超出範圍 (0~31) 101 讀取失敗 102 寫入失敗 103 封包錯誤 104 無回應 105 檢查總和錯誤 106 大小超出範圍 107 極性錯誤 108 過載錯誤 109 緩衝器溢位 110 封包錯誤 111 中止 112 網路同步錯誤 113 Can 錯誤 114 回應大小錯誤 115 起始位元組錯誤 116 主站啟動 117 EtherCAT mega-ulink 錯誤 118 EtherCAT mega-ulink 處於測試模式 131 USB 裝置不存在 151 通訊 FIFO 已滿 152 大小轉換錯誤 153 不能通訊 154 遠端無連線 155 本地通訊被阻檔 156 通訊失敗 157 透過 Ethernet 的遠端無連線 158 EtherCAT mega-ulink 從站無回應 201 無法辨識的變數 202 從站名稱未定義 203 從站變數清單裡含一個或多個無法辨識的變數 204 變數不為 short 型態 220 變數不為 64 位元型態 10-2 HIWIN MIKROSYSTEM CORP.

91 錯誤代碼 221 變數為 64 位元型態 251 從站裡有無法辨識的函式 252 從站名稱未定義 260 PDL 不在從站中執行 261 從站處於啟動模式 262 Task ID 超出範圍 263 從站不處於啟動模式 270 寫入緩衝器遭拒 271 緩衝器大小的設定超出範圍 272 讀取變數遭拒 273 變數數量超出範圍 274 預期的回應長度太大 275 只支援 16/32 位元型態的陣列 300 重新啟動示波器 301 示波器只支援 2 個變數 500 連結忙碌 501 無支援 502 主站啟動 503 無從站 504 連結錯誤 505 從站錯誤 506 無效位址 525 伺服器忙碌 600 狀態數量超出範圍 601 從站中有無法辨識的狀態 602 從站名稱未定義 651 不支援此通訊指令碼 801 額外的 802 遺失的 803 無法辨識的指令 1000 通訊物件尚未建立 HIWIN MIKROSYSTEM CORP. 10-3

92 錯誤代碼 ( 此頁有意留白 ) 10-4 HIWIN MIKROSYSTEM CORP.

93 11. 範例程式 11. 範例程式 初始化 MPI 函式庫 編碼器回授 HIWIN MIKROSYSTEM CORP. 11-1

94 範例程式 11.1 初始化 MPI 函式庫 MPI 函式庫初始化的流程如下圖所示 有需要的話再呼叫函式 showcomstatus Start setmfcmode diserrmsgbox opendce showcomstatus setcompar End 圖 範例以下為驅動器型號 D2T- -S 搭配 AC 馬達做 MPI 函式庫初始化的範例 setmfcmode(); diserrmsgbox(1); pcom=opendce("c:\\hiwin\\dce\\", "d2.dce"); showcomstatus(pcom); Status.AC_Connect=setComPar( m_ac_com, // 填入驅動器的通訊埠 若為 COM2: 設為 2 nbaudrate1, // bps: 設為 8 nmode, // RS-232(USB 接頭 ): 設為 1;EtherCAT mega-ulink: 設為 4 ntrid, // 不使用 : 設為 0 nrcid, // 不使用 : 設為 0 ncanbaudrate, // 不使用 : 設為 0 nmsgstand, // 不使用 : 設為 HIWIN MIKROSYSTEM CORP.

95 範例程式 ncanpipelevel, // 不使用 : 設為 0 ntimeout, nlocktime, niternum, pcom); HIWIN MIKROSYSTEM CORP. 11-3

96 範例程式 11.2 編碼器回授 此範例顯示如何在主控台下取得馬達的編碼器回授 備註 (1) 連線至驅動器前, 請呼叫函式 setmfcmode 以初始化 DLL (2) 初始化 DLL 後, 請呼叫函式 opendce 以建立通訊物件 (3) 建立通訊物件後, 請呼叫函式 setcompar 以設定驅動器的通訊 (4) PC 與驅動器的連結建立完成時, 請呼叫函式 GetVarN 以取得驅動器的 (5) 使用者可利用驅動器裡的馬達回授位置 X_enc_pos, 來讀取馬達的編碼器回授 所需 MPI 函式 void setmfcmode(); MDCE *opendce(); int setcompar(); int GetVarN(); void deletedce(); 範例 #include "stdafx.h" #include <Windows.h> #include <conio.h> #include <stdio.h> #include "mpint.h" // 加入 MPI 的標頭 void main() { MDCE *pcom=null; // 宣告 // MPI 函式 :DLL 初始化 setmfcmode(); // MPI 函式 : 打開通訊物件 pcom=opendce("c:\\hiwin\\dce\\", "d2.dce"); int nport, nbaudrate, bconnected; do 11-4 HIWIN MIKROSYSTEM CORP.

97 範例程式 { printf("\n Input number to select Communication port (1:COM1, 2:COM2, ) \ or -1 quit: "); scanf("%d", &nport); if (nport == -1) goto End; // 得到 -1 以結束應用程式 // MPI 函式 : 開始跟驅動器通訊 bconnected = setcompar( nport, nbaudrate=8, 1, 0, 0, 0, 0, 0, 100, 200, 6, pcom); }while (bconnected!=0); // bconnected = 0 代表通訊成功 否則, 請重新選擇通訊埠 int key; printf("command List:\n"); printf("input r : Read Encoder\n"); printf("input q : Quit The Application\n"); Loop : printf(">>command Input: "); key=getche(); printf("\n"); switch(key) { // 讀取馬達回授位置 // case r : { char* var = "X_enc_pos"; // 驅動器裡的馬達回授位置變數 double fpos; // MPI 函式 : 取回馬達回授位置 if (GetVarN(var,&fpos,0) == 0) printf("motor feedback position =%.0f counts.\n", fpos); else printf("failed to read feedback position!\n"); HIWIN MIKROSYSTEM CORP. 11-5

98 範例程式 } break; // 結束應用程式 // case q : goto End; break; } goto Loop; End: // MPI 函式 : 關閉通訊物件 deletedce(pcom); pcom=null; system("pause"); 11-6 HIWIN MIKROSYSTEM CORP.

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc) 作者 Amber 版本 1.0.0 日期 2012/04/25 頁數 1/7 如何使用 LED 燈顯示狀態? 適用於 : 平台 作業系統版本 XPAC utility 版本 XP-8000 系列 N/A N/A XP-8000-Atom 系列 WES2009 所有版本 N/A: Not applicable to this platform and OS. 注意! 欲變更系統的任何設定之前, 請先關閉

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

Microsoft Word - Delta Controller ASCII_RTU_TC

Microsoft Word - Delta Controller ASCII_RTU_TC Delta Controller ASCII/RTU ( 適用台達變頻器 伺服驅動器 PLC 溫度控制器 ) 人機預設值通訊速率 :9600, 7, None, 2 (ASCII); 9600, 8, None, 2 (RTU) 控制器站號 :1 控制區 / 狀態區 :None/None 控制器接線的說明 Delta Servo a. RS-232(DOP-A/AE/AS, DOP-B 系列適用 )

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8 Smart TPM Rev. 1001 Smart TPM Ultra TPM Smart TPM TPM...3 1. BIOS... 3 2. Infineon TPM Smart TPM... 4 2.1. Infineon TPM...4 2.2. Smart TPM...4 3. TPM... 5 3.1. Smart TPM TPM...5 3.2. Advanced Mode...8

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc Author WeiKai Version 1.0.0 Date 2013/4/14 Page 1/11 我如何在 XPAC 上建立一個 COM port 通訊程式 Applies to: Platform OS version XPAC utility version XPAC series All versions (WinCE6) All versions XPAC SDK 提供 XPAC 結合

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

資料結構之C語言重點複習

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - Class5.pptx C++ 程式初探 V 2015 暑期 ver. 1.0.1 C++ 程式語言 大綱 1. 大量檔案讀取 & 計算 2. 指標 3. 動態記憶體 & 動態陣列 4. 標準函式庫 (STL) vector, algorithm 5. 結構與類別 2 大量檔案讀取 & 計算 若目前有一個程式將讀取純文字文件 (.txt) 中的整數, 並將該文件中的整數有小到大排序後, 儲存到另外一個新的純文字件中 假設有

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

Excel VBA Excel Visual Basic for Application

Excel VBA  Excel Visual Basic for Application Excel VBA Jun5,00 Sub 分頁 () Dim i As Integer Dim Cname As String Dim Code As Variant Set score=thisworkbook.sheets("sheet") Code=Array(" 專北一 "," 專北二 "," 專北三 "," 專桃園 "," 專桃竹 "," 專中苗 ", " 專台中 "," 專台南 ","

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

iziggi

iziggi iziggi 1 1 iziggi-hd 2 iziggi-hd 4 IPEVO iziggi-hd 6 iziggi-hd 8 iziggi-hd 9 Whiteboard App USB 10 iziggi-hd 11 iziggi-hd Live View WiFi 11 12 LED 12 iziggi-hd 13 Apple TV AirPlay 13 14 15 iziggi-hd *

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

PTS7_Manual.PDF

PTS7_Manual.PDF User Manual Soliton Technologies CO., LTD www.soliton.com.tw - PCI V2.2. - PCI 32-bit / 33MHz * 2 - Zero Skew CLK Signal Generator. - (each Slot). -. - PCI. - Hot-Swap - DOS, Windows 98/2000/XP, Linux

More information

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

1

1 磁軌式讀卡機 1288 系列 使用手冊 Version 1.0 1 2 3 4 5 6 7 8 9 10 11 12 1288 MSR Micro controller : With Decoder Open Visual COM port to read data (UART Interface) From 1288 Or direct control 1288 by sending Command

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

ActiveX Control

ActiveX Control ActiveX Control For Visual Basic 2005.NET [ 版本 : 1.0] 1 安裝 Windows 驅動程式 請依照下列步驟 : 1. 執行 Windows 驅動程式安裝程式 ( 此範例為 PIO-DIO) 驅動程式位置 : CD:\NAPDOS\PCI\PIO-DIO\dll_ocx\Driver http://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/pio-dio/dll_ocx/driver/

More information

DeskJet F2180 DeskJet F4185 Deskjet F4280 DeskJet D2460 OK N/A N/A DeskJet 1660 OK ( 無提供 Win 2000 驅動 ) N/A N/A PSC 1315 Photosmart 2575 Photosmart C13

DeskJet F2180 DeskJet F4185 Deskjet F4280 DeskJet D2460 OK N/A N/A DeskJet 1660 OK ( 無提供 Win 2000 驅動 ) N/A N/A PSC 1315 Photosmart 2575 Photosmart C13 DPR-1061/1020/2000 印表機相容測試清單 * 若您所查詢之印表機不在以下列示清單中的話, 代表該印表機為不支援或該型號尚未測試驗證, 建議先與印表機廠商確認您所使用的印表機是否可支援搭配列印伺服器及網路列印使用 相關資訊 : 1. 以下為實際通過 DPR-1061 測試的型號以多功能事務機為主, 並必須搭配 PS-Software 中的 PS-Link 軟體使用, 一般印表機 ( 噴墨,

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

使用手冊

使用手冊 使用手冊 版權所有 2013 年 Microtek International, Inc. 保留所有權利 商標 Microtek MII MiiNDT ScanWizard Microtek International, Inc. Windows Microsoft Corporation 重要須知 Microtek Microtek Windows Microsoft Windows I49-004528

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆 Autodesk Product Design Suite Standard 20122 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆的產品設計計 Autodesk Product Design Suite Standard 版本中中包括以下軟體體產品

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

PIC_SERVER (11) SMTP ( ) ( ) PIC_SERVER (10) SMTP PIC_SERVER (event driven) PIC_SERVER SMTP 1. E-

PIC_SERVER (11) SMTP  ( ) ( ) PIC_SERVER (10) SMTP  PIC_SERVER (event driven)  PIC_SERVER SMTP  1.  E- (2005-02-01) (2005-04-28) PIC_SERVER (10) SMTP E-mail PIC_SERVER (event driven) E-mail PIC_SERVER SMTP E-mail 1. E-mail E-mail 1 (1) (2) (3) (4) 1 1. 2 E-mail A E-mail B E-mail SMTP(Simple Mail Transfer

More information

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc)

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc) 作者 Amber 版本 1.0.0 日期 2012/04/24 頁數 1/9 如何使用 watchdog 防止程式當機? 適用於 : 平台 作業系統版本 XPAC utility 版本 XP-8000 系列 WES2009 所有版本 XP-8000-Atom 系列 WES2009 所有版本 注意! 欲變更系統的任何設定之前, 請先關閉 EWF 的保護, 方能使變更值生效 ; 設定完成之後, 請再開啟

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

TC35短信发送程序设计

TC35短信发送程序设计 http://www.dragonsoft.net.cn/down/project/tc35_sms.rar TC35 AT /down/book/tc35_at.pdf TC35/TC35i GSM Modem TC35 GSM POS COM SIM DOWN COM E, vbcr AT VB6.0 1)C# http://www.yesky.com/softchannel/72342380468109312/20040523/1800310.shtml,

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

碩命題橫式

碩命題橫式 一 解釋名詞 :(50%) 1. Two s complement of an integer in binary 2. Arithmetic right shift of a signed integer 3. Pipelining in instruction execution 4. Highest and lowest layers in the TCP/IP protocol suite

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - VB14.ppt VB 列表盒 LISTBOX 應用 資科系 林偉川 執行畫面 1 2 1 重要屬性 LISTBOX 物件 (VB6) 新增至 LISTBOX 物件中 ADDITEM 自 LISTBOX 物件中刪除選取物件 REMOVEITEM 自 LISTBOX 物件中取出選取物件 ListIndex 顯示 LISTBOX 物件中紀錄個數 Listcount 3 LISTBOX 物件 (VB.NET) 重要屬性 新增至

More information

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc TwinCAT 2001.12.11 TwinCAT 1. TwinCAT... 3 2.... 4... 4...11 3. TwinCAT PLC... 13... 13 PLC IEC 61131-3... 14 4. TwinCAT... 17... 17 5. TwinCAT... 18... 18 6.... 19 Maschine.pro... 19... 27 7.... 31...

More information

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f 27 1 Vol.27 No.1 CEMENTED CARBIDE 2010 2 Feb.2010!"!!!!"!!!!"!" doi:10.3969/j.issn.1003-7292.2010.01.011 OPC 1 1 2 1 (1., 412008; 2., 518052), OPC, WinCC VB,,, OPC ; ;VB ;WinCC Application of OPC Technology

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

SA-DK2-U3Rユーザーズマニュアル

SA-DK2-U3Rユーザーズマニュアル USB3.0 SA-DK2-U3R 2007.0 2 3 4 5 6 7 8 System Info. Manual Rebuild Delete RAID RAID Alarm Rebuild Rate Auto compare Temp Management Load Default Elapse time Event Log 0 2 3 4 2 3 4 ESC 5

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

Microsoft Word - CMU200 WCDMA 手機測試步驟.doc

Microsoft Word - CMU200 WCDMA 手機測試步驟.doc 所有測試基於 3GPP TS34.121 CMU200 WCDMA 手機測試步驟 CMU200 測試前的設置 1. 按 Reset 鍵初始化 CMU200 2. 按 Menu Select 鍵, 選擇 WCDMA FDD Signaling 3. 按 BS Signal 軟鍵 ( 螢幕下部 X 軸 ), 進入 Node-B Settings, 選擇 Level Reference, 設置 Output

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63> 全國高級中等學校 106 學年度商業類科學生技藝競賽 程式設計 職種 學科 試卷 選手證號碼 ( 崗位編號 ): 姓名 : 注意事項 : 請將答案劃記於答案卡, 未依規定劃記者不予計分 試題說明 :( 選擇題共 25 題每題 4 分, 答錯不倒扣, 共 100 分 ) ( )1. 執行以下 Visual Basic 程式片段, 其結果為何?(A) 15 (B) 12 (C) 7 (D) 3 Dim

More information

SyncMail AJAX Manual

SyncMail AJAX Manual HKBN Cloud Mail on Mobile How to setup POP3 and IMAP (Version 1.1) 1 Table of Contents HKBN Cloud Mail 用戶設定 Android 手冊 HKBN Cloud Mail Android Setup... 3 Android 2.X... 3 Android 3.x - 4.X... 6 HKBN Cloud

More information

目錄 目錄 關於手冊 NModbus API 函數 Master API CreateRtu CreateIp CreateAscii WriteSin

目錄 目錄 關於手冊 NModbus API 函數 Master API CreateRtu CreateIp CreateAscii WriteSin NModbus API 手冊 版本 1.1, 2013.8 Written by Renee Lin 目錄 目錄... 2 1. 關於手冊... 4 2. NModbus API 函數... 5 2.1. Master API... 5 2.1.1. CreateRtu... 5 2.1.2. CreateIp... 6 2.1.3. CreateAscii... 7 2.1.4. WriteSingleCoil...

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information

Microsoft PowerPoint - STU_C_Lang_CH13.ppt

Microsoft PowerPoint - STU_C_Lang_CH13.ppt 第 13 章 動態配置記憶體 程式設計與生活 - 使用 C 語言 Shi-Huang Chen Spring 2013 第 13 章 動態配置記憶體 13-1 記憶體配置函式 malloc( ) 13-2 動態配置結構陣列 配置記憶體 預估需求數量的範圍是一項不容易的學問 例 : 大到預估今年國家預算, 小到預估櫥窗裡展示的毛線衣, 需要多少磅毛線才能織成 撰寫程式時, 一樣無法預估程式執行所需的記憶體空間

More information

C

C C 2017 4 1 1. 2. while 3. 4. 5. for 6. 2/161 C 7. 8. (do while) 9. 10. (nested loop) 11. 12. 3/161 C 1. I 1 // summing.c: 2 #include 3 int main(void) 4 { 5 long num; 6 long sum = 0L; 7 int status;

More information

untitled

untitled XP248 1 XP248 XP248 DCS PLC SCnet SCnet DCS SCnet DCS 1.1 XP248 Modbus HostLink Modbus XP248 4 DB25 XP248 MODBUS XP248 SCControl XP248 4 RS232 RS485 4 32 XP248 COM0-COM1 COM2-COM3 1200 19200bit/s 5 8 1

More information

C 語言—陣列及字串

C 語言—陣列及字串 10/16 系程主講人 : 荊輔翔 概論 陣列 陣列是一個具有索引 (index) 性質的連續資料儲存空間集合 陣列中每一個資料儲存空間稱之為陣列元素 (array element); 它們都具有相同的資料名稱 資料型態 及空間大小 ; 但存取它們時則須藉由索引 ( 或稱註標 ) 來區別辨識 索引代表資料在陣列中的相對位址 ( 其計數由 0 開始, 其餘累加類推 ), 且須由中括號 [ ] 涵蓋之

More information

1

1 黎明國中 106 學年度 運算思維 生科與資訊課程 摩斯密碼 花現 GNP i 目錄 第 1 章 Arduino 搖桿... 1 1-1 搖桿連接 Arduino 擴充版... 1 1-2 藍芽連接 Arduino 擴充版... 1 1-3 Arduino 連接電腦... 1 1-4 Arduino 搖桿控制 LED 燈程式... 1 1-5 LED 燈傳遞 摩斯密碼 程式... 3 1-6 搖桿啟動

More information

封面-12

封面-12 第十二章 701Client TECHNOLOGY CO.,LTD. 701Client 701Server 701Client "701Client", 12-1 :supervisor :supervisor : 1. : 00~99 100 2. : 00~63 ( 63 / / ) 3. : 18 9 4. : 18 9 5. 12-2 TECHNOLOGY CO.,LTD. 701Client

More information

CHAPTER 1

CHAPTER 1 CHAPTER 1 1-1 System Development Life Cycle; SDLC SDLC Waterfall Model Shelly 1995 1. Preliminary Investigation 2. System Analysis 3. System Design 4. System Development 5. System Implementation and Evaluation

More information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

Go构建日请求千亿微服务最佳实践的副本

Go构建日请求千亿微服务最佳实践的副本 Go 构建 请求千亿级微服务实践 项超 100+ 700 万 3000 亿 Goroutine & Channel Goroutine Channel Goroutine func gen() chan int { out := make(chan int) go func(){ for i:=0; i

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice 路 ESW 聯 USB Chapter 9 Applications For Windows Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice USB I/O USB / USB 3 料 2 1 3 路 USB / 列 料 料 料 LED

More information

Microsoft Word - Sable User's Manual.doc

Microsoft Word - Sable User's Manual.doc SABLE 刻 字 机 使 用 手 册 1 注 意 GCC 星 云 保 留 在 不 事 先 通 知 的 情 况 下, 修 改 该 使 用 手 册 任 何 内 容 的 权 利! 禁 止 任 何 未 经 允 许 的 修 改 复 制 分 发 或 公 布! 关 于 此 手 册 有 任 何 问 题 或 意 见 请 联 系 您 的 当 地 经 销 商 2 目 录 安 全 操 作 注 意 事 项...5 第 一

More information

C/C++语言 - 分支结构

C/C++语言 - 分支结构 C/C++ Table of contents 1. if 2. if else 3. 4. 5. 6. continue break 7. switch 1 if if i // colddays.c: # include int main ( void ) { const int FREEZING = 0; float temperature ; int cold_ days

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

科学计算的语言-FORTRAN95

科学计算的语言-FORTRAN95 科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

Microsoft PowerPoint - php6.ppt

Microsoft PowerPoint - php6.ppt 進階 WWW 程式設計 PHP Array 靜宜大學資訊管理學系蔡奇偉副教授 1 內容大綱 陣列的種類 陣列的產生方式 讀取陣列元素值 字串中展開陣列變數值 改變陣列元素值 foreach 迴圈指令 list() 指令 插入 移除 與置換元素 2 陣列的種類 PHP 的陣列可用來儲存一組相同或不同型態的資料 PHP 提供下列兩種 不同存取方式的陣列 : 索引陣列 (indexed array) 用一個整數索引來存取陣列中的值

More information

C/C++ Programming

C/C++ Programming 265 第九講 結構 講師 : 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com 266 課程 大綱 結構 (struct) 結構宣告 [P.267] 結構定義 [P.268] 結構變數宣告 [P.269] 結構變數的初始化 [P.272] 存取結構成員 [P.244] 傳送 大型資料型態參數 [P.277] 267 結構宣告 結構是 一種衍 生的 自訂資料型態,

More information

Microsoft Word - InoTouch Editor编程软件手册2012.2.10.doc

Microsoft Word - InoTouch Editor编程软件手册2012.2.10.doc 目 录 第 一 章 关 于 InoTouch Editor 编 程 软 件 的 安 装... - 6-1.1 InoTouch 系 列 HMI 和 InoTouch Editor 软 件 的 简 介... - 6-1.2 安 装 InoTouch Editor 编 程 软 件... - 10-1.3 系 统 连 接 图... - 12-1.4 InoTouch 系 列 人 机 界 面 的 系 统 设

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

Microsoft PowerPoint - Class4.pptx

Microsoft PowerPoint - Class4.pptx C++ 程式初探 IV 2015 暑期 ver. 1.0.2 C++ 程式 IV 大綱 1. 時間函式 2. 格式化輸出 3. 遞迴函式 (recursion) 4. 字串 5. 字串轉型 2 補充語法 時間計算 引入標頭檔 #include #include #include #include using namespace

More information

Microsoft Word - 小心翼翼的二十一點N.doc

Microsoft Word - 小心翼翼的二十一點N.doc 投 稿 類 別 : 資 訊 類 篇 名 : 小 心 翼 翼 的 二 十 一 點 作 者 : 陳 鈺 文 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 李 伯 謙 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 胡 家 媛 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 指 導 老 師 : 周 曉 玲 老 師 陳 思 亮 主 任 壹 前 言 一 研 究 動 機 平

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10 Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10 Ác Åé å Serial ATA ( Silicon Image SiI3114) S A T A (1) SATA (2)

More information