Skip to content

[QUESTION] Why is the data timestamp obtained by the OpenDAQ Client different from the timestamp provided by the OpenDAQ Server? #1202

Description

@DingDanJun

Question

Dear, OpenDAQ Team
I encountered a problem while using Open DAQ and I hope to get your assistance.
We have developed a data acquisition device based on OpenDAQ. Multiple devices synchronize their times using PTP1588 and can trigger multiple channels of multiple devices to start data acquisition simultaneously based on the device time.
Now, we are encountering a problem with the simultaneous triggering of data acquisition. The multiple channels of the devices do indeed start data acquisition almost simultaneously. For example, for 4 channels within one device, the timestamp of the first sampling point is relatively close. However, when the data is uploaded to the PC, the timestamps read from the OpenDAQ Client test program on the PC sometimes do not match the timestamps reported by the device. This occurs occasionally. Restarting the OpenDAQ Server on the device side may restore the normal operation. When the problem occurs, closing the channels and triggering again still shows the same phenomenon.

Below are the key codes for the Server side, namely ref_channel_impl.cpp
`void RefChannelImpl::collectSamples(std::chrono::microseconds curTime, bool discard)
{
//auto lock = this->getAcquisitionLock();
if (!acqActive || !sampleStart)
{
return;
}

bool debug = false;

uint64_t newSamples = 0;

const int64_t intervalUs = (curTime - lastLogTime).count();
//Print every 20 seconds, for debug.
if (intervalUs >= 1000000*20) 
{
	debug = true;
	lastLogTime = curTime;
}

int ret = sdaq_get_sample_remain(index);
if (ret < align)
{
    newSamples = 0;

	if (ret < 0)
	{
		LOG_E("sdaq_get_sample_remain ret:{} {}", ret, sdaq_get_err_string());
	}
	else
	{
	    if (debug)
		{
			LOG_W("collectSamples deltaT:{} time:{} start:{} samplesGenerated:{} DiffUs:{} diffMax:{} ret:{}", deltaT, curTime.count(), startTime.count(), samplesGenerated, readDiff, readDiffMax, ret);
    	}
		remainPre = ret;
	}
}
else
{
	newSamples = sdaq_byte_to_sample_count(index, ret, shift);	
}
 readDiff = (curTime - lastCollectTime).count();
 readDiffMax = MAX(readDiff, readDiffMax);

if (debug)
{
    LOG_W("collectSamples deltaT:{} time:{} start:{} samplesGenerated:{} DiffUs:{} diffMax:{} Samples:{}", deltaT, curTime.count(), startTime.count(), samplesGenerated, readDiff, readDiffMax, newSamples);
}

if (newSamples > 0)
{
     {     
        if (valueSignal.getActive())
        {
            const auto packetTime = samplesGenerated * deltaT + static_cast<uint64_t>(microSecondsFromEpochToStartTime.count()*1000);
            auto [dataPacket, domainPacket] = generateSamples(static_cast<uint64_t>(packetTime), samplesGenerated, newSamples, debug, discard);
            if ((!acqActive) || (domainPacket == nullptr) || (dataPacket == nullptr))
                return;

            timeSignal.sendPacket(std::move(domainPacket));
            valueSignal.sendPacket(std::move(dataPacket));
        }

        samplesGenerated += newSamples;
    }
 }

lastCollectTime = curTime;

}

std::tuple<PacketPtr, PacketPtr> RefChannelImpl::generateSamples(uint64_t curTime, uint64_t samplesGenerated, uint64_t& newSamples, bool debug, bool discard)
{
int remain = 0;
int overFlow = 0;

int channel = (int)index;
int ret;
static uint8_t  sampBuff[SAMPLE_BUFF_SIZE];
static uint64_t timeBuff[SAMPLE_BUFF_SIZE];
static float    analogBuff[SAMPLE_BUFF_SIZE];
static int32_t  adcBuff[SAMPLE_BUFF_SIZE];

//Read the sampling data stream. ADC Value And TimeStamp.
ret = sdaq_get_sample_data(channel, sampBuff, SAMPLE_BUFF_SIZE, align, &overFlow, &remain);
if (ret <= 0)
{
	LOG_E("sdaq_get_sample_data ret:{} {} newSamples:{}", ret, sdaq_get_err_string(), newSamples);
	newSamples = 0;
	return {nullptr, nullptr};
}
else if (discard)
{
	if (debug)
	{
		LOG_W("generateSamples discard");
	}
	return {nullptr, nullptr};
}
else
{
	//Convert the number of bytes to the number of samples 
	newSamples = sdaq_byte_to_sample_count(channel, ret, shift);
}

if (overFlow)
{
	overflowFlg |= overFlow;

	if (overFlow & 0x01)
	{
		overflowCnt++;
		LOG_E("generateSamples ret:{} overFlow:{} remain:{} remainPre:{} diffUs:{} diffMax:{}", ret, overFlow, remain, remainPre, readDiff, readDiffMax);
	}
}

remainPre = remain;

//ADC Value Convert to Volatage.
ret = sdaq_sbuff_to_analog(channel, sampBuff, analogBuff, timeBuff, adcBuff, newSamples, shift);
if (ret < 0)
{
	LOG_E("sdaq_sbuff_to_analog ret:{}", ret);
	streamErrFlg |= -ret;
	streamErrCnt++;
}
curTime = timeBuff[0];
auto domainPacket = DataPacket(timeSignal.getDescriptor(), newSamples, curTime);
if (timeSignalRule == Explicit_Rule)
{
    uint64_t* time = static_cast<uint64_t*>(domainPacket.getRawData());
    memcpy(time, timeBuff, sizeof(uint64_t)*newSamples);
}

DataPacketPtr dataPacket;
auto valueDescriptor = valueSignal.getDescriptor();

dataPacket = DataPacketWithDomain(domainPacket, valueSignal.getDescriptor(), newSamples);

float* buffer = static_cast<float*>(dataPacket.getRawData());
memcpy(buffer, analogBuff, sizeof(float)*newSamples);


if ((debug) || (samplesGenerated == 0))
{
	//Print the timestamp of the first sampling point
    LOG_W("generateSamples Generated:{} time:{} Samples:{} remain:{} overFF:{} overFC:{} strErrF:{} strErrC:{} value:{:.4f} adc:{:x} {:x}", samplesGenerated, curTime, newSamples, remain, overflowFlg,
    	overflowCnt, streamErrFlg, streamErrCnt, buffer[0], (uint32_t)adcBuff[0], (uint32_t)adcBuff[newSamples-1]);
	
	if (samplesGenerated == 0)
	{
		std::cout << std::fixed << std::setprecision(6) << " Value:" << buffer[0] << " " << buffer[1] << " " << buffer[2] << " "  << buffer[3]	<< std::endl;
	}
}

return {dataPacket, domainPacket};

}`

Below is the Client test code for the PC side (Code description: Configure external triggering for all channels, configure channel enablement. Then configure the device trigger, trigger at a specified time, wait for the trigger, read the sampling data, and check if the timestamp of the first sampling point is close to the specified triggering time. The SampleDataProcess function reads the data to check the timestamp of the first sampling point. The AutoTestProcess function controls the loop for configuring triggering, stopping triggering, and sampling.)
`#include <opendaq/opendaq.h>
#include <opendaq/work_factory.h>
#include
#include
#include
#include
#include
#include
#include

#ifndef MAX
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif

#define PRINTF(format, ...) printf("\033[0;32m" format "\033[0m", ## VA_ARGS)

using namespace daq;
using namespace std::literals::chrono_literals;
using namespace date;

#define DEVICE_MAX 8
#define CHAN_MAX 8
#define BUFF_SIZE (1024*50)

static int volatile stop;
static int errFlag = 0;

using namespace daq;
using namespace std::literals::chrono_literals;
using namespace date;
int trigger;
int triggerCnt = 4;
int64_t triggerTime;
static int testMode = 0;

daq::DevicePtr device;
daq::ComponentPtr trigSrc[CHAN_MAX];
static daq::StreamReaderPtr readers[CHAN_MAX];
int triggerNum;
int NumberOfChannels;
static uint32_t chan_mask = 15;
daq::ChannelPtr channel[CHAN_MAX];
daq::SignalPtr signal[CHAN_MAX];
static double samples[BUFF_SIZE];
static int64_t domainSamples[BUFF_SIZE];

double rate[32] = {200000, 200000, 200000, 200000, 200000, 200000, 200000, 200000};
uint32_t shift[32] = {0,0,0,0,0,0,0,0};

static double valueFist[CHAN_MAX];
static int64_t timeFist[CHAN_MAX];
static int64_t timeDeltaMax[CHAN_MAX] = {0};
static int64_t sampleCount[CHAN_MAX];

//
static double sampleMax[CHAN_MAX];
static double sampleMin[CHAN_MAX];
static double samplePre[CHAN_MAX];
static double sampleDelta[CHAN_MAX];

static int64_t trigDeltaMax[CHAN_MAX];

static int64_t timeDeltaTyp[CHAN_MAX];
static int64_t timeDeltaMin[CHAN_MAX];
static int64_t timePre[CHAN_MAX];
static int noData[CHAN_MAX];

static std::chrono::steady_clock::time_point testChangeTime;

// ANSI 颜色代码
namespace Color {
const std::string RED = "\033[31m";
const std::string GREEN = "\033[32m";
const std::string YELLOW = "\033[33m";
const std::string BLUE = "\033[34m";
const std::string MAGENTA = "\033[35m";
const std::string CYAN = "\033[36m";
const std::string WHITE = "\033[37m";
const std::string BRIGHT_RED = "\033[91m";
const std::string BRIGHT_GREEN = "\033[92m";
const std::string BRIGHT_YELLOW = "\033[93m";
const std::string BRIGHT_BLUE = "\033[94m";
const std::string BRIGHT_MAGENTA = "\033[95m";
const std::string BRIGHT_CYAN = "\033[96m";
const std::string BRIGHT_WHITE = "\033[97m";
const std::string RESET = "\033[0m";
const std::string BOLD = "\033[1m";
}

using namespace std::chrono_literals;
std::string formatTimestamp(int64_t nanoseconds_since_epoch) {
try {
// 方法1:使用 time_point_cast(推荐)
auto time_point = std::chrono::time_point_caststd::chrono::system_clock::duration(
std::chrono::system_clock::time_point{} + std::chrono::nanoseconds{nanoseconds_since_epoch});

    // 转换为 time_t 并分离纳秒部分
    auto seconds_since_epoch = std::chrono::system_clock::to_time_t(time_point);
    auto nano_fraction = time_point - std::chrono::system_clock::from_time_t(seconds_since_epoch);
	//int64_t nanoseconds = std::chrono::duration_cast<std::chrono::nanoseconds>(nano_fraction).count();
    int64_t nanoseconds = nanoseconds_since_epoch%1000000000;

    // 转换为本地时间
    std::tm local_tm;
    #ifdef _WIN32
        if (localtime_s(&local_tm, &seconds_since_epoch) != 0) {
            return "Time conversion error";
        }
    #else
        if (localtime_r(&seconds_since_epoch, &local_tm) == nullptr) {
            return "Time conversion error";
        }
    #endif

    // 格式化输出
    std::ostringstream oss;
    oss << std::put_time(&local_tm, "%Y-%m-%d %H:%M:%S");
    oss << "." << std::setw(9) << std::setfill('0') << nanoseconds << "ns";

    return oss.str();
}
catch (const std::exception& e) {
    return std::string("Error: ") + e.what();
}

}

std::string getCurrentTimeWithMilliseconds() {
auto now = std::chrono::system_clock::now();
auto ms = std::chrono::duration_caststd::chrono::milliseconds(
now.time_since_epoch()) % 1000;

auto now_time_t = std::chrono::system_clock::to_time_t(now);
std::tm local_tm = *std::localtime(&now_time_t);

std::stringstream ss;
ss << std::put_time(&local_tm, "%Y-%m-%d %H:%M:%S");
ss << '.' << std::setfill('0') << std::setw(3) << ms.count() << "> ";

return ss.str();

}

int get_line(char s[],int lim)
{
int c = 0, i;

memset(s, 0, lim);
for(i = 0; i < lim-1 && (c = getchar()) != '\n' && c != EOF; ++i)
   s[i] = (char)c;
if('\n'== c)
{
   //s[i++]='\n';
}
s[i]='\0';
return i;

}

void AtuoTestProcess(std::chrono::steady_clock::time_point& now)
{
uint32_t randTime;

if (now > testChangeTime)
{
    srand(static_cast<unsigned int>(time(0)));
	randTime = (uint32_t)rand()%10000;

	if (testMode == 1)
	{
		{
			trigSrc[trigger].setPropertyValue("Enable", false);
			trigSrc[trigger].setPropertyValue("ChanMask", 0);

			std::cout << getCurrentTimeWithMilliseconds();
			std::cout << " Trigger:"  << trigger << " Disable" << std::endl;

			for (int chan = 0; chan < NumberOfChannels; chan++)
			{
				if ((1 << chan) & chan_mask)
				{
					if (sampleCount[chan] == 0)
					{
						std::cout << std::fixed << std::setprecision(6) << Color::RED << "Error No Data: " << sampleCount[chan] << std::endl;
						errFlag++;
					}

					channel[chan].setPropertyValue("ChanEnable", false);
				}

				if (randTime < 10000)
					randTime = 10000;

				int64_t triggerDetal = timeFist[chan] - triggerTime;
				int64_t totalTimeNS = timePre[chan] - timeFist[chan];
				double  AverageRate = (double)(sampleCount[chan] - 1)*1000000000/totalTimeNS;
				double  SampleRate = channel[chan].getPropertyValue("SampleRate");

				std::cout << std::fixed << std::setprecision(6) << Color::BLUE << "***********************" << "-" << chan << "***********************" << std::endl;
				std::cout << "TriggerTime:" << triggerTime << " " << formatTimestamp(triggerTime) << " triggerDetal:"  << triggerDetal << " trigDeltaMax:" << trigDeltaMax[chan] << std::endl;

                std::cout << "Fist Value:" << valueFist[chan] << "\tTime:" << timeFist[chan] << "  " << formatTimestamp(timeFist[chan]) << std::endl;
				std::cout << "Last Value:" << samplePre[chan] << "\tTime:" << timePre[chan] << "  " << formatTimestamp(timePre[chan]) << std::endl;
				std::cout << "SetRate:" << rate[chan] << " SampleRate:" << SampleRate << " CalAverageRate:" << AverageRate
					<< " deviation:" << (AverageRate - rate[chan])/rate[chan]*100  << "% " << (AverageRate - SampleRate)/SampleRate*100 <<  "%" << std::endl;

				//std::cout << "TimeDeltaMax(ns):"  << timeDeltaMax[chan] << " TimeDeltaMin(ns):" << timeDeltaMin[chan] << " TimeDeltaTyp(ns):" << timeDeltaTyp[chan] << std::endl;
				//std::cout << "SampleCount:" << sampleCount[chan] << " MaxValue:"  << sampleMax[chan] << " MinValue:" << sampleMin[chan] << " ValueDeltaMax:" << sampleDelta[chan] << std::endl;
				std::cout << Color::RESET << std::endl;
			}
		}

		testChangeTime = now + std::chrono::milliseconds(randTime);
		std::cout << getCurrentTimeWithMilliseconds();
		std::cout << "Auto Test Stop, Wait " << randTime << "ms" << std::endl;

		testMode = 0;
	}
	else if (testMode == 0)
	{
		trigger = (trigger + 1) % triggerCnt;

		{
			for (int chan = 0; chan < NumberOfChannels; chan++)
			{
				if ((1 << chan) & chan_mask)
				{
					channel[chan].setPropertyValue("ExtTrigger", true);
					channel[chan].setPropertyValue("ChanEnable", true);

					timePre[chan] = 0;
					sampleCount[chan] = 0;
				}
			}

			trigSrc[trigger].setPropertyValue("Enable", false);
			trigSrc[trigger].setPropertyValue("ChanMask", chan_mask);
		}

		if (randTime < 3000)
			randTime = 3000;

		triggerTime = device.getPropertyValue("CurrentTime");


		std::cout << getCurrentTimeWithMilliseconds();
		std::cout << "dev0 CurrentTime:"  << triggerTime << " " << formatTimestamp(triggerTime) << std::endl;

		triggerTime = triggerTime/1000000000*1000000000;
		triggerTime = triggerTime + (uint64_t)(randTime/1000)*1000000000;

        trigSrc[trigger].setPropertyValue("Time", triggerTime);
        try {
            trigSrc[trigger].setPropertyValue("Enable", true);
        }
        catch (const DaqException& e)
        {
            std::cout << "Error DaqException" << e.what() << std::endl;
        }
        catch (const std::exception& e)
        {
            std::cout << "Error std::exception" << e.what() << std::endl;
        }
        catch (...)
        {
            printf("Error Failed Set trigger Enable\n");
            throw;
        }

		testChangeTime = now + std::chrono::milliseconds(randTime + 10000);
		testMode = 1;
		std::cout << "Auto Test Trigger " << trigger << " TriggerTime " << triggerTime << " " << formatTimestamp(triggerTime) << " Wait " << randTime << "ms" << std::endl;
	}
}

}

size_t SampleDataProcess(std::chrono::steady_clock::time_point& now, std::chrono::steady_clock::time_point& debugTime)
{
bool print = false;
daq::SizeT read = 0, thisRead;
if (now >= debugTime)
{
debugTime = now + std::chrono::milliseconds(1000);
print = true;
}

for (int chan = 0; chan < NumberOfChannels; chan++)
{
	daq::ReaderStatusPtr status;
	read = 0;
	do
	{
		thisRead = BUFF_SIZE - read;
		status = readers[chan].readWithDomain(&samples[read], &domainSamples[read], &thisRead);
		if (status.getReadStatus() == daq::ReadStatus::Event)
		{
			// Processing of an event
			if (status.getEventPacket().getEventId() == event_packet_id::IMPLICIT_DOMAIN_GAP_DETECTED)
			{
				// Processing of a GAP event
			}
		}
		read   += thisRead;
	} while ((status.getReadStatus() == daq::ReadStatus::Event) && (read < BUFF_SIZE));


	if (print)
	{
		if (read)
		{
		}
		else if ((noData[chan]++ >= 3) && (testMode == 1))
		{
			noData[chan] = 0;
			std::cout << getCurrentTimeWithMilliseconds();
			std::cout <<  "chan-" << chan  << " No Samples, sampleCount: "  << sampleCount[chan]  << std::endl;
		}
	}

	if (read > 0)
	{
		noData[chan] = 0;

		for (auto i = 0; i < (int)read; i++)
		{
			if (sampleCount[chan] == 0)
			{
				sampleMax[chan] = samples[0];
				sampleMin[chan] = samples[0];
                valueFist[chan] = samples[0];
				timeFist[chan]  = domainSamples[0];

				int64_t triggerDetal = timeFist[chan] - triggerTime;

				std::cout << getCurrentTimeWithMilliseconds();
				std::cout << chan << " Time:" << domainSamples[0] << " " << formatTimestamp(domainSamples[0]) << " triggerDetal:"  << triggerDetal << std::endl;
				std::cout << std::fixed << std::setprecision(6) << chan << " Value:" << samples[0] << " " << samples[1] << " " << samples[2] << " "  << samples[3]  << std::endl;

				/*
					Check whether the timestamp of the first sample after the trigger is correct.
				*/
				if ((triggerDetal > timeDeltaTyp[chan] + 100) || (triggerDetal < 0))
				{
					std::cout << Color::RED << "Error " << " triggerDetal:"	<< triggerDetal << " TriggerTime:" << triggerTime << " " << formatTimestamp(triggerTime) << Color::RESET << std::endl;
					errFlag++;
				}

                if (triggerDetal < 0) triggerDetal = -triggerDetal;
				trigDeltaMax[chan] = MAX(triggerDetal, trigDeltaMax[chan]);
			}
			else
			{
				/*
					Check whether the time intervals between consecutive sampling points are too large,
					or whether the time stamp of the subsequent point is less than that of the previous point.
				*/
				daq::Int delta = domainSamples[i] - timePre[chan];
				if (delta < 0)
				{
					std::cout << Color::BRIGHT_RED << "Error "  << chan << " sampleCount:" << sampleCount[chan] << " Delta:"  << delta << " timePre: "
                        << timePre[chan] << " timeCur:" << domainSamples[i] << Color::RESET << std::endl;
					errFlag++;
				}
				else
				{
					if (delta > timeDeltaTyp[chan]*2)
					{
						std::cout << Color::BRIGHT_RED << "Error  " << chan << " Delta:"  << delta << " timePre: "
                            << timePre[chan] << " timeCur:" << domainSamples[i] << Color::RESET << std::endl;
					}
					timeDeltaMax[chan] = MAX(delta, timeDeltaMax[chan]);
					timeDeltaMin[chan] = MIN(delta, timeDeltaMin[chan]);
				}

				double valDelta  = fabs(samples[i] - samplePre[chan]);
				if (valDelta > sampleDelta[chan])
				{
					sampleDelta[chan] = valDelta;
				}
				sampleMax[chan]   = MAX(sampleMax[chan], samples[i]);
				sampleMin[chan]   = MIN(sampleMin[chan], samples[i]);
			}


			timePre[chan]   = domainSamples[i];
			samplePre[chan] = samples[i];
			sampleCount[chan]++;
		}
	}
}

return read;

}

int main(int /argc/, const char* /argv/[])
{
// Create a fresh openDAQ(TM) instance that we will use for all the interactions with the openDAQ(TM) SDK
daq::InstancePtr instance = daq::InstanceBuilder().setModulePath(MODULE_PATH)
.setUsingSchedulerMainLoop(true)
.build();

// Find and connect to a simulator device
const auto availableDevices = instance.getAvailableDevices();
for (const auto& deviceInfo : availableDevices)
{
    if (deviceInfo.getName() == "NeoDAQ")
    {
		std::cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
		std::cout << "\tDeviceName: " << deviceInfo.getName() << ", ConnectionString: " << deviceInfo.getConnectionString() << std::endl;
		std::cout << "\tSoftwareRevision: " << deviceInfo.getSoftwareRevision() << ", SerialNumber: " << deviceInfo.getSerialNumber() << std::endl;

		for (const auto & capability : deviceInfo.getServerCapabilities())
		{
			std::cout << "\t  - ProtocolName: " << capability.getProtocolName() << ", ProtocolId: " << capability.getProtocolId() << ", ConnectionString: " << capability.getConnectionString() << std::endl;
		}

		std::cout << "Use this Device? yes/no" << std::endl;
		char input[128];
		get_line(input, 127);
		if ((strcmp(input, "yes") == 0) || (strcmp(input, "1") == 0) || (strcmp(input, "y") == 0))
		{
			device = instance.addDevice(deviceInfo.getConnectionString());
			std::cout << "++++++++++++++++++++++addDevice++++++++++++++++++++++\n" << std::endl;
			break;
		}

    }
}
// Exit if no device is found
if (!device.assigned())
    return 0;

// Output the name of the added device
NumberOfChannels = device.getPropertyValue("NumberOfChannels");
std::cout << "Channels: " << device.getChannels().getCount() << std::endl;
std::cout << "FirmwareBuildTime: " << device.getPropertyValue("FirmwareBuildTime") << std::endl;

std::cout << "CustomComponents: " << device.getCustomComponents().getCount() << std::endl;
for (const auto & comp : device.getCustomComponents())
{
    std::cout << " CustomComponent: " << comp.getName() << std::endl;
    if (comp.getName() == "Triggers")
    {
        triggerNum = comp.getPropertyValue("NumberOfTriggers");
        for (auto i = 0; i < triggerNum; i++)
        {
            trigSrc[i] = comp.findComponent(fmt::format("Trigger{}", i));
            // List the names of all properties
            if (trigSrc[i].assigned())
            {
                std::cout << "  Trigger" << i << std::endl;
				trigSrc[i].setPropertyValue("ChanMask", 0);
				trigSrc[i].setPropertyValue("Enable", false);
            }
            else
            {
                break;
            }
        }
    }
}

for (int chan = 0; chan < NumberOfChannels; chan++)
{
	channel[chan] = device.getChannels()[chan];
	signal[chan]  = channel[chan].getSignals()[0];

	channel[chan].setPropertyValue("ChanEnable", false);

	timeDeltaTyp[chan] = static_cast<int64_t>((double)1000000000.0/rate[chan]);

	channel[chan].setPropertyValue("SampleRate", rate[chan]);
	std::cout << chan << " getPropertyValue SampleRate:" << channel[chan].getPropertyValue("SampleRate") << std::endl;
}

daq::FunctionBlockPtr  renderer;
daq::PropertyObjectPtr rendererConfig = daq::PropertyObject();
rendererConfig.addProperty(daq::BoolProperty("UseMainLoopForRenderer", true));
renderer = instance.addFunctionBlock("RefFBModuleRenderer", rendererConfig);
{
	for (int chan = 0; chan < NumberOfChannels; chan++)
	{
        auto ports = renderer.getInputPorts();
        auto port = ports[ports.getCount() - 1];
        port.connect(signal[chan]);
		readers[chan] = daq::StreamReader<double, uint64_t>(signal[chan]);

		sampleCount[chan] = 0;
		timeDeltaMin[chan] = 1000000000;
		timeDeltaMax[chan] = 0;
		timePre[chan] = 0;
	}
}

std::cout << getCurrentTimeWithMilliseconds();
std::cout << "****************START*****" << std::endl;

auto scheduler = instance.getContext().getScheduler();
auto defaultWaitTime = std::chrono::milliseconds(1);
auto waitTime  = std::chrono::steady_clock::now() + defaultWaitTime;
auto debugTime = waitTime;

scheduler.scheduleWorkOnMainLoop(daq::WorkRepetitive([&]
{
	auto now = std::chrono::steady_clock::now();
    if (now < waitTime)
        return true;

    waitTime = waitTime + defaultWaitTime;

	SampleDataProcess(now, debugTime);

	AtuoTestProcess(now);

    return true; // Keep the work running
}));

scheduler.runMainLoop();
return 0;

}
`

Image Image

By comparing the log screenshots, it can be seen that for ch0 and ch3, the sampling timestamps and the first four sampled data are the same for both Server and Client. For ch1 and ch2, the sampling timestamps are different for Server and Client, but the values are the same. The sampling data timestamps for ch1 and ch2 are incorrect.
Could you please advise me on how to proceed with the analysis? I would like to know if there is an error in the timestamp of the data frames sent by the socket, and determine in which module the timestamp is changed. However, I am not familiar with the internal processing mechanism of OpenDAQ and would appreciate guidance from the OpenDAQ team.

Below is the complete log of the PC test program.
PS D:\work\sg2374\openDAQ\build\x64\msvc-22\full\bin\Release> .\quick_start_empty.exe
[tid: 38100][2026-05-14 17:29:30.527] [ModuleManager] [warning] Error loading module "D:\work\sg2374\openDAQ\build\x64\msvc-22\full\bin\Release\mock\crashing_module.module.dll": Library "mock\crashing_module.module.dll" failed to create a Module. [0x80030003]
[tid: 38100][2026-05-14 17:29:30.528] [ModuleManager] [warning] Error loading module "D:\work\sg2374\openDAQ\build\x64\msvc-22\full\bin\Release\mock\dependencies_failed.module.dll": Module "mock\dependencies_failed.module.dll" failed dependencies check. [0x80030004]
[tid: 38100][2026-05-14 17:29:30.530] [ModuleManager] [error] Failed to enumerate module's supported SRV types: Not Implemented
[tid: 38100][2026-05-14 17:29:30.531] [ModuleManager] [warning] Error loading module "D:\work\sg2374\openDAQ\build\x64\msvc-22\full\bin\Release\mock\empty_dll.module.dll": Module "mock\empty_dll.module.dll" has no exported module factory. [0x80030002]
+++++++++++++++++++++++++++++++++++++++++++++++++++++
DeviceName: NeoDAQ, ConnectionString: daq://SmartGiant_NEO0000A350001415
SoftwareRevision: V1.1.3, SerialNumber: NEO0000A350001415
- ProtocolName: OpenDAQNativeConfiguration, ProtocolId: OpenDAQNativeConfiguration, ConnectionString: daq.nd://192.168.1.107:7420/
- ProtocolName: OpenDAQNativeStreaming, ProtocolId: OpenDAQNativeStreaming, ConnectionString: daq.ns://192.168.1.107:7420/
- ProtocolName: OpenDAQOPCUA, ProtocolId: OpenDAQOPCUAConfiguration, ConnectionString: daq.opcua://192.168.1.107:4840/
Use this Device? yes/no
1
ModuleManagerImpl::createDevice daq://SmartGiant_NEO0000A350001415
[tid: 38100][2026-05-14 17:29:33.696] [NativeStreamingClientImpl] [warning] manageTransportLayerProps enabled, HeartbeatPeriod 1000 ms, InactivityTimeout 3000 ms, connectionTimeout 1000 ms, reconnectionPeriod 1000 ms
[tid: 38100][2026-05-14 17:29:33.698] [NativeStreamingClientImpl] [warning] host:192.168.1.107 port:7420 path:/
ModuleManagerImpl::createDevice 0
[tid: 38100][2026-05-14 17:29:33.802] [NativeStreamingClientImpl] [warning] manageTransportLayerProps enabled, HeartbeatPeriod 1000 ms, InactivityTimeout 3000 ms, connectionTimeout 1000 ms, reconnectionPeriod 1000 ms
[tid: 38100][2026-05-14 17:29:33.803] [NativeStreamingClientImpl] [warning] host:192.168.1.107 port:7420 path:/
++++++++++++++++++++++addDevice++++++++++++++++++++++

Channels: 4
FirmwareBuildTime: May 14 2026 14:19:39 2026051000233000
CustomComponents: 2
CustomComponent: NTP
CustomComponent: Triggers
Trigger0
Trigger1
Trigger2
Trigger3
0 getPropertyValue SampleRate:200000
1 getPropertyValue SampleRate:200000
2 getPropertyValue SampleRate:200000
3 getPropertyValue SampleRate:200000
2026-05-14 17:29:34.374> ***********START
2026-05-14 17:29:34.934> dev0 CurrentTime:1778750973401918173 2026-05-14 17:29:33.401918173ns
Auto Test Trigger 1 TriggerTime 1778750976000000000 2026-05-14 17:29:36.000000000ns Wait 3000ms
2026-05-14 17:29:37.397> chan-0 No Samples, sampleCount: 0
2026-05-14 17:29:37.397> chan-1 No Samples, sampleCount: 0
2026-05-14 17:29:37.398> chan-2 No Samples, sampleCount: 0
2026-05-14 17:29:37.398> chan-3 No Samples, sampleCount: 0
2026-05-14 17:29:37.567> 0 Time:1778750976000003723 2026-05-14 17:29:36.000003723ns triggerDetal:3723
0 Value:-0.000401 -0.024205 0.000789 0.008359
2026-05-14 17:29:37.571> 1 Time:1778750976000366355 2026-05-14 17:29:36.000366355ns triggerDetal:366355
1 Value:0.014031 0.014057 0.013145 0.012917
Error triggerDetal:366355 TriggerTime:1778750976000000000 2026-05-14 17:29:36.000000000ns
2026-05-14 17:29:37.574> 2 Time:1778750976001384415 2026-05-14 17:29:36.001384415ns triggerDetal:1384415
2 Value:0.004073 0.003946 0.002971 0.001781
Error triggerDetal:1384415 TriggerTime:1778750976000000000 2026-05-14 17:29:36.000000000ns
2026-05-14 17:29:37.577> 3 Time:1778750976000003493 2026-05-14 17:29:36.000003493ns triggerDetal:3493
3 Value:0.003077 0.004976 -0.009050 -0.013429
2026-05-14 17:29:47.475> Trigger:1 Disable
-0
TriggerTime:1778750976000000000 2026-05-14 17:29:36.000000000ns triggerDetal:3723 trigDeltaMax:3723
Fist Value:-0.000401 Time:1778750976000003723 2026-05-14 17:29:36.000003723ns
Last Value:-0.002971 Time:1778750985829167673 2026-05-14 17:29:45.829167673ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003984 deviation:-0.000498% -0.000498%

-1
TriggerTime:1778750976000000000 2026-05-14 17:29:36.000000000ns triggerDetal:366355 trigDeltaMax:366355
Fist Value:0.014031 Time:1778750976000366355 2026-05-14 17:29:36.000366355ns
Last Value:0.013133 Time:1778750985830450315 2026-05-14 17:29:45.830450315ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003874 deviation:-0.000498% -0.000498%

-2
TriggerTime:1778750976000000000 2026-05-14 17:29:36.000000000ns triggerDetal:1384415 trigDeltaMax:1384415
Fist Value:0.004073 Time:1778750976001384415 2026-05-14 17:29:36.001384415ns
Last Value:-0.010260 Time:1778750985832348385 2026-05-14 17:29:45.832348385ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003760 deviation:-0.000498% -0.000498%

-3
TriggerTime:1778750976000000000 2026-05-14 17:29:36.000000000ns triggerDetal:3493 trigDeltaMax:3493
Fist Value:0.003077 Time:1778750976000003493 2026-05-14 17:29:36.000003493ns
Last Value:-0.009379 Time:1778750985831867463 2026-05-14 17:29:45.831867463ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003851 deviation:-0.000498% -0.000498%

2026-05-14 17:29:48.160> Auto Test Stop, Wait 10000ms
2026-05-14 17:29:57.759> dev0 CurrentTime:1778750996226950133 2026-05-14 17:29:56.226950133ns
Auto Test Trigger 2 TriggerTime 1778750999000000000 2026-05-14 17:29:59.000000000ns Wait 3000ms
2026-05-14 17:29:58.283> chan-0 No Samples, sampleCount: 0
2026-05-14 17:29:58.284> chan-1 No Samples, sampleCount: 0
2026-05-14 17:29:58.284> chan-2 No Samples, sampleCount: 0
2026-05-14 17:29:58.284> chan-3 No Samples, sampleCount: 0
2026-05-14 17:30:00.567> 0 Time:1778750999000000393 2026-05-14 17:29:59.000000393ns triggerDetal:393
0 Value:-0.002161 0.008840 0.005562 -0.003313
2026-05-14 17:30:00.569> 1 Time:1778750999000365825 2026-05-14 17:29:59.000365825ns triggerDetal:365825
1 Value:0.013196 0.012664 0.012702 0.013272
Error triggerDetal:365825 TriggerTime:1778750999000000000 2026-05-14 17:29:59.000000000ns
2026-05-14 17:30:00.573> 2 Time:1778750999001383315 2026-05-14 17:29:59.001383315ns triggerDetal:1383315
2 Value:0.002592 -0.010286 0.002630 0.003566
Error triggerDetal:1383315 TriggerTime:1778750999000000000 2026-05-14 17:29:59.000000000ns
2026-05-14 17:30:00.576> 3 Time:1778750999000001283 2026-05-14 17:29:59.000001283ns triggerDetal:1283
3 Value:-0.007885 -0.014442 -0.011657 -0.007125
2026-05-14 17:30:10.497> Trigger:2 Disable
-0
TriggerTime:1778750999000000000 2026-05-14 17:29:59.000000000ns triggerDetal:393 trigDeltaMax:3723
Fist Value:-0.002161 Time:1778750999000000393 2026-05-14 17:29:59.000000393ns
Last Value:0.010663 Time:1778751008849324453 2026-05-14 17:30:08.849324453ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003790 deviation:-0.000498% -0.000498%

-1
TriggerTime:1778750999000000000 2026-05-14 17:29:59.000000000ns triggerDetal:365825 trigDeltaMax:366355
Fist Value:0.013196 Time:1778750999000365825 2026-05-14 17:29:59.000365825ns
Last Value:0.012905 Time:1778751008850629895 2026-05-14 17:30:08.850629895ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003682 deviation:-0.000498% -0.000498%

-2
TriggerTime:1778750999000000000 2026-05-14 17:29:59.000000000ns triggerDetal:1383315 trigDeltaMax:1384415
Fist Value:0.002592 Time:1778750999001383315 2026-05-14 17:29:59.001383315ns
Last Value:0.003035 Time:1778751008852547385 2026-05-14 17:30:08.852547385ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003773 deviation:-0.000498% -0.000498%

-3
TriggerTime:1778750999000000000 2026-05-14 17:29:59.000000000ns triggerDetal:1283 trigDeltaMax:3493
Fist Value:-0.007885 Time:1778750999000001283 2026-05-14 17:29:59.000001283ns
Last Value:0.004217 Time:1778751008852065353 2026-05-14 17:30:08.852065353ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003864 deviation:-0.000498% -0.000498%

2026-05-14 17:30:11.229> Auto Test Stop, Wait 10000ms
2026-05-14 17:30:20.768> dev0 CurrentTime:1778751019234008273 2026-05-14 17:30:19.234008273ns
Auto Test Trigger 3 TriggerTime 1778751022000000000 2026-05-14 17:30:22.000000000ns Wait 3000ms
2026-05-14 17:30:21.299> chan-0 No Samples, sampleCount: 0
2026-05-14 17:30:21.299> chan-1 No Samples, sampleCount: 0
2026-05-14 17:30:21.299> chan-2 No Samples, sampleCount: 0
2026-05-14 17:30:21.299> chan-3 No Samples, sampleCount: 0
2026-05-14 17:30:23.559> 0 Time:1778751022000004813 2026-05-14 17:30:22.000004813ns triggerDetal:4813
0 Value:0.002017 -0.017002 -0.024711 -0.001933
2026-05-14 17:30:23.562> 1 Time:1778751022000363485 2026-05-14 17:30:22.000363485ns triggerDetal:363485
1 Value:0.013297 0.012348 0.014057 0.014145
Error triggerDetal:363485 TriggerTime:1778751022000000000 2026-05-14 17:30:22.000000000ns
2026-05-14 17:30:23.566> 2 Time:1778751022001384915 2026-05-14 17:30:22.001384915ns triggerDetal:1384915
2 Value:0.002300 0.003579 0.004769 0.004098
Error triggerDetal:1384915 TriggerTime:1778751022000000000 2026-05-14 17:30:22.000000000ns
2026-05-14 17:30:23.569> 3 Time:1778751022000001843 2026-05-14 17:30:22.000001843ns triggerDetal:1843
3 Value:-0.011683 -0.008201 0.005457 0.007533
2026-05-14 17:30:33.499> Trigger:3 Disable
-0
TriggerTime:1778751022000000000 2026-05-14 17:30:22.000000000ns triggerDetal:4813 trigDeltaMax:4813
Fist Value:0.002017 Time:1778751022000004813 2026-05-14 17:30:22.000004813ns
Last Value:-0.021698 Time:1778751031848028863 2026-05-14 17:30:31.848028863ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003861 deviation:-0.000498% -0.000498%

-1
TriggerTime:1778751022000000000 2026-05-14 17:30:22.000000000ns triggerDetal:363485 trigDeltaMax:366355
Fist Value:0.013297 Time:1778751022000363485 2026-05-14 17:30:22.000363485ns
Last Value:0.013867 Time:1778751031849307535 2026-05-14 17:30:31.849307535ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003954 deviation:-0.000498% -0.000498%

-2
TriggerTime:1778751022000000000 2026-05-14 17:30:22.000000000ns triggerDetal:1384915 trigDeltaMax:1384915
Fist Value:0.002300 Time:1778751022001384915 2026-05-14 17:30:22.001384915ns
Last Value:0.003832 Time:1778751031851248975 2026-05-14 17:30:31.851248975ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003844 deviation:-0.000498% -0.000498%

-3
TriggerTime:1778751022000000000 2026-05-14 17:30:22.000000000ns triggerDetal:1843 trigDeltaMax:3493
Fist Value:-0.011683 Time:1778751022000001843 2026-05-14 17:30:22.000001843ns
Last Value:0.003862 Time:1778751031850845913 2026-05-14 17:30:31.850845913ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003740 deviation:-0.000498% -0.000498%

2026-05-14 17:30:34.095> Auto Test Stop, Wait 10000ms
2026-05-14 17:30:43.771> dev0 CurrentTime:1778751042238055283 2026-05-14 17:30:42.238055283ns
Auto Test Trigger 0 TriggerTime 1778751045000000000 2026-05-14 17:30:45.000000000ns Wait 3000ms
2026-05-14 17:30:43.886> chan-0 No Samples, sampleCount: 0
2026-05-14 17:30:43.886> chan-1 No Samples, sampleCount: 0
2026-05-14 17:30:43.887> chan-2 No Samples, sampleCount: 0
2026-05-14 17:30:43.887> chan-3 No Samples, sampleCount: 0
2026-05-14 17:30:46.566> 0 Time:1778751045000004193 2026-05-14 17:30:45.000004193ns triggerDetal:4193
0 Value:0.004587 -0.015609 0.001371 0.000916
2026-05-14 17:30:46.569> 1 Time:1778751045000363605 2026-05-14 17:30:45.000363605ns triggerDetal:363605
1 Value:0.013107 0.012094 0.013690 0.014525
Error triggerDetal:363605 TriggerTime:1778751045000000000 2026-05-14 17:30:45.000000000ns
2026-05-14 17:30:46.572> 2 Time:1778751045001381855 2026-05-14 17:30:45.001381855ns triggerDetal:1381855
2 Value:0.002554 0.003642 0.003592 0.004187
Error triggerDetal:1381855 TriggerTime:1778751045000000000 2026-05-14 17:30:45.000000000ns
2026-05-14 17:30:46.581> 3 Time:1778751045000003203 2026-05-14 17:30:45.000003203ns triggerDetal:3203
3 Value:-0.010163 -0.007758 0.003356 -0.007011
2026-05-14 17:30:56.518> Trigger:0 Disable
-0
TriggerTime:1778751045000000000 2026-05-14 17:30:45.000000000ns triggerDetal:4193 trigDeltaMax:4813
Fist Value:0.004587 Time:1778751045000004193 2026-05-14 17:30:45.000004193ns
Last Value:0.009119 Time:1778751054871608363 2026-05-14 17:30:54.871608363ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003809 deviation:-0.000498% -0.000498%

-1
TriggerTime:1778751045000000000 2026-05-14 17:30:45.000000000ns triggerDetal:363605 trigDeltaMax:366355
Fist Value:0.013107 Time:1778751045000363605 2026-05-14 17:30:45.000363605ns
Last Value:0.013804 Time:1778751054852947675 2026-05-14 17:30:54.852947675ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003916 deviation:-0.000498% -0.000498%

-2
TriggerTime:1778751045000000000 2026-05-14 17:30:45.000000000ns triggerDetal:1381855 trigDeltaMax:1384915
Fist Value:0.002554 Time:1778751045001381855 2026-05-14 17:30:45.001381855ns
Last Value:0.003047 Time:1778751054854865935 2026-05-14 17:30:54.854865935ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003804 deviation:-0.000498% -0.000498%

-3
TriggerTime:1778751045000000000 2026-05-14 17:30:45.000000000ns triggerDetal:3203 trigDeltaMax:3493
Fist Value:-0.010163 Time:1778751045000003203 2026-05-14 17:30:45.000003203ns
Last Value:-0.009872 Time:1778751054854387283 2026-05-14 17:30:54.854387283ns
SetRate:200000.000000 SampleRate:199999.999950 CalAverageRate:199999.003895 deviation:-0.000498% -0.000498%

2026-05-14 17:30:57.256> Auto Test Stop, Wait 10000ms
2026-05-14 17:31:06.820> dev0 CurrentTime:1778751065286934263 2026-05-14 17:31:05.286934263ns
Auto Test Trigger 1 TriggerTime 1778751068000000000 2026-05-14 17:31:08.000000000ns Wait 3000ms
2026-05-14 17:31:07.377> chan-0 No Samples, sampleCount: 0
2026-05-14 17:31:07.378> chan-1 No Samples, sampleCount: 0
2026-05-14 17:31:07.379> chan-2 No Samples, sampleCount: 0
2026-05-14 17:31:07.379> chan-3 No Samples, sampleCount: 0
2026-05-14 17:31:09.569> 0 Time:1778751068000000993 2026-05-14 17:31:08.000000993ns triggerDetal:993
0 Value:-0.025395 -0.014850 0.010081 -0.016483
2026-05-14 17:31:09.574> 1 Time:1778751068000365695 2026-05-14 17:31:08.000365695ns triggerDetal:365695
1 Value:0.013031 0.013259 0.012487 0.012677
Error triggerDetal:365695 TriggerTime:1778751068000000000 2026-05-14 17:31:08.000000000ns
2026-05-14 17:31:09.578> 2 Time:1778751068001382165 2026-05-14 17:31:08.001382165ns triggerDetal:1382165
2 Value:0.002338 0.002541 0.002516 0.002516
Error triggerDetal:1382165 TriggerTime:1778751068000000000 2026-05-14 17:31:08.000000000ns
2026-05-14 17:31:09.583> 3 Time:1778751068000002633 2026-05-14 17:31:08.000002633ns triggerDetal:2633
3 Value:-0.007568 -0.008024 -0.011594 -0.007834
2026-05-14 17:31:19.545> Trigger:1 Disable

Below are the logs from the device side:
[tid: 4428][2026-05-14 09:29:33.097] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] sample Start
[tid: 4428][2026-05-14 09:29:33.113] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7436802728
[tid: 4428][2026-05-14 09:29:33.113] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:29:33.118] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] collectSamples deltaT:5000 time:7436823043 start:7436802728 samplesGenerated:0 DiffUs:0 diffMax:0 ret:0
[tid: 4423][2026-05-14 09:29:33.118] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] collectSamples deltaT:5000 time:7436823043 start:7436802728 samplesGenerated:0 DiffUs:20315 diffMax:20315 Samples:0
[tid: 4428][2026-05-14 09:29:33.159] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] OnPropertyValueWrite ExtTrigger:True
[tid: 4428][2026-05-14 09:29:33.159] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:33.161] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7419369986
[tid: 4428][2026-05-14 09:29:33.162] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:29:33.220] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:29:33.221] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:33.221] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] sample Start
[tid: 4428][2026-05-14 09:29:33.237] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7436926789
[tid: 4428][2026-05-14 09:29:33.237] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:29:33.242] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] collectSamples deltaT:5000 time:7436946965 start:7436926789 samplesGenerated:0 DiffUs:3545443964794672 diffMax:0 ret:0
[tid: 4423][2026-05-14 09:29:33.242] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] collectSamples deltaT:5000 time:7436946965 start:7436926789 samplesGenerated:0 DiffUs:20176 diffMax:20176 Samples:0
[tid: 4428][2026-05-14 09:29:33.299] [ReferenceDevice] [warning] Trigger1 ChanMask Write 15
[tid: 4428][2026-05-14 09:29:33.300] [ReferenceDevice] [warning] updateTriggerConfig id:1 type:0 val:15 state:2 mode:0
[tid: 4428][2026-05-14 09:29:33.369] [ReferenceDevice] [info] Property Read CurrentTime:1778750973401918173
[tid: 4428][2026-05-14 09:29:33.373] [ReferenceDevice] [warning] OnPropertyValueWrite 1 Time:1778750976000000000
[tid: 4428][2026-05-14 09:29:33.374] [ReferenceDevice] [warning] updateTriggerConfig id:1 type:3 val:1778750976000000000 state:2 mode:0
[tid: 4428][2026-05-14 09:29:33.422] [ReferenceDevice] [warning] Trigger1 Enable Write True
[tid: 4428][2026-05-14 09:29:33.423] [ReferenceDevice] [warning] updateTriggerConfig id:1 type:1 val:True state:1 mode:0
[tid: 4423][2026-05-14 09:29:35.977] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] generateSamples Generated:0 time:1778750976000003723 Samples:1788 remain:16 overFF:0 overFC:0 strErrF:0 strErrC:0 value:-0.0004 adc:f700 ffffc7fb
[tid: 4423][2026-05-14 09:29:35.980] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] generateSamples Generated:0 time:1778750976000003583 Samples:2500 remain:16 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0140 adc:21a00 1bcc3
[tid: 4423][2026-05-14 09:29:35.983] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] generateSamples Generated:0 time:1778750976000003663 Samples:3112 remain:16 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0041 adc:bf00 527
[tid: 4423][2026-05-14 09:29:35.987] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] generateSamples Generated:0 time:1778750976000003493 Samples:3756 remain:0 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0031 adc:600 77ab
[tid: 4423][2026-05-14 09:29:35.990] [ReferenceDevice] [warning] acqLoop Trigger:1 state:2
[tid: 4428][2026-05-14 09:29:45.820] [ReferenceDevice] [warning] Trigger1 Enable Write False
[tid: 4428][2026-05-14 09:29:45.820] [ReferenceDevice] [warning] updateTriggerConfig id:1 type:1 val:False state:0 mode:0
[tid: 4428][2026-05-14 09:29:45.865] [ReferenceDevice] [warning] Trigger1 ChanMask Write 0
[tid: 4428][2026-05-14 09:29:45.866] [ReferenceDevice] [warning] updateTriggerConfig id:1 type:0 val:0 state:0 mode:0
[tid: 4428][2026-05-14 09:29:45.912] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:29:45.913] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:45.914] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] sample Stop
[tid: 4428][2026-05-14 09:29:46.032] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7449618988
[tid: 4428][2026-05-14 09:29:46.032] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:29:46.091] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:29:46.091] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:46.092] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] sample Stop
[tid: 4428][2026-05-14 09:29:46.211] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7449797483
[tid: 4428][2026-05-14 09:29:46.212] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:29:46.231] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:29:46.231] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:46.232] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] sample Stop
[tid: 4428][2026-05-14 09:29:46.352] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7449937360
[tid: 4428][2026-05-14 09:29:46.352] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:29:46.411] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:29:46.412] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:46.413] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] sample Stop
[tid: 4428][2026-05-14 09:29:46.532] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7450117917
[tid: 4428][2026-05-14 09:29:46.532] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:29:55.827] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:29:55.827] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:55.828] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] sample Start
[tid: 4428][2026-05-14 09:29:55.843] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7459533299
[tid: 4428][2026-05-14 09:29:55.843] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:29:55.849] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] collectSamples deltaT:5000 time:7459553942 start:7459533299 samplesGenerated:0 DiffUs:19975 diffMax:26705 ret:0
[tid: 4423][2026-05-14 09:29:55.849] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] collectSamples deltaT:5000 time:7459553942 start:7459533299 samplesGenerated:0 DiffUs:20643 diffMax:26705 Samples:0
[tid: 4428][2026-05-14 09:29:55.907] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:29:55.907] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:55.908] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] sample Start
[tid: 4428][2026-05-14 09:29:55.924] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7459613348
[tid: 4428][2026-05-14 09:29:55.924] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:29:55.930] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] collectSamples deltaT:5000 time:7459635657 start:7459613348 samplesGenerated:0 DiffUs:19983 diffMax:139004 ret:0
[tid: 4423][2026-05-14 09:29:55.930] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] collectSamples deltaT:5000 time:7459635657 start:7459613348 samplesGenerated:0 DiffUs:22309 diffMax:139004 Samples:0
[tid: 4428][2026-05-14 09:29:55.984] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:29:55.985] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:55.986] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] sample Start
[tid: 4428][2026-05-14 09:29:56.001] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7459690985
[tid: 4428][2026-05-14 09:29:56.001] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:29:56.006] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] collectSamples deltaT:5000 time:7459711343 start:7459690985 samplesGenerated:0 DiffUs:73 diffMax:139548 ret:0
[tid: 4423][2026-05-14 09:29:56.006] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] collectSamples deltaT:5000 time:7459711343 start:7459690985 samplesGenerated:0 DiffUs:20358 diffMax:139548 Samples:0
[tid: 4428][2026-05-14 09:29:56.062] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:29:56.063] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:29:56.064] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] sample Start
[tid: 4428][2026-05-14 09:29:56.079] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7459768910
[tid: 4428][2026-05-14 09:29:56.079] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:29:56.084] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] collectSamples deltaT:5000 time:7459789065 start:7459768910 samplesGenerated:0 DiffUs:19982 diffMax:140396 ret:0
[tid: 4423][2026-05-14 09:29:56.084] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] collectSamples deltaT:5000 time:7459789065 start:7459768910 samplesGenerated:0 DiffUs:20155 diffMax:140396 Samples:0
[tid: 4428][2026-05-14 09:29:56.139] [ReferenceDevice] [warning] Trigger2 ChanMask Write 15
[tid: 4428][2026-05-14 09:29:56.139] [ReferenceDevice] [warning] updateTriggerConfig id:2 type:0 val:15 state:0 mode:0
[tid: 4428][2026-05-14 09:29:56.193] [ReferenceDevice] [info] Property Read CurrentTime:1778750996226950133
[tid: 4428][2026-05-14 09:29:56.198] [ReferenceDevice] [warning] OnPropertyValueWrite 2 Time:1778750999000000000
[tid: 4428][2026-05-14 09:29:56.198] [ReferenceDevice] [warning] updateTriggerConfig id:2 type:3 val:1778750999000000000 state:0 mode:0
[tid: 4428][2026-05-14 09:29:56.245] [ReferenceDevice] [warning] Trigger2 Enable Write True
[tid: 4428][2026-05-14 09:29:56.246] [ReferenceDevice] [warning] updateTriggerConfig id:2 type:1 val:True state:1 mode:0
[tid: 4423][2026-05-14 09:29:58.976] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] generateSamples Generated:0 time:1778750999000000393 Samples:1812 remain:0 overFF:0 overFC:0 strErrF:0 strErrC:0 value:-0.0022 adc:6c00 fffff313
[tid: 4423][2026-05-14 09:29:58.979] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] generateSamples Generated:0 time:1778750999000003053 Samples:2444 remain:16 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0132 adc:1d800 1d88b
[tid: 4423][2026-05-14 09:29:58.983] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] generateSamples Generated:0 time:1778750999000002563 Samples:3084 remain:0 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0026 adc:4a00 11a0b
[tid: 4423][2026-05-14 09:29:58.986] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] generateSamples Generated:0 time:1778750999000001283 Samples:3720 remain:0 overFF:0 overFC:0 strErrF:0 strErrC:0 value:-0.0079 adc:ffff8400 fffe9187
[tid: 4423][2026-05-14 09:29:58.988] [ReferenceDevice] [warning] acqLoop Trigger:2 state:2
[tid: 4424][2026-05-14 09:30:06.312] [ReferenceDevice] [warning] RefDeviceImpl::monitorLoop memUsagePercents:12% lowMemAlarm:0 linkStatus0:true linkStatus1:true linkSpeed0:2 linkSpeed1:2
[tid: 4428][2026-05-14 09:30:08.830] [ReferenceDevice] [warning] Trigger2 Enable Write False
[tid: 4428][2026-05-14 09:30:08.830] [ReferenceDevice] [warning] updateTriggerConfig id:2 type:1 val:False state:0 mode:0
[tid: 4428][2026-05-14 09:30:08.887] [ReferenceDevice] [warning] Trigger2 ChanMask Write 0
[tid: 4428][2026-05-14 09:30:08.887] [ReferenceDevice] [warning] updateTriggerConfig id:2 type:0 val:0 state:0 mode:0
[tid: 4428][2026-05-14 09:30:08.934] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:30:08.935] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:08.935] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] sample Stop
[tid: 4428][2026-05-14 09:30:09.053] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7472640685
[tid: 4428][2026-05-14 09:30:09.053] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:30:09.110] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:30:09.110] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:09.111] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] sample Stop
[tid: 4428][2026-05-14 09:30:09.231] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7472816328
[tid: 4428][2026-05-14 09:30:09.231] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:30:09.295] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:30:09.296] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:09.296] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] sample Stop
[tid: 4428][2026-05-14 09:30:09.417] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7473001812
[tid: 4428][2026-05-14 09:30:09.417] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:30:09.486] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:30:09.487] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:09.488] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] sample Stop
[tid: 4428][2026-05-14 09:30:09.608] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:false startTime:7473193170
[tid: 4428][2026-05-14 09:30:09.608] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] buildSignalDescriptors
[tid: 4428][2026-05-14 09:30:18.834] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:30:18.835] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:18.836] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] sample Start
[tid: 4428][2026-05-14 09:30:18.850] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7482541084
[tid: 4428][2026-05-14 09:30:18.850] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:30:18.855] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] collectSamples deltaT:5000 time:7482560371 start:7482541084 samplesGenerated:0 DiffUs:19985 diffMax:35762 ret:0
[tid: 4423][2026-05-14 09:30:18.855] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] collectSamples deltaT:5000 time:7482560371 start:7482541084 samplesGenerated:0 DiffUs:19287 diffMax:35762 Samples:0
[tid: 4428][2026-05-14 09:30:18.913] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:30:18.913] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:18.914] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] sample Start
[tid: 4428][2026-05-14 09:30:18.929] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7482619270
[tid: 4428][2026-05-14 09:30:18.929] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:30:18.934] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] collectSamples deltaT:5000 time:7482639057 start:7482619270 samplesGenerated:0 DiffUs:19996 diffMax:142578 ret:0
[tid: 4423][2026-05-14 09:30:18.934] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] collectSamples deltaT:5000 time:7482639057 start:7482619270 samplesGenerated:0 DiffUs:19787 diffMax:142578 Samples:0
[tid: 4428][2026-05-14 09:30:18.990] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:30:18.990] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:18.991] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] sample Start
[tid: 4428][2026-05-14 09:30:19.006] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7482696376
[tid: 4428][2026-05-14 09:30:19.006] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:30:19.012] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] collectSamples deltaT:5000 time:7482717703 start:7482696376 samplesGenerated:0 DiffUs:20005 diffMax:142578 ret:0
[tid: 4423][2026-05-14 09:30:19.013] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] collectSamples deltaT:5000 time:7482717703 start:7482696376 samplesGenerated:0 DiffUs:21327 diffMax:142578 Samples:0
[tid: 4428][2026-05-14 09:30:19.066] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] OnPropertyValueWrite ChanEnable:True
[tid: 4428][2026-05-14 09:30:19.067] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:19.068] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] sample Start
[tid: 4428][2026-05-14 09:30:19.083] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] shift:1 SampleRate:199999.9999497959 extTrig:1 ChanEnable:true startTime:7482772887
[tid: 4428][2026-05-14 09:30:19.083] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] buildSignalDescriptors
[tid: 4423][2026-05-14 09:30:19.088] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] collectSamples deltaT:5000 time:7482793119 start:7482772887 samplesGenerated:0 DiffUs:20008 diffMax:142578 ret:0
[tid: 4423][2026-05-14 09:30:19.088] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] collectSamples deltaT:5000 time:7482793119 start:7482772887 samplesGenerated:0 DiffUs:20232 diffMax:142578 Samples:0
[tid: 4428][2026-05-14 09:30:19.144] [ReferenceDevice] [warning] Trigger3 ChanMask Write 15
[tid: 4428][2026-05-14 09:30:19.145] [ReferenceDevice] [warning] updateTriggerConfig id:3 type:0 val:15 state:2 mode:0
[tid: 4428][2026-05-14 09:30:19.200] [ReferenceDevice] [info] Property Read CurrentTime:1778751019234008273
[tid: 4428][2026-05-14 09:30:19.206] [ReferenceDevice] [warning] OnPropertyValueWrite 3 Time:1778751022000000000
[tid: 4428][2026-05-14 09:30:19.206] [ReferenceDevice] [warning] updateTriggerConfig id:3 type:3 val:1778751022000000000 state:2 mode:0
[tid: 4428][2026-05-14 09:30:19.251] [ReferenceDevice] [warning] Trigger3 Enable Write True
[tid: 4428][2026-05-14 09:30:19.253] [ReferenceDevice] [warning] updateTriggerConfig id:3 type:1 val:True state:1 mode:0
[tid: 4423][2026-05-14 09:30:21.974] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] generateSamples Generated:0 time:1778751022000004813 Samples:1552 remain:0 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0020 adc:1b600 ffffd90f
[tid: 4423][2026-05-14 09:30:21.977] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch1] [warning] generateSamples Generated:0 time:1778751022000000713 Samples:2192 remain:0 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0133 adc:1e000 1a98f
[tid: 4423][2026-05-14 09:30:21.981] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch2] [warning] generateSamples Generated:0 time:1778751022000004163 Samples:2824 remain:16 overFF:0 overFC:0 strErrF:0 strErrC:0 value:0.0023 adc:3300 ff07
[tid: 4423][2026-05-14 09:30:21.984] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch3] [warning] generateSamples Generated:0 time:1778751022000001843 Samples:3452 remain:16 overFF:0 overFC:0 strErrF:0 strErrC:0 value:-0.0117 adc:fffe5800 fffeda7b
[tid: 4423][2026-05-14 09:30:21.986] [ReferenceDevice] [warning] acqLoop Trigger:3 state:2
[tid: 4428][2026-05-14 09:30:31.838] [ReferenceDevice] [warning] Trigger3 Enable Write False
[tid: 4428][2026-05-14 09:30:31.838] [ReferenceDevice] [warning] updateTriggerConfig id:3 type:1 val:False state:0 mode:0
[tid: 4428][2026-05-14 09:30:31.888] [ReferenceDevice] [warning] Trigger3 ChanMask Write 0
[tid: 4428][2026-05-14 09:30:31.888] [ReferenceDevice] [warning] updateTriggerConfig id:3 type:0 val:0 state:0 mode:0
[tid: 4428][2026-05-14 09:30:31.935] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] OnPropertyValueWrite ChanEnable:False
[tid: 4428][2026-05-14 09:30:31.936] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] signalTypeChangedInternal
[tid: 4428][2026-05-14 09:30:31.937] [/sDAQ-NEO0000A350001415-0/IO/AI/Ch0] [warning] sample Stop

Looking forward to your reply. Thank you very much.

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions