跳到主要内容

示例程序

// triton_lib_test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "triton_lib_evc.h"
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

static char *TimeFormat() //Neptune时间格式
{
SYSTEMTIME st;
GetLocalTime(&st);
char szTime[64] = {0};
sprintf(szTime, "%04d%02d%02d%02d%02d%02d%03d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
return szTime;
}

static DWORD WINAPI RecvDataFromNeptune(LPVOID pvParams)
{
while (1)
{
TritonDataRecv *sTritonDataRecv = new TritonDataRecv;
memset(TritonDataRecv, 0, sizeof(sTritonDataRecv));

int ret = triton_recv(sTritonDataRecv); //轮询Neptune是否有下发数据
if (ret != 0)
{
cout << TimeFormat().c_str() << "call triton_recv failed, errorcode: " << ret << endl;
}
else
{
if (sTritonDataRecv->size == 0)
{
Sleep(100);
continue;
}
cout << TimeFormat().c_str() << "receive data from Neptune: ";
for (int i = 0; i < sTritonDataRecv->size; i++)
{
cout << sTritonDataRecv->payload[i].szKey << " " << sTritonDataRecv->payload[i].szValue << "\t";
}
cout << endl;
}
delete sTritonDataRecv;
sTritonDataRecv = NULL;
Sleep(100);
}
return 0;
}

int _tmain(int argc, _TCHAR *argv[])
{
HANDLE hRecvData = CreateThread(NULL, 0, RecvDataFromNeptune, NULL, 0, 0); //使用线程检测是否收到Neptune下发数据
srand(GetTickCount());
int i_temp = 10;
while (i_temp-- > 0)
{
cout << endl;
TritonDataSend *sTritonDataSend = new TritonDataSend;
sTritonDataSend->size = 6;
for (int i = 0; i < sTritonDataSend->size; ++i)
{
sprintf(sTritonDataSend->payload[i].szKey, "%d", i + 1);
sprintf(sTritonDataSend->payload[i].szValue, "%.3f", (float)(rand() % 100) * 0.234); //生成一个随机value,用于测试
}
int rtn = triton_send(sTritonDataSend);
if (rtn == 0)
{
cout << TimeFormat().c_str() << "call triton_send success." << endl;
}
else
{
cout << TimeFormat().c_str() << "call triton_send fail." << endl;
return -1;
}
delete sTritonDataSend;
sTritonDataSend = NULL;
Sleep(1000);
}
cout << endl;
cout << "Press 'Enter' key exit..." << endl;
cin.get();
return 0;
}