NAPOPC 伺服器 001

back

 

 問: 使用我們的 OPC Client 以及 NAP OPC Server 時, 當 DI 通道狀態為 ON 時, 顯示出來的值是 -1. 而且值的變化介於 

      與 -1 之間(OFF & ON) 而不是常見的 0 與 1.別家公司的 OPC server 顯示卻是正常的.

 

 

 答: 請參考"Automation Programmer's Reference/Microsoft Press" 這本書的第 164 以及 165 頁.

 ======= 截錄自"Automation Programmer's Reference" =======

 VT_I2
A 2-byte integer value is stored in iVal.

 VT_BOOL
A Boolean (True/False) value was specified. A value of 0xFFFF (all bits 1) indicates True; a value of 0 (all bits 0) indicates False. No other values are valid.

 ================ 結束截錄 ==================

 在 C/C++ 電腦語言��, 數值 0 表示 False; 其他值(例: 0xFFFF,-1 ,1 或 .... ) 表示 True.

 但是在 OLE/COM/DCOM/OPC 中, 數值 0xFFFF (等於 -1) 表示 True;數值 0 表示 False. 其他值是不合法的. 這是由

 Microsoft 公司在OLE 的規格書中所定義的.

 在 NAPOPC DA Server��, DI 通道使用 VT_BOOL 資料型態. 因此它永遠只能傳回 0xFFFF (等於 -1) 或 0 給前端軟體.而

 且前端軟體必需對這個數值 -1 作相對的解釋,例如可解釋成: "TRUE", "ON", "High" 或 .......

 如果其他公司的 OPC servers 傳回 0 或 1 來表示 False 或 True,我認為他們應該是使用 VT_I2 資料型態來傳回一個整數

 值. 如此,前 端軟體就必需去檢查傳回的數值是否介於 0 與 1 之間 (因為它可能傳回其他不合法的值).

 

 

back

撰寫: Gary 

日期:2004/9/7