I am aware that CVB (Genicam browser) can handle the reset of an already connected GEV camera in such a way that the camera is automatically reconnected after a reset.
What needs to be done, on the GEV Server side, if I want to simulate such a camera reset with the GEV Server?
I need to stop and restart the GEV server and want CVB to handle it like a camera reset.
Hi, if you want to stop (disconnect) and start again, you need to do exactly that:
GSStop (C API)/GevServer.Stop (OOP API)
GSStartIPv4 (C API)/GevServer.Start (OOP API)
The reconnect handling is done by the “client”, e.g. the GenICam.vin. What you need to do there is described in the GenICam User Guide.
You can simply test that with one of the :cvb: GEV Server examples (click the Stop and then the Start button). If you use e.g. the C# example you can see the connection state in the status bar.
The GEV Server itself needs no extra reset. If your application needs one if the client disconnects, you can use the connection monitoring events:
GSRegisterEvent with SE_Disconnected and SE_Connected (C API)
GevServer.RemoteEndpointDisconnected and GevServer.RemoteEndpointConnected (OOP API)
In case you simulated the disconnect via stop and then start, you will receive the connected event as soon as the client reestablished the connection. But keep in mind that the control lies with the client. It needs to start the acquisition before you can start again sending image data (SE_AcquisitionStart/GevServer.AcquisitionStart event).
Just as comment to timing: GigE Vision uses a heartbeat mechanism with a default timeout of 3s. If you want to make sure the client sees the disconnect, you need to wait between the stop and the start call.
Depending on the implementation the client recognizes the disconnect earlier as the server socket is closed and does not answer to requests. So with the GenICam.vin you should see – by default – the disconnect no later than ~1s after the stop call.
The disconnect will also be recognized if done shorter, because the CCP register (control channel privilege) will be reset to 0 (no connection) in the stop/start process. But to make everything more visible you can wait.