opc與plc連接之后我想實時收到變化的資料,我現在用了回呼OnDataChange,能夠監控資料的變化,但是我沒辦法將得到的新變數與item對應,這個要怎么做啊
uj5u.com熱心網友回復:
沒有人嗎。。大神都去哪里了uj5u.com熱心網友回復:
你在初始化OPC與PLC連接的時候,不初始化對應變數的嗎?uj5u.com熱心網友回復:
function TOPCDataCallback.OnDataChange(dwTransid: DWORD; hGroup: OPCHANDLE;hrMasterquality: HResult; hrMastererror: HResult; dwCount: DWORD;
phClientItems: POPCHANDLEARRAY; pvValues: POleVariantArray;
pwQualities: PWordArray; pftTimeStamps: PFileTimeArray;
pErrors: PResultList): HResult;stdcall;
var
ClientItems: POPCHANDLEARRAY;
Values: POleVariantArray;
Qualities: PWORDARRAY;
I: Integer;
NewValue:array [0..1] of string;
OutputValue:array [0..1] of string;
begin
Result := S_OK;
ClientItems := POPCHANDLEARRAY(phClientItems);
Values:=POleVariantArray(pvValues);
Qualities:=PWORDARRAY(pwQualities);
for I:= 0 to dwCount-1 do
begin
if Qualities[I] = OPC_QUALITY_GOOD then
begin
NewValue[i]:= VarToStr(Values[I]);
OutputValue[i]:=format(' %d , value: %s', [ClientItems[i],NewValue[i]]);
//form1.Label1.Caption:=inttostr(ClientItems[0]);
// form1.Label2.Caption:=inttostr(ClientItems[1]);
end
else
begin
ShowMessage('Callback received for item , but quality not good');
end;
end;
end;
這個是資料變化觸發的回呼函式,里面的dwCount得到的是資料變化的item數量,所以ClientItems[i]我得到的和我實際的item是有出入的
uj5u.com熱心網友回復:
這個和我有沒有初始化有關系嗎
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/52162.html
標籤:VCL組件開發及應用
