ATC6 timestamp reset cvb++

Hello,
I am still working on AT C6 camera GIGE in image composite mode using CVB++ 3rd generation with GenTL (without VIN. (cvb 14.00.002) windows 10 x64.
When I was using VIN, I was using :
MGetNode(nodemap, “GetTimestampControlReset”, node);
NSetAsBoolean(node, 1);

With CVB++ and GenTL, I’ve not found how to do it.
Do you have an idea?

Regards,
Mikael.

@Mikael
Hey!
The NMGetNode and NSetAsBoolean functions are part of the C-Style CVB GenApi. These functions are independend from the acquisition stack and could be used with the GenTL acquisition stack as well. But we recommend using the new GenAPI from the CVB++ API especially as you want to use the API anyway.

Here is the link to the CVB++ GenApi documentation:
https://help.commonvisionblox.com/NextGen/14.1/cvbpp/da/da6/namespace_cvb_1_1_gen_api.html

So here is a small code snippet that shows how to use NodeMaps in C++:

#include <cvb/device_factory.hpp>
#include <cvb/utilities/system_info.hpp>
#include <cvb/driver/stream.hpp>
#include <iostream>

using namespace std;
using namespace Cvb;

int main(int argc, char* argv[])
{
    auto path = Cvb::InstallPath();
    path += CVB_LIT("drivers/GenICam.vin");

    // open a device
    auto device = DeviceFactory::Open(path);

    // get the first stream of the device
    auto stream = device->Stream();

    auto nodeMap = device->NodeMap("Device");

    auto camModel = nodeMap->Node<StringNode>("DeviceModelName");
    cout << "Loaded device: " << camModel->Value() << endl;

    auto camFirmware = nodeMap->Node<StringNode>("DeviceFirmwareVersion");
    cout << "Current Firmwareversion : " << camFirmware->Value() << endl;

    auto exposureTime = nodeMap->Node<FloatNode>("ExposureTime");
    cout << "Current exposure time : " << exposureTime->Value() << endl;

    auto exposureTimeOld = exposureTime->Value();
    exposureTime->SetValue(32);
    cout << "Small exposure time : " << exposureTime->Value() << endl;

    exposureTime->SetValue(exposureTimeOld);
    cout << "Resetted to old exposure time : " << exposureTime->Value() << endl;
}

Hi Silas,
in fact, I an not finding on ATC6 camera using CVB++ GenTL (noVin) the feature “GevTimestampControlReset”.
I don’t know if this is camera specific or camera independant.
Thanks,
Mikael.

@Mikael
Hey!
I am not certain on what you are trying to achieve.
If you are just trying to get the timestemp, have a loot at this example:

// wait for an image with a timeout of 10 seconds
      auto waitResult = stream->WaitFor(std::chrono::seconds(10));
      if (waitResult.Status == Cvb::WaitStatus::Timeout)
        throw std::runtime_error("acquisition timeout");
      // get the timestamp of the image (usually a large integer number mapped to double - so better use fixed formatting)
      std::cout << "Acquired image... " << std::fixed << waitResult.Image->RawTimestamp() << std::endl;

…otherwise it would be great if you could explain your goal.

Regards
Silas

Hi Silas,

I am trying to reset the camera timestamp value. Set its value to “0”. This can be done using the feature “GevTimestampControlReset”.
GenICam Standard Features Naming Convention (emva.org).

It seems that this feature is not available, which is strange. I had a look at the difference nodemaps and not fount it. We are calling the timestamp reset of the cams when starting the application or in different cases to synchronize with another system. For ATC6 this is not a big problem because we can synchronize with encoder counter.
What I don’t know is if it is just (strangely) missing in ATC6 camera or if it is hidden somewhere using CVB++.

Thanks.
Mikael.

@Mikael
Hey!
If there is probably no GevTimestampControlReset available in the ATC6 → it is just not supported by the camera. This is because not every camera has the same nodemaps. CVB++ is also not hiding anything.
Regards
Silas

Ok, thanks for your help.

Mikael.