GenICam 介紹
簡而言之,GenICam 定義了一個通用的相機接口,使得應用程序的編寫、相機的控制可以與具體的型號解耦,這樣就可以設計出通用的軟件完成對不同相機的控制。我們實際使用的CoaXPress 相機當然也支持 GenICam標准,可以閱讀其xml文件獲取其對應的控制寄存器信息。
GenICam (abbreviated for Generic Interface for Cameras) is a generic programming interface for machine vision (industrial) cameras. The goal of the standard is to decouple industrial camera interfaces technology (such as GigE Vision, USB3 Vision, CoaXPress or Camera Link) from the user application programming interface (API)

相機XML文件
根據GenICam標准,在相機的指定位置存儲了一份XML文件,XML文件記錄了控制相機所需的所有寄存器信息。那么這份文件,可以自己從供應商處獲取,也可以自己從相機指定位置讀取並解析,如果對於單個相機型號的控制而言,直接拿xml文件的信息進行編程更加簡單。
比如下面這段描述,就定義了TriggerSource 觸發源的枚舉定義、寄存器地址信息,如果我們需要設置觸發源為軟件觸發,那么我們就需要向0x8908寄存器地址寫入0x0,如果需要設置為LinkTrigger0(來自於CXP Host,就是采集卡),需要向0x8908寄存器地址寫入0x4。有了這些信息,我們就可以通過寄存器讀寫的方式完成對相機的指令控制。
<Enumeration Name="TriggerSource">
<ToolTip>This feature defines the source of the trigger signal.</ToolTip>
<Description>This feature defines the source of the trigger signal.</Description>
<DisplayName>Trigger Source</DisplayName>
<Visibility>Beginner</Visibility>
<pIsLocked>IsRunning</pIsLocked>
<EnumEntry Name="Software">
<DisplayName>Software Trigger</DisplayName>
<Value>0x0</Value>
</EnumEntry>
<EnumEntry Name="LinkTrigger0">
<DisplayName>CXP Link Trigger 0</DisplayName>
<Value>0x4</Value>
</EnumEntry>
<EnumEntry Name="Line0">
<DisplayName>Line Trigger 0</DisplayName>
<pIsImplemented>DIN1ConnectorType</pIsImplemented>
<Value>0x8</Value>
</EnumEntry>
<EnumEntry Name="Line1">
<DisplayName>Line Trigger 1</DisplayName>
<pIsImplemented>DIN1ConnectorType</pIsImplemented>
<Value>0x9</Value>
</EnumEntry>
<pValue>TriggerSourceReg</pValue>
</Enumeration>
<IntReg Name="TriggerSourceReg">
<Address>0x8908</Address>
<Length>4</Length>
<AccessMode>RW</AccessMode>
<pPort>Device</pPort>
<pInvalidator>TriggerSelectorReg</pInvalidator>
<pInvalidator>UserSetLoadReg</pInvalidator>
<Endianess>BigEndian</Endianess>
</IntReg>