MES-Connect Driver使用指南
Connect Driver使用指南
Sajet DriverUser’s Manual
Version 5.1
目 錄
2.3 Dirver說明- SajetTransStart:
2.4 Dirver說明- SajetTransClose:
2.5 Dirver說明- SendSajetDriver:
4. Protocal Format of f_pData paramenter
1. 軟體設計理念
本軟體主要是提供客戶自行撰寫程式,將資料傳送給MES系統,由MES系統確認資料的正確性與記錄的工作,MES系統也會將相關資料回傳回來
本軟體具備幾下的功能:
提供driver的function call,供user自行開發程式
2. ATE API軟體說明
2.1 安裝軟體
請先將本軟體的壓縮檔(Connect Driver.zip)解壓縮至電腦中,會發現有兩個目錄driver和sample,driver目錄下存放的是本軟體的Driver(SajetConnect.Dll),當撰寫程式時,這個目錄下的所有檔案須複製至同個目錄 ,而sample目錄下存放的是本軟體用Delphi 開發的sample範例。
2.2 Dirver基本說明:
我們提供的driver (SajetConnect.DLL) 包含了三個FUNCTION CALL ,茲簡易說明如下(程式的寫法可參考sample目錄下的程式):
(1) SajetTransStart:用來分配Driver的資源,當程式啟動後,須執行這個Function一次
(2) SajetTransClose:用來釋放driver所佔用的資源,當有呼叫過TransStart這個function之後,則必須在程式結束前呼叫這個function釋放資源
(3) SajetTransData:傳送定義好的資料給MES系統
2.3 Dirver說明- SajetTransStart:
這個function主要功用是Create Driver會使用到的相關資源,這個function只須於一開始呼叫過一次即可,當重覆呼叫時,driver會忽略而不處理,當執行成功後,即可透過SajetTransData這個function傳送資料給MES系統
#其宣告如下:
function SajetTransStart : boolean; stdcall;
#傳入變數:
無
#傳回結果:
型態為Boolean,當成功執行本function,即會回傳true值,當有下列情況時,會回傳false值,
(1) 啟動driver有發生exception
2.4 Dirver說明- SajetTransClose:
這個function主要功用用於釋放driver所佔用的資源,當程式要結束執行時,須呼叫這個function來釋放資源。
#其宣告如下:
function SajetTransClose : boolean; stdcall;
#傳入變數:
無
#傳回結果:
型態為Boolean,當成功執行本function,即會回傳true值,當有下列情況時,會回傳false值,
(1) 有發生exception
2.5 Dirver說明- SendSajetDriver:
當user要傳送資料給MES系統,即可呼叫這個function。
#其宣告如下:
function SajetTransData(f_iCommandNo : integer;f_pData,f_pLen : pointer) : boolean; stdcall;
#傳入變數:
f_iCommandNo:型態為integer指定此次資料所要執行的工作,相關說明請參閱Dirver說明-Function COMMAND
f_pData:型態為pointer,其值為一連續記憶體空間(例如ARRAY OF BYTE)的起始位置, 當USER傳送一字串資料給MES系統,則依序將值填入到這個記憶體空間,當執行完FUNCTION後,MES系統也會將要回傳的資料放到這個記憶體空間,這個記憶體空間的可為動態陣列或固定陣列,但最小長度須為100,以讓MES系統存放回傳訊息
f_pLen:型態為integer的pointer,用來儲放f_pData內資料的有效長度,當要執行function前,將要傳送資料的長度存放到此pointer所指定的 integer變數,當執行結束後,此pointer所指定的interger會存放回傳資料的有效長度,可根據此長度取得回得回傳訊息。
#傳回結果:
型態為Boolean,當成功執行本function,即會回傳true值,當有下列情況時,會回傳false值,
(1) 當driver沒有成功啟動時
(2) 傳入的值不合法
(3) 執行function有發生exception
f_pData中會存放MES回傳的訊息,而f_pLen中會存放回傳訊息的有效長度,可依據這兩個數值得到回傳訊息。
3. 連線軟體流程圖
每個Function Test的ATE工作站必須是Window base的程式介面, 並且要開放出輸入介面:
1. 提供作業員輸入工號。
2. 提供作業員輸入產品序號。
ATE須有一組測試機台(含PC,需網卡連接SFC網路),條碼槍(如確定序號可自動讀入則不須條碼槍)一支。
軟體編寫流程如下:
3.1 流程說明:
(1)輸入員工編號:於ATE上輸入作業員工號。系統會依據工號檢查是否正確,如不正確會要求重新輸入。
(2)呼叫API:設定 CMD = 1,Call API,格式如下。
(3)輸入產品序號:輸入目前進行作業的機台序號。系統會依據序號檢查流程是否正確,如不正確會要求重新輸入。
(4)呼叫API:設定 CMD = 2,Call API,格式如下。
(5)ATE啟動測試程序
(6)呼叫API:設定 CMD = 3,Call API,格式如下。
4. Protocal Format of f_pData paramenter
4.1 API 參數格式
function SajetTransData(f_iCommandNo : integer;f_pData,f_pLen : pointer) : boolean; stdcall;
當測試程式Call API的時候,要傳送資料給MES系統時,需要三個參數f_iCommandNo、f_pData、f_pLen。
MES系統即會依據COMMAND NO(f_iCommandNo)來處理工作,及進行資料(f_pData)的解碼,f_pData的資料必須以”;”當結尾,f_pData的資料和COMMAND NO的關係茲說明如下:
4.2 f_iCommandNo = 1
No | f_pData | f_pLen | Remark |
1 | Emp No; | ? | (檢查EMP NO) |
Ex:SajetTransData(1,f_pData,9);
f_pData=”SAJET001;”
本API(CMD=1)是用來檢查員工編號是否正確, 結果是OK表示檢查成功, 可以繼續下一個動作。
Return Status From MES
No | f_pData | f_pLen | Remark |
1 | OK; | 3 | |
1 | NG;[EC201] EMP NO NG; | 21 | Emp No Error |
1 | NG;[EC101] CALL DBA; | 20 | API time out |
Ex:return f_pData=’OK;’, f_pLen=3
Ex:return f_pData =‘NG;[EC201] EMP NO NG;’, f_pLen=21
Ex:return f_pData =‘NG;[EC101] CALL DBA;’, f_pLen=20
4.3 f_iCommandNo = 2
No | f_pData | f_pLen | Remark |
2 | SN; | ? | (檢查產品序號) |
Ex:SajetTransData(2,f_pData,16);
f_pData=” LiteOnPower0001;”
本API(CMD=2)是用來檢查序號以及檢驗流程, 結果是OK表示檢查成功, 可以繼續下一個動作。當回應是OK的時候, 本API可以一並回應與client端協議之訊息。
例如:MAC燒錄站以這個API(CMD=2), 可以檢查序號及流程, 並取得分配的MAC以及OS版本, 如下:
f_pData=’SN1234567890;’
假設檢查OK, 系統會回傳
f_pData=’OK;001492008DC9 6e6c3052 764c2f32 77777737 5c2d4e6c;OSXX;
其中001492…. 5c2d4e6c表示MAC, OSXX表示OS版本。
Return Status From MES
No | f_pData | f_pLen | Remark |
2 | OK; | 3 | |
2 | NG;[EC202] SN NG; | 17 | SN Error |
2 | NG;[EC999] Route NG:XXXXX | 20+Len(XXXXX) | 應該到XXXXX |
2 | NG;[EC101] CALL DBA; | 20 | API time out |
Ex:return f_pData=’OK;’, f_pLen=3
Ex:return f_pData=‘NG;[EC202] SN NG;’, f_pLen=17
Ex:return f_pData=‘NG;[EC101] CALL DBA;’, f_pLen=20
4.4 f_iCommandNo = 3
No | f_pData | f_pLen | Remark |
3 | EMP;SN;Result; Error Code1;Error Code2…; | ? | (記錄OK/NG) |
Ex1:SajetTransData(3,f_pData,28);
f_pData=”SAJET001;LiteOnPower0001;OK;”
Ex2:SajetTransData(3,f_pData,34);
f_pData=”SAJET001;LiteOnPower0001;NG;EC001;”
Ex2:SajetTransData(3,f_pData,40);
f_pData=”SAJET001;LiteOnPower0001;NG;EC001;EC002;”
本API(CMD=3)是用來記錄當站的測試結果, 結果只能是OK或是NG, 檢驗結果如果是NG, 需要附帶不良代碼。多個不良代碼須以’;’隔開。不良代碼需要先由DataCenter定義。
Return Status From MES
No | f_pData | f_pLen | Remark |
3 | OK; | 3 | |
3 | NG;[EC201] EMP NO NG; | 21 | EMP Error |
3 | NG;[EC202] SN NG; | 17 | SN Error |
3 | NG;[EC203] ERROR CODE NG; | 25 | Defect Code Error |
3 | NG;[EC101] CALL DBA; | 20 | API time out |
Ex:return f_pData=’OK;’, f_pLen=3
Ex:return f_pData=‘NG;[EC201] EMP NO NG;’, f_pLen=21
Ex:return f_pData=‘NG;[EC202] SN NG;’, f_pLen=17
Ex:return f_pData=‘NG;[EC202] ERROR CODE NG;’, f_pLen=25
Ex:return f_pData=‘NG;[EC101] CALL DBA;’, f_pLen=20
4.5 f_iCommandNo = 4
No | f_pData | f_pLen | Remark |
4 | EMP;SN;RESULT; | ? | 記錄檢驗結果(非量測值) |
Ex1:SajetTransData(4,f_pData,72);
f_pData=”SAJET001;LiteOnPower0001;Play Wave:P;Display:P;SD/MMC:P;LED:P;Buttons:P;”
本API(CMD=4)是用來記錄非量測值的測試結果, 測試結果會以memo形式被記錄在數據庫的欄位中。f_pLen長度勿超過255, 如超過255請分多次呼叫本API。
Return Status From MES
No | f_pData | f_pLen | Remark |
4 | OK; | 3 | |
4 | NG;[EC201] EMP NO NG; | 21 | EMP Error |
4 | NG;[EC202] SN NG; | 17 | SN Error |
4 | NG;[EC101] CALL DBA; | 20 | API time out |
Ex:return f_pData=’OK;’ f_pLen=3
Ex:return f_pData=‘NG;[EC201] EMP NO NG;’, f_pLen=21
Ex:return f_pData=‘NG;[EC202] SN NG;’, f_pLen=17
Ex:return f_pData=‘NG;[EC101] CALL DBA;’, f_pLen=20
4.6 f_iCommandNo = 5
No | f_pData | f_pLen | Remark |
4 | EMP;SN;RESULT; | ? | 記錄檢驗結果(量測值) |
Ex1:SajetTransData(5,f_pData,78);
f_pData=”SAJET001;LiteOnPower0001;1st ID:19;1st CNO:41; 2nd ID:3; 2nd CNO:36;3rd ID:15;”
本API(CMD=5)是用來記錄量測值的測試結果, 各項良測值必須是數字, 準備做管制圖統計分析。不同測試項目以’;’隔開, 測試項目與測試值中間是’:’。需要先由DataCenter定義測試項目。
Return Status From MES
No | f_pData | f_pLen | Remark |
5 | OK; | 3 | |
5 | NG;[EC201] EMP NO NG; | 21 | EMP Error |
5 | NG;[EC202] SN NG; | 17 | SN Error |
5 | NG;[EC301] TEST ITEM NG; | 24 | Test Item NG |
5 | NG;[EC302] TEST VALUE NG; | 25 | Test Value NG |
5 | NG;[EC101] CALL DBA; | 20 | API time out |
Ex:return f_pData=’OK;’, f_pLen=3
Ex:return f_pData=‘NG;[EC201] EMP NO NG;’, f_pLen=21
Ex:return f_pData=‘NG;[EC202] SN NG;’, f_pLen=17
Ex:return f_pData=‘NG;[EC301] TEST ITEM NG;’, f_pLen=24
Ex:return f_pData=‘NG;[EC302] TEST VALUE NG;’, f_pLen=25
Ex:return f_pData=‘NG;[EC101] CALL DBA;’, f_pLen=20
4.7 f_iCommandNo = 6
No | f_pData | f_pLen | Remark |
4 | EMP;SN;RESULT; | ? | 記錄檢驗結果(量測值) |
Ex1:SajetTransData(5,f_pData,67);
f_pData=”SAJET001;LiteOnPower0001;LOOP:300;RESULT:PASS;2nd CNO:36;3rd ID:15;”
本API(CMD=6)是用來記錄非量測值但是希望記錄各項的檢驗結果, 各項檢驗的結果內容不限定是數字(長度Varchar2:15)。不同測試項目以’;’隔開, 測試項目與測試值中間是’:’。需要先由DataCenter定義檢驗項目。
Return Status From MES
No | f_pData | f_pLen | Remark |
6 | OK; | 3 | |
6 | NG;[EC201] EMP NO NG; | 21 | EMP Error |
6 | NG;[EC202] SN NG; | 17 | SN Error |
6 | NG;[EC301] TEST ITEM NG; | 24 | Test Item NG |
6 | NG;[EC302] TEST VALUE NG; | 25 | Test Value NG |
6 | NG;[EC101] CALL DBA; | 20 | API time out |
Ex:return f_pData=’OK;’, f_pLen=3
Ex:return f_pData=‘NG;[EC201] EMP NO NG;’, f_pLen=21
Ex:return f_pData=‘NG;[EC202] SN NG;’, f_pLen=17
Ex:return f_pData=‘NG;[EC301] TEST ITEM NG;’, f_pLen=24
Ex:return f_pData=‘NG;[EC302] TEST VALUE NG;’, f_pLen=25
Ex:return f_pData=‘NG;[EC101] CALL DBA;’, f_pLen=20