📄 main.cpp
字号:
#include <windows.h>
#include <vector>
#include "../source.h"
#include "./xdps/XdpsApi30.h"
struct S_MapInfo {
char tag[128];
int id;
};
int main(int argc, char *argv[])
{
C_Source source;
if (!source.connect())
return -1;
vector<C_Source::iteminfo> itemList;
source.paraInfoList(itemList);
vector<S_MapInfo> analogMapList;
vector<S_MapInfo> statusMapList;
if (InitDatabase() != 0)
{
source.critical("无法正常初始化xdps接口");
return -1;
}
int count = itemList.size();
source.infoEx("para count = %d", count);
cout << "para count = " << count << endl;
S_MapInfo mapInfo;
for (int i=0; i<count; ++i)
{
if (itemList[i].type == 0) // 模拟量
{
mapInfo.id = GetAnalogPointID(itemList[i].tag);
if (mapInfo.id >= 0)
{
cout << "tag = " << mapInfo.tag << endl;
strcpy(mapInfo.tag, itemList[i].tag);
analogMapList.push_back(mapInfo);
}
}
else if (itemList[i].type == 16)
{
mapInfo.id = GetDigitalPointID(itemList[i].tag);
if (mapInfo.id >= 0)
{
cout << "tag = " << mapInfo.tag << endl;
strcpy(mapInfo.tag, itemList[i].tag);
statusMapList.push_back(mapInfo);
}
}
}
while (true)
{
if (GetDogRunningStatus() != 2)
{
source.critical("请检查加密狗设置...");
cout << "请检查加密狗设置..." << endl;
Sleep(60000);
continue;
}
int i;
char strVal[32];
cout << "开始处理模拟量" << endl;
// 处理模拟量
SAnalogPoint analogPoint;
int analogCount = analogMapList.size();
for (i=0; i<analogCount; ++i)
{
if (GetAnalogPoint(analogMapList[i].id, &analogPoint))
{
sprintf(strVal, "%.3f", analogPoint.fValue);
source.sendData(analogMapList[i].tag, strVal);
}
}
cout << "开始处理状态量" << endl;
// 处理状态量
SDigitalPoint digitalPoint;
int statusCount = statusMapList.size();
for (i=0; i<statusCount; ++i)
{
if (GetDigitalPoint(statusMapList[i].id, &digitalPoint))
{
sprintf(strVal, "%d", digitalPoint.wStatus);
source.sendData(statusMapList[i].tag, strVal);
}
}
Sleep(3000);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -