freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

opc客戶(hù)端編程匯編(已修改)

2025-04-19 06:21 本頁(yè)面
 

【正文】 OPC編程匯編OPC客戶(hù)端的自動(dòng)化實(shí)現(xiàn)OPC是建立在COM,DCOM的基礎(chǔ)商的,因此絕大多數(shù)語(yǔ)言都可以很好的進(jìn)行開(kāi)發(fā)。在Net中開(kāi)發(fā)客戶(hù)端有以下幾種方式:(1)使用OPCNetAPI,(2)使用自動(dòng)化接口,(3)使用自定義接口,需要用到多個(gè)Wrapper:,,,以上開(kāi)發(fā)方式所需的動(dòng)態(tài)鏈接庫(kù)可以從OPC基金會(huì)()的網(wǎng)站上下載,一些下載項(xiàng)目可能需要注冊(cè),或成為基金會(huì)的成員。不同的方式有各自的有缺點(diǎn),請(qǐng)參見(jiàn)…本文使用自動(dòng)化接口,開(kāi)發(fā)項(xiàng)目是無(wú)線射頻(RFID)卡方面的應(yīng)用,典型的如公交車(chē),或公司考勤使用的刷卡機(jī)。需要注意的是自動(dòng)化接口存在一個(gè)“不是問(wèn)題”的問(wèn)題,數(shù)組下標(biāo)是以1開(kāi)始的,而不是傳統(tǒng)計(jì)算機(jī)開(kāi)發(fā)上的以0開(kāi)始。不知道設(shè)計(jì)者頭腦是怎么想(有人知道嗎?);這可能會(huì)給一些語(yǔ)言的開(kāi)發(fā)造成問(wèn)題(有人碰到嗎,沒(méi)有你就是幸運(yùn)的)需求:(一):客戶(hù)端開(kāi)發(fā)流程O(píng)PC客戶(hù)端的開(kāi)發(fā)主要遵循下圖所示的開(kāi)發(fā)流程,下面就從以下幾個(gè)開(kāi)發(fā)步驟進(jìn)行說(shuō)明(二):枚舉OPC服務(wù)器列表枚舉服務(wù)器主要是通過(guò)OPCServer接口的GetOPCServers方法來(lái)實(shí)現(xiàn)的,該方法會(huì)返回OPC服務(wù)器數(shù)組(以1為下界,上面已有說(shuō)明),以下是代碼段39。枚舉OPC服務(wù)器列表PrivateSubForm1_Load(ByValsenderAs,ByValeAs)HandlesTryGlobalOPCServer =New()DimServerListAsObject= ForindexAsShort= LBound(ServerList)ToUBound(ServerList)39。加入控件列表中,注意這里使用LBound和UBound(ServerList(index))NextIf 0Then = 0EndIfResetControlStatus()39。設(shè)置控件狀態(tài)GlobalOPCServer =NothingCatchExAsException(List OPC servers failed: + ,OPCSample, )EndTryEndSub(三):連接OPC服務(wù)器自動(dòng)化接口中連接到服務(wù)器是使用connect方法Public Overridable SubConnect(ByValProgIDAsString,Optional ByValNodeAsObject= Nothing)ProgID指服務(wù)器的ProgID,Node代表網(wǎng)絡(luò)節(jié)點(diǎn),如果是本機(jī)則放空即可。連接到服務(wù)器后,以下屬性需要特別注意::服務(wù)器的啟動(dòng)時(shí)間:服務(wù)器的當(dāng)前時(shí)間,各個(gè)客戶(hù)端可以通過(guò)這個(gè)屬性值完成一些同步的操作:以后添加的Group是否默認(rèn)激活:Group的默認(rèn)死區(qū),變化量超過(guò)死區(qū)后將會(huì)觸發(fā)DataChange事件,合理的設(shè)置該值可以提高程序性能:下屬組(Group)的數(shù)量:組(Group)的默認(rèn)通信區(qū)域編號(hào),如1024:組(Group)的默認(rèn)刷新率,該屬性也比較重要:組(Group)的默認(rèn)時(shí)間偏差(四):添加組(Group)和項(xiàng)(Item),以下是原型:FunctionAdd(Optional ByValNameAsObject= Nothing) AsFunctionAddItem(ByValItemIDAsString,ByValClientHandleAsInteger) As組也有兩個(gè)重要的屬性:刷新率,該屬性通Groups的UpdateRate意義一樣,如果這個(gè)值有設(shè)置,則以這個(gè)值為準(zhǔn)Group.IsSubscribed:是否使用訂閱功能以下是代碼段39。連接到指定的OPC服務(wù)器PrivateSubbtnConnectServer_Click(ByValsenderAs,ByValeAs)HandlesIf ThenConnectedOPCServer =New()Try()39。設(shè)置組集合的默認(rèn)屬性 =True = 039。添加組ConnectedGroup = () = 3 * 100039。刷新慮,用于下面的DataChange事件 =True39。使用訂閱功能39。添加項(xiàng)GlobalOPCItems(0) = (, 0)GlobalOPCItems(1) = (, 1)GlobalOPCItems(2) = (, 2)RefreshServerStatus()39。刷新服務(wù)器狀態(tài)CatchexAsExceptionConnectedOPCServer =Nothing(OPC server connect failed : + ,OPCSample, )EndTryResetControlStatus()EndIfEndSub(五):讀寫(xiě)操作與事件控制讀寫(xiě)操作包括同步和異步兩種操作方式,以下是這幾個(gè)方法的原型:Group的同步讀事件SubSyncRead(ByValSourceAsShort,ByValNumItemsAsInteger,ByRefServerHandlesAs,ByRefValuesAs,ByRefErrors,Optional ByRefQualitiesAsObject= Nothing,Optional ByRefTimeStampsAsObject= Nothing)Group的同步寫(xiě)事件SubSyncWrite(ByValNumItemsAsInteger,ByRefServerHandlesAs,ByRefValuesAs,ByRefErrorsAs)Group的異步讀事件SubAsyncRead(ByValNumItemsAsInteger,ByRefServerHandlesAs,ByRefErrorsAs,ByValTransactionIDAsInteger,ByRefCancelIDAsInteger)Group的異步寫(xiě)事件SubAsyncWrite(ByValNumItemsAsInteger,ByRefServerHandlesAs,ByRefValuesAs,ByRefErrorsAs,ByValTransactionIDAsInteger,ByRefCancelIDAsInteger)如果使用異步的讀寫(xiě)操作,那么還需要實(shí)現(xiàn)Group中的ReadComplete和WriteComplete兩個(gè)事件Public EventAsyncReadComplete(ByValTransactionIDAsInteger,ByValNumItemsAsInteger,ByRefClientHandlesAs,ByRefItemValues,ByRefQualitiesAs,ByRefTimeStampsAs,ByRefErrorsAs)Public EventAsyncWriteComplete(ByValTransactionIDAsInteger,ByValNumItemsAsInteger,ByRefClientHandlesAs,ByRefErrorsAs)其他相關(guān)的重要事件包括:Group數(shù)據(jù)變化時(shí)的通知事件Public EventDataChange(ByValTransactionIDAsInteger,ByValNumItemsAsInteger,ByRefClientHandlesAs,ByRefItemValuesAs,ByRefQualitiesAs,ByRefTimeStampsAs)Group的異步取消事件Public EventAsyncCancelComplete(ByValCancelIDAsInteger)Server(服務(wù)器)關(guān)閉通知事件Public EventServerShutDown(ByValReasonAsString)以下是這些實(shí)現(xiàn)的代碼段39。讀取卡片指定的塊號(hào)的值PrivateSubbtnReadCard_Click(ByValsenderAs,ByValeAs)IfNot(ConnectedGroupIsNothing)ThenTry39。獲取塊號(hào)DimBlockNoAsShort=CByte()39。如果要獲取數(shù)據(jù)的塊所對(duì)應(yīng)的項(xiàng)還沒(méi)有創(chuàng)建,就創(chuàng)建它IfGlobalOPCBlockItems(BlockNo)IsNothingThenGlobalOPCBlockItems(BlockNo) = (amp。CStr(BlockNo), 200 + BlockNo)EndIf39。準(zhǔn)備參數(shù)數(shù)組DimServerResultsAsDimServerErrorsAsDimServerHandles(1)AsIntegerServerHandles(1) = GlobalOPCBlockItems(BlockNo).ServerHandle39。讀取值(, 1, ServerHandles, ServerResults, ServerErrors)IfServerErrors(1) 0ThenMsgBox(Read Card Failed:amp。 ServerErrors(1))Else = ServerResults(1)EndIfCatchexAsException(OPC server Read Card failed: + ,OPCSample, )EndTryEndIfEndSub39。寫(xiě)卡片指定塊的值PrivateSubbtnWriteCard_Click(ByValsenderAs,ByValeAs)IfNot(ConnectedGroupIsNothing)ThenTry39。獲取塊號(hào)DimBlockNoAsShort=CByte()39。如果要寫(xiě)入數(shù)據(jù)的塊所對(duì)應(yīng)的項(xiàng)還沒(méi)有創(chuàng)建,就創(chuàng)建它IfGlobalOPCBlockItems(BlockNo)IsNothingThen1
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1