As required by the GigE Vision specification, Pixelink GigE cameras use a 'heartbeat' between the camera and the host to determine the 'liveness' of the connection. If no communication (normal camera interaction, or heartbeat) occurs within a certain amount of time, the camera deems the connection as broken, and any further interaction (except for connections) is refused.


This poses a problem when debugging because the debugger (e.g. Visual Studio, WinDbg) will suspend all the threads in a debuge process (i.e. your program which is trying to interact with the camera) for various reasons (e.g. breakpoints, exceptions), thereby disabling the background heartbeat mechanism, and thereby causing a connection to a GigE camera to be terminated by the camera.


Simply put: When debugging a program talking to a Pixelink GigE camera, there may be problems after hitting a breakpoint or single-stepping.


As of Pixelink API 7.14 it is possible to increase the heartbeat timeout. One way to do this is to change the value of the registry key HKEY_CURRENT_USER\Software\PixeLINK\GigE\HeartbeatTimeout. This is a DWORD key that was created when you installed the Pixelink GigE drivers, and the value indicates the GigE heartbeat timeout in milliseconds. The key can be set to any value between 1000 and 65535, inclusively. The value is set to 20000 (20 seconds) during the Pixelink SDK install, but normal installs (non-SDK) will have the value set to a default of 1000 (1 second).


The value can be changed using regedit.exe, the Win32 API, or any other registry editor.


NOTE: Increasing the heartbeat timeout is a double-edged sword. If you abruptly end your debugging session without giving the Pixelink API a chance to close the connection (i.e. PxLUninitialize), the camera will not allow new connections until it times out the current connection. For example, if you set the heartbeat to 60 seconds, and then terminate debugging (e.g. in Visual Studio, using Debug\Stop Debugging) without having called PxLUninitialize, it may take up to 60 seconds before the camera will accept new connections.