update
This commit is contained in:
parent
d6d031172b
commit
6091e2cf2f
@ -108,11 +108,7 @@ const BYTE crc16tableLo[] = {
|
||||
CProcess::CProcess()
|
||||
{
|
||||
int i;
|
||||
#ifdef WIN32
|
||||
memset(&m_pid, NULL, sizeof(m_pid));
|
||||
#else
|
||||
m_pid = 0;
|
||||
#endif
|
||||
m_nProcess = -1;
|
||||
m_nCurUnit = 0;
|
||||
m_bUnitLoop = FALSE;
|
||||
|
@ -52,8 +52,6 @@ void CYCBW::PushYCBW(unionCP56Time& st, int order, LONG value, BYTE qds, int uid
|
||||
#endif
|
||||
m_save++;
|
||||
m_save = m_save % DATABASE_YCBW_NUM;
|
||||
|
||||
vLog(LOG_DEBUG, "push a ycbw value.\n");
|
||||
}
|
||||
|
||||
void CYCBW::DumpYCBW(void)
|
||||
|
@ -15,8 +15,8 @@
|
||||
|
||||
#define ADSP_READ_ID 100 //读取文件及文件夹ID
|
||||
#define ADSP_READ_ID_FUNCCODE 0x03 //读取文件及文件夹ID功能码。
|
||||
#define ADSP_READ_ID_REGISTER_ADDRESS 150 //读取文件及文件夹ID寄存器地址。
|
||||
#define ADSP_READ_ID_REGISTER_LENGTH 9 //读取文件及文件夹ID寄存器长度。
|
||||
#define ADSP_READ_ID_REGISTER_ADDRESS 300 //读取文件及文件夹ID寄存器地址。
|
||||
#define ADSP_READ_ID_REGISTER_LENGTH 32 //读取文件及文件夹ID寄存器长度。
|
||||
|
||||
|
||||
static datalen2mbaddrmap m_datalen2mbaddr_map;
|
||||
@ -348,7 +348,7 @@ static bool publishhistoryLowSpeedData(const noPollConn* conn, const int uid, co
|
||||
|
||||
static int ftpget(const char* remote, const char* local, const char* user, const char* pwd, const long timeout = 3, struct memory* chunk = NULL)
|
||||
{
|
||||
//vLog(LOG_DEBUG, "start to get %s to local %s, with name: %s, and password: %s.\n", remote, local, user, pwd);
|
||||
vLog(LOG_DEBUG, "start to get %s to local %s, with name: %s, and password: %s.\n", remote, local, user, pwd);
|
||||
curl_global_init(CURL_GLOBAL_ALL);
|
||||
CURL* curl = curl_easy_init();
|
||||
|
||||
@ -388,6 +388,8 @@ static void* ryftp_process(void* param)
|
||||
char remotePath[128] = "Hard Disk2/data/rtdatalog";
|
||||
char pathName[128] = "./";
|
||||
|
||||
char processName[128];
|
||||
snprintf(processName, sizeof(processName), "%s", mbt->GetCurProcessName());
|
||||
//配置远方路径
|
||||
char* escaped_string = escape_char_in_string(mbt->m_remotePath, ' ');
|
||||
if (escaped_string == NULL)
|
||||
@ -494,7 +496,7 @@ static void* ryftp_process(void* param)
|
||||
int result = ftpget(remote, name, user, password, 3, &chunk);
|
||||
if (result == CURLE_OK) {
|
||||
//成功,处理文件
|
||||
vLog(LOG_DEBUG, "get %s to local memory, with name: %s, and password: %s okay, and file length is: %d.\n", remote, user, password, chunk.size);
|
||||
vLog(LOG_DEBUG, "%s get %s to local memory, with name: %s, and password: %s okay, and file length is: %d.\n", processName, remote, user, password, chunk.size);
|
||||
ftpget_retry_count = 0;
|
||||
if (chunk.size <= (int)(sizeof(struRYDeviceData) << 5)) {
|
||||
vLog(LOG_DEBUG, "PLC文件生成未完成!\n");
|
||||
@ -597,7 +599,7 @@ static void* ryftp_process(void* param)
|
||||
mbt->m_lastReadDirNo++;
|
||||
}
|
||||
if (mbt->m_curStartDirNo <= mbt->m_lastReadDirNo && mbt->m_curStartFileNo <= mbt->m_lastReadFileNo) {
|
||||
vLog(LOG_DEBUG, "a已读取完成所有未读的文件。\n");
|
||||
vLog(LOG_DEBUG, "%s a已读取完成所有未读的文件。\n", processName);
|
||||
mbt->m_bHaveUnReadFile = FALSE;
|
||||
}
|
||||
}
|
||||
@ -617,7 +619,7 @@ static void* ryftp_process(void* param)
|
||||
bReadCurrentFile = FALSE;
|
||||
}
|
||||
} else if (result == CURLE_REMOTE_ACCESS_DENIED) {
|
||||
vLog(LOG_DEBUG, "b已读取完成所有未读的文件。\n");
|
||||
vLog(LOG_DEBUG, "%s b已读取完成所有未读的文件。\n", processName);
|
||||
mbt->m_bHaveUnReadFile = FALSE;
|
||||
bReadCurrentFile = TRUE;
|
||||
}
|
||||
@ -635,10 +637,10 @@ CHostADSBFProcess::CHostADSBFProcess()
|
||||
m_adsDatas[1].inuse = FALSE;
|
||||
m_adsDatas[2].inuse = FALSE;
|
||||
m_adsDatas[3].inuse = FALSE;
|
||||
m_adsDatas[0].adsDataMemAddr = 99999;
|
||||
m_adsDatas[1].adsDataMemAddr = 99999;
|
||||
m_adsDatas[2].adsDataMemAddr = 99999;
|
||||
m_adsDatas[3].adsDataMemAddr = 99999;
|
||||
m_adsDatas[0].adsDataMemAddr = 65535;
|
||||
m_adsDatas[1].adsDataMemAddr = 65535;
|
||||
m_adsDatas[2].adsDataMemAddr = 65535;
|
||||
m_adsDatas[3].adsDataMemAddr = 65535;
|
||||
|
||||
m_localIp = "192.168.0.1"; //本机IP地址
|
||||
m_localNetId = "192.168.0.1.1.1"; //本机IP地址
|
||||
@ -686,10 +688,10 @@ BOOLEAN CHostADSBFProcess::calc(void)
|
||||
m_adsDatas[1].inuse = FALSE;
|
||||
m_adsDatas[2].inuse = FALSE;
|
||||
m_adsDatas[3].inuse = FALSE;
|
||||
m_adsDatas[0].adsDataMemAddr = 99999;
|
||||
m_adsDatas[1].adsDataMemAddr = 99999;
|
||||
m_adsDatas[2].adsDataMemAddr = 99999;
|
||||
m_adsDatas[3].adsDataMemAddr = 99999;
|
||||
m_adsDatas[0].adsDataMemAddr = 65535;
|
||||
m_adsDatas[1].adsDataMemAddr = 65535;
|
||||
m_adsDatas[2].adsDataMemAddr = 65535;
|
||||
m_adsDatas[3].adsDataMemAddr = 65535;
|
||||
//需要给单元添加一个是否有ftp数据的标识
|
||||
if (m_bHaveFTP) config.units[uid].state |= 0x20; //存在ftp标识
|
||||
|
||||
@ -820,6 +822,8 @@ BOOLEAN CHostADSBFProcess::OnPreCreate(int id)
|
||||
//AddRemoteRoute(m_remoteIp, m_localNetId, m_localIp, std::string("isoftstone"), std::string("guest"), std::string("1"));
|
||||
|
||||
m_turbine = new AdsDevice{m_remoteIp, AmsNetId(m_remoteNetId), AMSPORT_R0_PLC_RTS1};
|
||||
readDeviceState(*m_turbine);
|
||||
vLog(LOG_DEBUG, "here.\n");
|
||||
|
||||
if (m_bHaveFTP)
|
||||
{
|
||||
@ -902,6 +906,12 @@ BOOLEAN CHostADSBFProcess::OnTimer(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CHostADSBFProcess::readDeviceState(const AdsDevice& route)
|
||||
{
|
||||
const auto state = route.GetState();
|
||||
vLog(LOG_DEBUG, "ADS state: %d devState: %d\n", (uint16_t)state.ads, (uint16_t)state.device);
|
||||
}
|
||||
|
||||
BOOLEAN CHostADSBFProcess::readFileID()
|
||||
{
|
||||
int uid = GetCurUnitID();
|
||||
@ -911,11 +921,46 @@ BOOLEAN CHostADSBFProcess::readFileID()
|
||||
BYTE buffer[1024];
|
||||
BYTE *pData = buffer;
|
||||
|
||||
BYTE params[MAX_UNIT_POINT_PARAM_SIZE];
|
||||
BYTE* pParam = params;
|
||||
|
||||
pData = ((std::array<BYTE, ADSP_READ_ID_REGISTER_LENGTH>)turbineData).data();
|
||||
WORD registerAddr = ADSP_READ_ID_REGISTER_ADDRESS;
|
||||
WORD wPathInfoInvalid = (WORD)((pData[1] << 8) | pData[0]); pData += 2;
|
||||
DWORD wCurrentFolderNo = (DWORD)(pData[3] << 24 | pData[2] << 16 | pData[1] << 8 | pData[0]); pData += 4;
|
||||
DWORD wCurrentFileNo = (DWORD)(pData[3] << 24 | pData[2] << 16 | pData[1] << 8 | pData[0]); pData += 4;
|
||||
DWORD wFirstFileNoInFolder = (DWORD)(pData[3] << 24 | pData[2] << 16 | pData[1] << 8 | pData[0]); pData += 4;
|
||||
DWORD wFileCountInFolder = (DWORD)(pData[3] << 24 | pData[2] << 16 | pData[1] << 8 | pData[0]); pData += 4;
|
||||
DWORD wFirstFolderNoRecoverable = (DWORD)(pData[3] << 24 | pData[2] << 16 | pData[1] << 8 | pData[0]); pData += 4;
|
||||
DWORD wFirstFileNoRecoverable = (DWORD)(pData[3] << 24 | pData[2] << 16 | pData[1] << 8 | pData[0]); pData += 4;
|
||||
|
||||
m_iv = wPathInfoInvalid;
|
||||
if (m_iv) {
|
||||
vLog(LOG_DEBUG, "路径信息无效\n");
|
||||
return FALSE;
|
||||
}
|
||||
//当前文件夹路径名
|
||||
m_currentDirNo = wCurrentFolderNo;
|
||||
//当前文件夹下最后新文件
|
||||
m_currentFileNo = wCurrentFileNo;
|
||||
//当前目录文件开始编号
|
||||
m_currentDirStartFileNo = wFirstFileNoInFolder;
|
||||
|
||||
|
||||
m_curStartDirNo = m_currentDirNo; //当前开始目录
|
||||
m_curStartFileNo = m_currentFileNo; //当前开始文件
|
||||
//判断是否有要读取的文件
|
||||
if (m_curStartDirNo <= m_lastReadDirNo && m_curStartFileNo <= m_lastReadFileNo)
|
||||
{
|
||||
vLog(LOG_DEBUG, "不存在未读的文件。\n");
|
||||
m_bHaveUnReadFile = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bHaveUnReadFile = TRUE;
|
||||
int dir_count = m_curStartDirNo - m_lastReadDirNo + 1;
|
||||
int file_count = m_curStartFileNo - m_lastReadFileNo;
|
||||
vLog(LOG_DEBUG, "%s 总共有%d个目录的%d个文件未读取。\n", GetCurProcessName(), dir_count, file_count);
|
||||
}
|
||||
|
||||
vLog(LOG_DEBUG, "%s 最新文件夹编号: %ld, 最新文件名编号: %ld: 最新文件夹中第一个文件的编号: %ld\n", GetCurProcessName(), m_currentDirNo, m_currentFileNo, m_currentDirStartFileNo);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -74,6 +74,7 @@ public:
|
||||
private:
|
||||
BOOLEAN calc(void);
|
||||
|
||||
void readDeviceState(const AdsDevice& route);
|
||||
BOOLEAN readRealData(void);
|
||||
BOOLEAN readFileID(void);
|
||||
};
|
||||
|
@ -1739,11 +1739,11 @@ BOOLEAN CHostModbusTcpBFProcess::OnReceiveIDData(CHostModbusTcpBFProcessItem *pI
|
||||
pBuf = pData;
|
||||
|
||||
/*
|
||||
1)、路径信息是否有效 byte;
|
||||
1)、路径信息是否有效 byte;
|
||||
2)、当前文件夹路径名的后缀 dint,按照顺序增加1(转字符串时在前补0);
|
||||
3)、当前文件夹下最后新文件的编号 dint;
|
||||
4)、当前文件夹下第一个文件的编号 dint;
|
||||
5)、当前文件夹下文件个数 dint;
|
||||
5)、当前文件夹下文件个数 dint;
|
||||
*/
|
||||
//路径有效性判断
|
||||
int iv = ((pBuf[0] << 8) | pBuf[1]); pBuf += 2;
|
||||
|
@ -52,6 +52,7 @@ public:
|
||||
if (m_nProcess < 0 || m_nProcess >= PROCESSES_NUM) return NULL;
|
||||
return config.processes[m_nProcess].name;
|
||||
}
|
||||
|
||||
inline int GetCurID(void) const
|
||||
{
|
||||
return m_nProcess;
|
||||
|
4
das-dn/third_party/AdsLib/AdsDevice.cpp
vendored
4
das-dn/third_party/AdsLib/AdsDevice.cpp
vendored
@ -143,8 +143,8 @@ long AdsDevice::GetLocalPort() const
|
||||
|
||||
AdsDeviceState AdsDevice::GetState() const
|
||||
{
|
||||
uint16_t state[2];
|
||||
if(m_Connected == true){
|
||||
uint16_t state[2] = {ADSSTATE_MAXSTATES, ADSSTATE_MAXSTATES};
|
||||
if (m_Connected == true) {
|
||||
auto error = AdsSyncReadStateReqEx(GetLocalPort(), &m_Addr, &state[0], &state[1]);
|
||||
if (error) {
|
||||
LOG_ERROR("AdsDevice can not read device state.");
|
||||
|
Loading…
Reference in New Issue
Block a user