Selects how the system timestamp is synchronized with the device timestamp.
Name |
SynchronizationTimestampMode |
Category |
|
Interface |
Enumeration |
Access |
Read/Write |
Unit |
- |
Visibility |
Expert |
Values |
Auto Manual |
Standard |
IDS |
Availability uEye+ |
|
Availability uEye |
- |
Values description
•Auto: Enables periodic synchronization of system and device timestamps using an internal timer. This is the default value.
The synchronized values are stored internally and become visible in SynchronizationTimestampSystem and SynchronizationTimestampDevice only after SynchronizationTimestampLatch is executed. The latch mechanism ensures both timestamps are captured consistently from the same synchronization cycle. This avoids race conditions where one timestamp is read while a new synchronization is taking place, resulting in the second timestamp being read from a different cycle.
•Manual: Disables the automatic synchronization timer. Timestamps are synchronized only when explicitly triggered via SynchronizationTimestampLatch.
Code example
C++
// Determine the current entry of SynchronizationTimestampMode
std::string value = nodeMapDataStream->FindNode<peak::core::nodes::EnumerationNode>("SynchronizationTimestampMode")->CurrentEntry()->SymbolicValue();
// Get a list of all available entries of SynchronizationTimestampMode
auto allEntries = nodeMapDataStream->FindNode<peak::core::nodes::EnumerationNode>("SynchronizationTimestampMode")->Entries();
std::vector<std::shared_ptr<peak::core::nodes::EnumerationEntryNode>> availableEntries;
for(const auto & entry : allEntries)
{
if ((entry->AccessStatus() != peak::core::nodes::NodeAccessStatus::NotAvailable)
&& (entry->AccessStatus() != peak::core::nodes::NodeAccessStatus::NotImplemented))
{
availableEntries.emplace_back(entry);
}
}
// Set SynchronizationTimestampMode to "Auto"
nodeMapDataStream->FindNode<peak::core::nodes::EnumerationNode>("SynchronizationTimestampMode")->SetCurrentEntry("Auto");
C#
// Determine the current entry of SynchronizationTimestampMode
string value = nodeMapDataStream.FindNode<IDSImaging.Peak.API.Core.Nodes.EnumerationNode>("SynchronizationTimestampMode").CurrentEntry().SymbolicValue();
// Get a list of all available entries of SynchronizationTimestampMode
allEntries = nodeMapDataStream.FindNode<IDSImaging.Peak.API.Core.Nodes.EnumerationNode>("SynchronizationTimestampMode").Entries();
List<string> availableEntries = new List<string>();
for(int i = 0; i < allEntries.Count(); ++i)
{
if ((allEntries[i].AccessStatus() != IDSImaging.Peak.API.Core.Nodes.NodeAccessStatus.NotAvailable)
&& (allEntries[i].AccessStatus() != IDSImaging.Peak.API.Core.Nodes.NodeAccessStatus.NotImplemented))
{
availableEntries.Add(allEntries[i].SymbolicValue());
}
}
// Set SynchronizationTimestampMode to "Auto"
nodeMapDataStream.FindNode<IDSImaging.Peak.API.Core.Nodes.EnumerationNode>("SynchronizationTimestampMode").SetCurrentEntry("Auto");
Python
# Determine the current entry of SynchronizationTimestampMode (str)
value = nodeMapDataStream.FindNode("SynchronizationTimestampMode").CurrentEntry().SymbolicValue()
# Get a list of all available entries of SynchronizationTimestampMode
allEntries = nodeMapDataStream.FindNode("SynchronizationTimestampMode").Entries()
availableEntries = []
for entry in allEntries:
if (entry.AccessStatus() != peak.NodeAccessStatus_NotAvailable
and entry.AccessStatus() != peak.NodeAccessStatus_NotImplemented):
availableEntries.append(entry.SymbolicValue())
# Set SynchronizationTimestampMode to "Auto" (str)
nodeMapDataStream.FindNode("SynchronizationTimestampMode").SetCurrentEntry("Auto")