OPCDA客戶端開發過程記錄

2021-08-19 22:49:40 字數 2000 閱讀 4785

1. 遇到最大的問題是**:

r1 = m_iopcsyncio->read(opc_ds_device, 1, phserver, &pitemvalue, &perrors);

返回有問題0x74af1761 (rpcrt4.dll) (synopc.exe 中)處有未經處理的異常: 0xc0000005: 寫入位置 0x2b35fc13 時發生訪問衝突。

分析:當類中某個引數未初始化,然後去取值,會報同樣的錯,是不是讀資料的時候,數值沒有初始化?

//記憶體分配

phserver = new opchandle[1];

013c126e push

4013c1270 call operator new (013c4980h)

013c1275 add esp,4

013c1278 mov dword ptr [ebp-24h],eax

013c127b mov edx,dword ptr [ebp-24h]

013c127e mov dword ptr [phserver],edx

//通過server控制代碼選擇item(由additemt得到的)

phserver[0] = m_itemresult[0].hserver

;013c1281 mov eax,14h

013c1286 imul ecx,eax,0

013c1289 mov edx,4

013c128e imul eax,edx,0

013c1291 mov edx,dword ptr [phserver]

013c1294 mov esi,dword ptr ds:[13db548h]

013c129a mov ecx,dword ptr [esi+ecx]

013c129d mov dword ptr [edx+eax],ecx

r1 = m_iopcsyncio->read(opc_ds_device, 1, phserver, &pitemvalue, &perrors);

013c12a0 lea edx,[perrors]

013c12a3 push edx

013c12a4 lea eax,[pitemvalue]

013c12a7 push eax

013c12a8 mov ecx,dword ptr [phserver]

013c12ab push ecx

013c12ac push

1013c12ae push

2013c12b0 mov edx,dword ptr ds:[13db528h]

013c12b6 mov eax,dword ptr [edx]

013c12b8 mov ecx,dword ptr ds:[13db528h]

013c12be push ecx

013c12bf mov edx,dword ptr [eax+0ch]

013c12c2 call edx

013c12c4 mov dword ptr [r1],eax

//r1 = m_iopcsyncio->read(opc_ds_cache, 1, phserver, &pitemvalue, &perrors);

//釋放記憶體

delete phserver;

客戶端開發過程

客戶端程式的設計和實現可以被分成 2部分考慮 使用者處理過程 tuxedo 功能部分 下文的客戶端程式只描述了 tuxedo 功能部分。利用 tuxedo 的atmi api 呼叫可以做到 基本的 tuxedo 除錯技巧 tperrno,tpstrerror,userlog tuxedo 程序管理 ...

Qt客戶端開發記錄(整理中)

1 qt framelesswindowhint窗體可移動 可調邊框 邊框陰影 2 全域性快捷鍵 3 json應用 4 hdpi與多屏顯示 5 fancywidgets系列 popup effects button float layer mask overlay 6 qheaderview的hov...

ONVIF客戶端開發

在使用 gsoap 框架生成 之後,得到檔案 soapc.c soapclient.c stdsoap2.c stdsoap2.h duration.c wsdd.h我們利用現有的soapclient,呼叫api構建onvif請求 包括xml,http client 開發前需要了解一下onvif官網...