test
This commit is contained in:
parent
68ccaa5f1b
commit
31371b8633
@ -1032,6 +1032,7 @@ BOOLEAN CHostADSBFProcess::readFileID()
|
|||||||
if (uid < 0 || uid >= UNIT_NUM) return TRUE;
|
if (uid < 0 || uid >= UNIT_NUM) return TRUE;
|
||||||
|
|
||||||
vLog(LOG_DEBUG, "%s here read file info\n", m_pidName.c_str());
|
vLog(LOG_DEBUG, "%s here read file info\n", m_pidName.c_str());
|
||||||
|
#if 0
|
||||||
AdsVariable <WORD> wPathInfoInvalid {*m_turbine, ".gwPathInfoInvalid"};
|
AdsVariable <WORD> wPathInfoInvalid {*m_turbine, ".gwPathInfoInvalid"};
|
||||||
//vLog(LOG_DEBUG, "Read back with first value %d\n", (WORD)wPathInfoInvalid);
|
//vLog(LOG_DEBUG, "Read back with first value %d\n", (WORD)wPathInfoInvalid);
|
||||||
AdsVariable <DWORD> wCurrentFolderNo {*m_turbine, ".gwCurrentFolderNo"};
|
AdsVariable <DWORD> wCurrentFolderNo {*m_turbine, ".gwCurrentFolderNo"};
|
||||||
@ -1046,7 +1047,77 @@ BOOLEAN CHostADSBFProcess::readFileID()
|
|||||||
//vLog(LOG_DEBUG, "Read back with first value %d\n", (DWORD)wFirstFolderNoRecoverable);
|
//vLog(LOG_DEBUG, "Read back with first value %d\n", (DWORD)wFirstFolderNoRecoverable);
|
||||||
AdsVariable <DWORD> wFirstFileNoRecoverable {*m_turbine, ".gwFirstFileNoRecoverable"};
|
AdsVariable <DWORD> wFirstFileNoRecoverable {*m_turbine, ".gwFirstFileNoRecoverable"};
|
||||||
//vLog(LOG_DEBUG, "Read back with first value %d\n", (DWORD)wFirstFileNoRecoverable);
|
//vLog(LOG_DEBUG, "Read back with first value %d\n", (DWORD)wFirstFileNoRecoverable);
|
||||||
|
#else
|
||||||
|
WORD wPathInfoInvalid;
|
||||||
|
myAdsVariable myPathInfoInvalid {*m_turbine, ".gwPathInfoInvalid"};
|
||||||
|
if (!myPathInfoInvalid.Read(2, &wPathInfoInvalid))
|
||||||
|
{
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD wCurrentFolderNo;
|
||||||
|
myAdsVariable myCurrentFolderNo {*m_turbine, ".gwCurrentFolderNo"};
|
||||||
|
if (!myCurrentFolderNo.Read(4, &wCurrentFolderNo))
|
||||||
|
{
|
||||||
|
vLog(LOG_ERROR, "Read .gwCurrentFolderNo error.\n");
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD wCurrentFileNo;
|
||||||
|
myAdsVariable myCurrentFileNo {*m_turbine, ".gwCurrentFileNo"};
|
||||||
|
if (!myCurrentFileNo.Read(4, &wCurrentFileNo))
|
||||||
|
{
|
||||||
|
vLog(LOG_ERROR, "Read .gwCurrentFileNo error.\n");
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD wFirstFileNoInFolder;
|
||||||
|
myAdsVariable myFirstFileNoInFolder {*m_turbine, ".gwFirstFileNoInFolder"};
|
||||||
|
if (!myFirstFileNoInFolder.Read(4, &wFirstFileNoInFolder))
|
||||||
|
{
|
||||||
|
vLog(LOG_ERROR, "Read .gwFirstFileNoInFolder error.\n");
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD wFileCountInFolder;
|
||||||
|
myAdsVariable myFileCountInFolder {*m_turbine, ".gwFileCountInFolder"};
|
||||||
|
if (!myFileCountInFolder.Read(4, &wFileCountInFolder))
|
||||||
|
{
|
||||||
|
vLog(LOG_ERROR, "Read .gwFileCountInFolder error.\n");
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD wFirstFolderNoRecoverable;
|
||||||
|
myAdsVariable myFirstFolderNoRecoverable {*m_turbine, ".gwFirstFolderNoRecoverable"};
|
||||||
|
if (!myFirstFolderNoRecoverable.Read(4, &wFirstFolderNoRecoverable))
|
||||||
|
{
|
||||||
|
vLog(LOG_ERROR, "Read .gwFirstFolderNoRecoverable error.\n");
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD wFirstFileNoRecoverable;
|
||||||
|
myAdsVariable myse {*m_turbine, ".gwFirstFileNoRecoverable"};
|
||||||
|
if (!myFirstFolderNoRecoverable.Read(4, &wFirstFileNoRecoverable))
|
||||||
|
{
|
||||||
|
vLog(LOG_ERROR, "Read .gwFirstFileNoRecoverable error.\n");
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
m_iv = (WORD)wPathInfoInvalid;
|
m_iv = (WORD)wPathInfoInvalid;
|
||||||
if (m_iv) {
|
if (m_iv) {
|
||||||
vLog(LOG_DEBUG, "路径信息无效\n");
|
vLog(LOG_DEBUG, "路径信息无效\n");
|
||||||
@ -1099,11 +1170,14 @@ BOOLEAN CHostADSBFProcess::readRealData()
|
|||||||
BYTE params[MAX_UNIT_POINT_PARAM_SIZE];
|
BYTE params[MAX_UNIT_POINT_PARAM_SIZE];
|
||||||
BYTE* pParam = params;
|
BYTE* pParam = params;
|
||||||
|
|
||||||
AdsVariable<std::array<BYTE, MAX_BLOCKF_SIZE>> turbineData {*m_turbine, ADSIGRP_IOIMAGE_RWOB, m_adsOverviewDataMemAddr};
|
// AdsVariable<std::array<BYTE, MAX_BLOCKF_SIZE>> turbineData {*m_turbine, ADSIGRP_IOIMAGE_RWOB, m_adsOverviewDataMemAddr};
|
||||||
pData = ((std::array<BYTE, MAX_BLOCKF_SIZE>)turbineData).data();
|
// pData = ((std::array<BYTE, MAX_BLOCKF_SIZE>)turbineData).data();
|
||||||
if (!m_turbine->IsConnected())
|
myAdsVariable turbineData {*m_turbine, ADSIGRP_IOIMAGE_RWOB, m_adsOverviewDataMemAddr};
|
||||||
|
if (!turbineData.Read(1024, buffer))
|
||||||
{
|
{
|
||||||
vLog(LOG_ERROR, "%s Read data error\n", m_pidName.c_str());
|
vLog(LOG_ERROR, "%s Read data error\n", m_pidName.c_str());
|
||||||
|
delete m_turbine;
|
||||||
|
m_turbine = NULL;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,52 @@
|
|||||||
#include "AdsVariable.h"
|
#include "AdsVariable.h"
|
||||||
#include "RouterAccess.h"
|
#include "RouterAccess.h"
|
||||||
using namespace Beckhoff::Ads;
|
using namespace Beckhoff::Ads;
|
||||||
//using namespace bhf::ads;
|
|
||||||
|
#include "AdsDevice.h"
|
||||||
|
|
||||||
|
namespace Beckhoff
|
||||||
|
{
|
||||||
|
namespace Ads
|
||||||
|
{
|
||||||
|
struct myAdsVariable {
|
||||||
|
myAdsVariable(const AdsDevice& route, const std::string& symbolName)
|
||||||
|
: m_Route(route),
|
||||||
|
m_IndexGroup(ADSIGRP_SYM_VALBYHND),
|
||||||
|
m_Handle(route.GetHandle(symbolName))
|
||||||
|
{}
|
||||||
|
|
||||||
|
myAdsVariable(const AdsDevice& route, const uint32_t group, const uint32_t offset)
|
||||||
|
: m_Route(route),
|
||||||
|
m_IndexGroup(group),
|
||||||
|
m_Handle(route.GetHandle(offset))
|
||||||
|
{}
|
||||||
|
|
||||||
|
BOOLEAN Read(const size_t size, void* data) const
|
||||||
|
{
|
||||||
|
if (!m_Route.IsConnected()) return FALSE;
|
||||||
|
uint32_t bytesRead = 0;
|
||||||
|
auto error = m_Route.ReadReqEx2(m_IndexGroup,
|
||||||
|
*m_Handle,
|
||||||
|
size,
|
||||||
|
data,
|
||||||
|
&bytesRead);
|
||||||
|
|
||||||
|
if (error || (size != bytesRead)) {
|
||||||
|
vLog(LOG_ERROR, "AdsVariable read failed: %d,%s\n", error, strerror(errno));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const AdsDevice& m_Route;
|
||||||
|
const uint32_t m_IndexGroup;
|
||||||
|
const AdsHandle m_Handle;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef std::unordered_map<short, short> register2typemap;
|
typedef std::unordered_map<short, short> register2typemap;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user