SDK.h 139 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742
  1. /// \mainpage
  2. /// \~chinese
  3. /// \htmlinclude mainpage_chs.html
  4. /// \~english
  5. /// \htmlinclude mainpage_eng.html
  6. #ifndef __MV_CAMERA_H__
  7. #define __MV_CAMERA_H__
  8. #include "IntTypes.h"
  9. /**
  10. * @brief 动态库导入导出定义
  11. */
  12. #ifdef _MSC_VER
  13. #ifdef GENICAM_API_DLL_BUILD
  14. #define GENICAM_API _declspec(dllexport)
  15. #elif defined GENICAM_API_DLL_USE
  16. #define GENICAM_API _declspec(dllimport)
  17. #else
  18. #define GENICAM_API
  19. #endif
  20. #elif defined __GNUC__
  21. #define GENICAM_API
  22. #else
  23. #define GENICAM_API
  24. #endif
  25. #if (defined (_WIN32) || defined(WIN64))
  26. #define CALL_METHOD __stdcall
  27. #elif defined __GNUC__
  28. #define CALL_METHOD
  29. #else
  30. #define CALL_METHOD
  31. #endif // end #if (defined (_WIN32) || defined(WIN64))
  32. #define MAX_PARAM_CNT 1000
  33. #define MAX_STRING_LENTH 256
  34. #define MAX_PAYLOAD_TYPE_CNT 20
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38. /// \~chinese
  39. /// \brief 图像格式
  40. /// \defgroup ImageFormat 图像格式
  41. /// @{
  42. /// \~english
  43. /// \brief Image Format
  44. /// \defgroup ImageFormat Image Format
  45. /// @{
  46. //===================================================
  47. // PIXEL FORMATS
  48. //===================================================
  49. // Indicate if pixel is monochrome or RGB
  50. #define GVSP_PIX_MONO 0x01000000
  51. #define GVSP_PIX_RGB 0x02000000 // deprecated in version 1.1
  52. #define GVSP_PIX_COLOR 0x02000000
  53. #define GVSP_PIX_CUSTOM 0x80000000
  54. #define GVSP_PIX_COLOR_MASK 0xFF000000
  55. // Indicate effective number of bits occupied by the pixel (including padding).
  56. // This can be used to compute amount of memory required to store an image.
  57. #define GVSP_PIX_OCCUPY1BIT 0x00010000
  58. #define GVSP_PIX_OCCUPY2BIT 0x00020000
  59. #define GVSP_PIX_OCCUPY4BIT 0x00040000
  60. #define GVSP_PIX_OCCUPY8BIT 0x00080000
  61. #define GVSP_PIX_OCCUPY12BIT 0x000C0000
  62. #define GVSP_PIX_OCCUPY16BIT 0x00100000
  63. #define GVSP_PIX_OCCUPY24BIT 0x00180000
  64. #define GVSP_PIX_OCCUPY32BIT 0x00200000
  65. #define GVSP_PIX_OCCUPY36BIT 0x00240000
  66. #define GVSP_PIX_OCCUPY48BIT 0x00300000
  67. #define GVSP_PIX_EFFECTIVE_PIXEL_SIZE_MASK 0x00FF0000
  68. #define GVSP_PIX_EFFECTIVE_PIXEL_SIZE_SHIFT 16
  69. // Pixel ID: lower 16-bit of the pixel formats
  70. #define GVSP_PIX_ID_MASK 0x0000FFFF
  71. #define GVSP_PIX_COUNT 0x46 // next Pixel ID available
  72. //max length of attribute name
  73. #define MAX_ATTR_NAME_LEN 1024
  74. enum EPixelType
  75. {
  76. // Undefined pixel type
  77. pixelTypeUndefined = -1,
  78. // Mono Format
  79. gvspPixelMono1p = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY1BIT | 0x0037),
  80. gvspPixelMono2p = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY2BIT | 0x0038),
  81. gvspPixelMono4p = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY4BIT | 0x0039),
  82. gvspPixelMono8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0001),
  83. gvspPixelMono8S = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0002),
  84. gvspPixelMono10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0003),
  85. gvspPixelMono10Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0004),
  86. gvspPixelMono12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0005),
  87. gvspPixelMono12Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0006),
  88. gvspPixelMono14 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0025),
  89. gvspPixelMono16 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0007),
  90. // Bayer Format
  91. gvspPixelBayGR8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0008),
  92. gvspPixelBayRG8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0009),
  93. gvspPixelBayGB8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000A),
  94. gvspPixelBayBG8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000B),
  95. gvspPixelBayGR10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000C),
  96. gvspPixelBayRG10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000D),
  97. gvspPixelBayGB10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000E),
  98. gvspPixelBayBG10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000F),
  99. gvspPixelBayGR12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0010),
  100. gvspPixelBayRG12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0011),
  101. gvspPixelBayGB12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0012),
  102. gvspPixelBayBG12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0013),
  103. gvspPixelBayGR10Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0026),
  104. gvspPixelBayRG10Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0027),
  105. gvspPixelBayGB10Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0028),
  106. gvspPixelBayBG10Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0029),
  107. gvspPixelBayGR12Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002A),
  108. gvspPixelBayRG12Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002B),
  109. gvspPixelBayGB12Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002C),
  110. gvspPixelBayBG12Packed = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002D),
  111. gvspPixelBayGR16 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x002E),
  112. gvspPixelBayRG16 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x002F),
  113. gvspPixelBayGB16 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0030),
  114. gvspPixelBayBG16 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0031),
  115. // RGB Format
  116. gvspPixelRGB8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0014),
  117. gvspPixelBGR8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0015),
  118. gvspPixelRGBA8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x0016),
  119. gvspPixelBGRA8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x0017),
  120. gvspPixelRGB10 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0018),
  121. gvspPixelBGR10 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0019),
  122. gvspPixelRGB12 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x001A),
  123. gvspPixelBGR12 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x001B),
  124. gvspPixelRGB16 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0033),
  125. gvspPixelRGB10V1Packed = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x001C),
  126. gvspPixelRGB10P32 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x001D),
  127. gvspPixelRGB12V1Packed = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY36BIT | 0X0034),
  128. gvspPixelRGB565P = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0035),
  129. gvspPixelBGR565P = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0X0036),
  130. // YVR Format
  131. gvspPixelYUV411_8_UYYVYY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x001E),
  132. gvspPixelYUV422_8_UYVY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x001F),
  133. gvspPixelYUV422_8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0032),
  134. gvspPixelYUV8_UYV = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0020),
  135. gvspPixelYCbCr8CbYCr = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x003A),
  136. gvspPixelYCbCr422_8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x003B),
  137. gvspPixelYCbCr422_8_CbYCrY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0043),
  138. gvspPixelYCbCr411_8_CbYYCrYY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x003C),
  139. gvspPixelYCbCr601_8_CbYCr = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x003D),
  140. gvspPixelYCbCr601_422_8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x003E),
  141. gvspPixelYCbCr601_422_8_CbYCrY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0044),
  142. gvspPixelYCbCr601_411_8_CbYYCrYY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x003F),
  143. gvspPixelYCbCr709_8_CbYCr = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0040),
  144. gvspPixelYCbCr709_422_8 = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0041),
  145. gvspPixelYCbCr709_422_8_CbYCrY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0045),
  146. gvspPixelYCbCr709_411_8_CbYYCrYY = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x0042),
  147. // RGB Planar
  148. gvspPixelRGB8Planar = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0021),
  149. gvspPixelRGB10Planar = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0022),
  150. gvspPixelRGB12Planar = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0023),
  151. gvspPixelRGB16Planar = (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0024),
  152. //BayerRG10p和BayerRG12p格式,针对特定项目临时添加,请不要使用
  153. //BayerRG10p and BayerRG12p, currently used for specific project, please do not use them
  154. gvspPixelBayRG10p = 0x010A0058,
  155. gvspPixelBayRG12p = 0x010c0059,
  156. //mono1c格式,自定义格式
  157. //mono1c, customized image format, used for binary output
  158. gvspPixelMono1c = 0x012000FF,
  159. //mono1e格式,自定义格式,用来显示连通域
  160. //mono1e, customized image format, used for displaying connected domain
  161. gvspPixelMono1e = 0x01080FFF
  162. };
  163. /// @}
  164. typedef enum GENICAM_ECameraAccessPermission
  165. {
  166. accessPermissionOpen = 0, ///< \~chinese GigE相机没有被连接 ///< \~english The GigE vision device isn't connected to any application.
  167. accessPermissionExclusive, ///< \~chinese 独占访问权限 ///< \~english Exclusive Access Permission
  168. accessPermissionControl, ///< \~chinese 非独占可读访问权限 ///< \~english Non-Exclusive Readbale Access Permission
  169. accessPermissionControlWithSwitchover, ///< \~chinese Control access with switchover enabled. ///< \~english Control access with switchover enabled.
  170. accessPermissionUnknown = 254, ///< \~chinese 无法确定 ///< \~english Value not known; indeterminate.
  171. accessPermissionUndefined ///< \~chinese 未定义访问权限 ///< \~english Undefined Access Permission
  172. }GENICAM_ECameraAccessPermission;
  173. ///< \~chinese
  174. ///枚举:协议类型
  175. ///< \~english
  176. ///enumeration: protocol type
  177. typedef enum GENICAM_EProtocolType
  178. {
  179. typeGige = 0, ///< \~chinese GigE协议 ///< \~english GigE Vision Protocol
  180. typeUsb3 = 1, ///< \~chinese USB3.0协议 ///< \~english USB3.0 Vision Protocol
  181. typeCL = 2, ///< \~chinese CAMERALINK协议 ///< \~english Camera Link Protocol
  182. typePCIe = 3, ///< \~chinese PCIe接口类型 ///< \~english PCIe Protocol
  183. typeAll = 255 ///< \~chinese 忽略协议类型,设备发现传入此类型时,表示需发现所有接口下的设备 ///< \~english ALL Supported Protocol
  184. }GENICAM_EProtocolType;
  185. /// \~chinese
  186. /// \brief 相机对象接口类
  187. /// \defgroup Camera 相机共用操作接口
  188. /// @{
  189. /// \~english
  190. /// \brief Camera Object Interface Class
  191. /// \defgroup Camera Camera Object Common Interface
  192. /// @{
  193. /// \~chinese
  194. /// 通用相机对象
  195. /// 32位系统下128字节
  196. /// \~english
  197. /// universal camera object
  198. /// 128 bytes in 32-bit system
  199. typedef struct GENICAM_Camera
  200. {
  201. /// \~chinese
  202. /// 底层私有数据
  203. /// \~english
  204. /// underlying private data
  205. void *priv;
  206. /// \~chinese
  207. /// 增加接口引用
  208. /// \param [in] thiz 本接口指针
  209. /// \~english
  210. /// add interface reference
  211. /// \param [in] thiz this pointer
  212. int32_t (*addRef)(struct GENICAM_Camera *thiz);
  213. /// \~chinese
  214. /// 释放接口
  215. /// \param [in] thiz 本接口指针
  216. /// \~english
  217. /// release interface
  218. /// \param [in] thiz this pointer
  219. int32_t(*release)(struct GENICAM_Camera *thiz);
  220. /// \~chinese
  221. /// \brief 得到相机类型
  222. /// \param [in] thiz 本接口指针
  223. /// \return 成功则返回0,否则返回-1
  224. /// \~english
  225. /// \brief get Camera Type
  226. /// \param [in] thiz this pointer
  227. /// \return Success:0, Failure:-1
  228. int32_t (*getType)(struct GENICAM_Camera *thiz);
  229. /// \~chinese
  230. /// \brief 获取相机名称
  231. /// \param [in] thiz 本接口指针
  232. /// \return 成功返回相机名称,否则返回NULL
  233. /// \~english
  234. /// \brief get Camera Name
  235. /// \param [in] thiz this pointer
  236. /// \return Success:Camera Name, Failure:NULL
  237. const char* (*getName)(struct GENICAM_Camera *thiz);
  238. /// \~chinese
  239. /// \brief 获取相机的唯一标识.
  240. /// \param [in] thiz 本接口指针
  241. /// \return 成功返回唯一标识相机的字符串,失败返回NULL
  242. /// \~english
  243. /// \brief get Camera Unique Key
  244. /// \param [in] thiz this pointer
  245. /// \return Success:Key, Failure:NULL
  246. const char* (*getKey)(struct GENICAM_Camera *thiz);
  247. /// \~chinese
  248. /// \brief 连接设备
  249. /// 与相机建立连接关系,如Gige Vision协议的相机即是获得控制权限、创建控制通道
  250. /// \param [in] thiz 本接口指针
  251. /// \param [in] accessPermission 目前只支持accessPermissionControl权限,调用该接口时传入此类权限
  252. /// \retval < 0 连接设备失败
  253. /// \retval 0 连接设备成功
  254. /// \~english
  255. /// \brief connect to camera
  256. /// establish connection with camera, for example, for GigE camera, which means get the control permission of camera and create control channel
  257. /// \param [in] thiz this pointer
  258. /// \param [in] accessPermission only accessPermissionControl supported currently
  259. /// \retval < 0 connection failed
  260. /// \retval 0 connection successful
  261. int32_t (*connect)(struct GENICAM_Camera *thiz,GENICAM_ECameraAccessPermission accessPermission);
  262. /// \~chinese
  263. /// \brief 断开连接
  264. /// 断开与相机的连接关系,如Gige Vision协议的相机即是释放控制权限、销毁控制通道
  265. /// \param [in] thiz 本接口指针
  266. /// \retval < 0 断开设备失败
  267. /// \retval 0 断开设备成功
  268. /// \~english
  269. /// \brief disconnect camera
  270. /// disconnect the camera, for example, for GigE camera, which means release the control permission of camera and destroy the control channel
  271. /// \param [in] thiz this pointer
  272. /// \retval < 0 disconnection failed
  273. /// \retval 0 disconnection successful
  274. int32_t (*disConnect)(struct GENICAM_Camera *thiz);
  275. /// \~chinese
  276. /// \brief 判断相机当前是否处于已连接状态
  277. /// \param [in] thiz 本接口指针
  278. /// \retval < 0 设备处于断开状态
  279. /// \retval 0 设备处于连接状态
  280. /// \~english
  281. /// \brief check the camera is connected or disconnected
  282. /// \param [in] thiz this pointer
  283. /// \retval < 0 camera is disconnected
  284. /// \retval 0 camera is connected
  285. int32_t (*isConnected)(struct GENICAM_Camera *thiz);
  286. /// \~chinese
  287. /// \brief 获取相机所属的接口名
  288. /// \param [in] thiz 本接口指针
  289. /// \return 成功返回设备所属的接口名,否则返回NULL
  290. /// \~english
  291. /// \brief get the name of interface whice is connect to camera
  292. /// \param [in] thiz this pointer
  293. /// \return Success:Interface Name, Failure:NULL
  294. const char* (*getInterfaceName)(struct GENICAM_Camera *thiz);
  295. /// \~chinese
  296. /// \brief 获取相机所连接的接口类型
  297. /// \param [in] thiz 本接口指针
  298. /// \return 返回相机所连接的接口类型
  299. /// \~english
  300. /// \brief get the type of interface which is connect to camera
  301. /// \param [in] thiz this pointer
  302. /// \return the type of interface
  303. int32_t (*getInterfaceType)(struct GENICAM_Camera *thiz);
  304. /// \~chinese
  305. /// \brief 下载相机描述XML文件
  306. /// 下载相机描述文件,并保存到指定路径
  307. /// \param [in] thiz 本接口指针
  308. /// \param [in] aFullFilename 文件要保存的路径
  309. /// \retval < 0 下载XML失败
  310. /// \retval 0 下载XML成功
  311. /// \~english
  312. /// \brief download XML file of camera description
  313. /// download camera discription file, and save the file to specified path
  314. /// \param [in] thiz this pointer
  315. /// \param [in] aFullFilename full path name of the downloaded xml file
  316. /// \retval < 0 download failed
  317. /// \retval 0 download successful
  318. int32_t (*downLoadGenICamXML)(struct GENICAM_Camera *thiz,const char* aFullFilename);
  319. /// \~chinese
  320. /// \brief 获取相机制造厂商名称
  321. /// \param [in] thiz 本接口指针
  322. /// \return 返回厂商名称
  323. /// \~english
  324. /// \brief get camera's vendor
  325. /// \param [in] thiz this pointer
  326. /// \return camera's vendor, return NULL if failed
  327. const char* (*getVendorName)(struct GENICAM_Camera *thiz);
  328. /// \~chinese
  329. /// \brief 获取相机的型号
  330. /// \param [in] thiz 本接口指针
  331. /// \return 返回相机型号
  332. /// \~english
  333. /// \brief get camera's model name
  334. /// \param [in] thiz this pointer
  335. /// \return camera's model name, return NULL if failed
  336. const char* (*getModelName)(struct GENICAM_Camera *thiz);
  337. /// \~chinese
  338. /// \brief 获取相机的序列号
  339. /// \param [in] thiz 本接口指针
  340. /// \return 返回相机的序列号
  341. /// \~english
  342. /// \brief get camera's serial number
  343. /// \param [in] thiz this pointer
  344. /// \return camera's serial number, return NULL if failed
  345. const char* (*getSerialNumber)(struct GENICAM_Camera *thiz);
  346. /// \~chinese
  347. /// \brief 获取相机固件版本号
  348. /// \param [in] thiz 本接口指针
  349. /// \return 返回相机的固件版本号
  350. /// \~english
  351. /// \brief get device version of this camera
  352. /// \param [in] thiz this pointer
  353. /// \return device version of this camera, return NULL if failed
  354. const char* (*getDeviceVersion)(struct GENICAM_Camera *thiz);
  355. /// \~chinese
  356. /// \brief 获取相机制造信息
  357. /// \param [in] thiz 本接口指针
  358. /// \return 返回相机的制造信息
  359. /// \~english
  360. /// \brief get manufacture info of this camera
  361. /// \param [in] thiz this pointer
  362. /// \return manufacture info of this camera, return NULL if failed
  363. const char* (*getManufactureInfo)(struct GENICAM_Camera *thiz);
  364. uint32_t reserved[15]; ///< \~chinese 保留 ///< \~english reserved field
  365. }GENICAM_Camera;
  366. /// @}
  367. /// \~chinese
  368. /// \brief 发现设备、创建常用属性对象
  369. /// \defgroup System 设备发现、属性常用对象创建和事件订阅对象创建接口
  370. /// @{
  371. /// \~english
  372. /// \brief discover camera, and create common property instance
  373. /// \defgroup System System Management Interface
  374. /// @{
  375. /// \~chinese
  376. /// \brief 全局单例系统对象,32位系统下128字节
  377. /// \~english
  378. /// \brief Global singleton system object, 128 bytes in 32-bit system
  379. typedef struct GENICAM_System
  380. {
  381. /// \~chinese
  382. /// 底层私有数据
  383. /// \~english
  384. /// Underlying private data
  385. void *priv;
  386. /// \~chinese
  387. /// 增加接口引用
  388. /// \param [in] thiz 本接口指针
  389. /// \~english
  390. /// add interface reference
  391. /// \param [in] thiz this pointer
  392. int32_t (*addRef)(struct GENICAM_System *thiz);
  393. /// \~chinese
  394. /// 释放接口
  395. /// \param [in] thiz 本接口指针
  396. /// \~english
  397. /// release interface
  398. /// \param [in] thiz this pointer
  399. int32_t (*release)(struct GENICAM_System *thiz);
  400. /// \~chinese
  401. /// \brief 发现指定接口类型可达的设备
  402. /// \param [in] thiz 本接口指针
  403. /// \param [out] ppCameraList 指定接口类型所有在线设备对象列表,该内存在函数内部申请,但需外部传入一个一维指针有效地址指向该设备列表
  404. /// \param [out] pCameraCnt 发现的设备个数
  405. /// \param [in] interfaceType 接口类型,当传入的是typeAll时,表示目前所有已支持的协议类型设备都会被发现
  406. /// \retval < 0 发现设备失败
  407. /// \retval 0 发现设备成功
  408. /// \~english
  409. /// \brief discover reachable camera which has specified interface type
  410. /// \param [in] thiz this pointer
  411. /// \param [out] ppCameraList camera instance list of specified interface type. thie memory is allocated inside the function, but it requires externally input a pointer of valid address to the device list
  412. /// \param [out] pCameraCnt the number of discovered cameras
  413. /// \param [in] interfaceType interface type.when "typeAll" is specified which means all cameras which are currently supported will be discovered
  414. /// \retval < 0 discovery failed
  415. /// \retval 0 discovery successful
  416. int32_t (*discovery)(struct GENICAM_System *thiz, GENICAM_Camera **ppCameraList, uint32_t *pCameraCnt, GENICAM_EProtocolType interfaceType);
  417. /// \~chinese
  418. /// \brief 根据相机的key获取 Camera 对象指针
  419. /// \param [in] thiz 本接口指针
  420. /// \param [in] pCameraKey 相机的key
  421. /// \return 返回Camera指针,若传入的pCameraKey不存在或者非法,则返回空指针
  422. /// \~english
  423. /// \brief get the pointer of camera object according to camera key
  424. /// \param [in] thiz this pointer
  425. /// \param [in] pCameraKey camera key
  426. /// \return Success:camera pointer, Failure:NULL
  427. GENICAM_Camera* (*getCamera)(struct GENICAM_System *thiz,const char * pCameraKey);
  428. /// \~chinese
  429. /// \brief 获取版本信息
  430. /// \param [in] thiz 本接口指针
  431. /// \return 版本信息,失败时返回NULL
  432. /// \~english
  433. /// \brief get version info
  434. /// \param [in] thiz this pointer
  435. /// \return Success:version info, Failure:NULL
  436. const char* (*getVersion)(struct GENICAM_System *thiz);
  437. uint32_t reserved[26]; ///< 保留 ///< \~english reserved field
  438. }GENICAM_System;
  439. /// \~chinese
  440. /// 创建系统对象,全局唯一
  441. ///
  442. /// \param [out] ppSystem 输出参数,返回的是系统对象的指针
  443. /// \retval < 0 创建失败
  444. /// \retval 0 创建成功
  445. /// \~english
  446. /// create system object, Globally unique
  447. ///
  448. /// \param [out] ppSystem output parameter, return pointer of the system object
  449. /// \retval < 0 create failed
  450. /// \retval 0 create successful
  451. GENICAM_API int32_t CALL_METHOD GENICAM_getSystemInstance(GENICAM_System** ppSystem);
  452. /// @}
  453. /// \~chinese
  454. /// \brief 数据帧对象接口
  455. /// \defgroup Frame 数据帧操作接口
  456. /// @{
  457. /// \~english
  458. /// \brief data frame object interface
  459. /// \defgroup frame operation interface
  460. /// @{
  461. typedef enum GENICAM_EPayloadType
  462. {
  463. payloadImage = 1, ///< \~chinese 图片 \~english Image
  464. payloadRawdata, ///< \~chinese 裸数据 \~english Raw Data
  465. payloadFile, ///< \~chinese 文件 \~english File
  466. payloadChunkData, ///< \~chinese 块数据 \~english Chunk Data
  467. payloadExtChunkData, ///< \~chinese 扩展块数据 \~english Extension Chunk Data
  468. payloadDevSpecBase = 0x8000, ///< \~chinese 设备特有 \~english Device specific payload type
  469. payloadUndefined ///< \~chinese 未定义 \~english Undefined
  470. }GENICAM_EPayloadType;
  471. /// \~chinese
  472. /// \brief 数据帧对象
  473. /// 32位系统下128字节
  474. /// \~english
  475. /// \brief data frame object
  476. /// 128 bytes in 32-bit system
  477. typedef struct GENICAM_Frame
  478. {
  479. /// \~chinese
  480. /// 底层私有数据
  481. /// \~english
  482. /// Underlying private data
  483. void *priv;
  484. /// \~chinese
  485. /// 增加接口引用
  486. /// \param [in] thiz 本接口指针
  487. /// \~english
  488. /// add interface reference
  489. /// \param [in] thiz this pointer
  490. int32_t (*addRef)(struct GENICAM_Frame *thiz);
  491. /// \~chinese
  492. /// 释放接口
  493. /// \param [in] thiz 本接口指针
  494. /// \~english
  495. /// release interface
  496. /// \param [in] thiz this pointer
  497. int32_t (*release)(struct GENICAM_Frame *thiz);
  498. /// \~chinese
  499. /// \brief 帧深拷贝克隆接口
  500. /// \param [in] thiz 本接口指针
  501. /// \return 新的一帧对象
  502. /// \~english
  503. /// \brief frame deep copy clone interface
  504. /// \param [in] thiz this pointer
  505. /// \return new frame object
  506. struct GENICAM_Frame* (*clone)(struct GENICAM_Frame *thiz);
  507. /// \~chinese
  508. /// \brief 外面不使用时需要调用此接口释放Image相关内存
  509. /// \param [in] thiz 本接口指针
  510. /// \return none
  511. /// \~english
  512. /// \brief Call this interface to release image related memory externally when it is not in use
  513. /// \param [in] thiz this pointer
  514. /// \return none
  515. void (*reset)(struct GENICAM_Frame *thiz);
  516. /// \~chinese
  517. /// brief 是否有效
  518. /// \param [in] thiz 本接口指针
  519. /// \retval < 0 该帧无效
  520. /// \retval 0 该帧有效
  521. /// \~english
  522. /// brief check the frame is valid or not
  523. /// \param [in] thiz this pointer
  524. /// \retval < 0 frame invalid
  525. /// \retval 0 frame valid
  526. int32_t (*valid)(struct GENICAM_Frame *thiz);
  527. /// \~chinese
  528. /// \brief 获取该帧图片数据的内存首地址
  529. /// \param [in] thiz 本接口指针
  530. /// \return 返回该帧图片数据的内存首地址
  531. /// \~english
  532. /// \brief Get the starting address of memory of this image data
  533. /// \param [in] thiz this pointer
  534. /// \return Return the starting address of memory of this image data
  535. const void* (*getImage)(struct GENICAM_Frame *thiz);
  536. /// \~chinese
  537. /// \brief 获取数据帧状态
  538. /// \param [in] thiz 本接口指针
  539. /// \return 返回数据帧状态
  540. /// \~english
  541. /// \brief Get status of data frame
  542. /// \param [in] thiz this pointer
  543. /// \return the data frame status
  544. uint32_t (*getFrameStatus)(struct GENICAM_Frame *thiz);
  545. /// \~chinese
  546. /// \brief 获取图片宽度
  547. /// \param [in] thiz 本接口指针
  548. /// \return 返回图片宽度,失败时为0
  549. /// \~english
  550. /// \brief get the width of image
  551. /// \param [in] thiz this pointer
  552. /// \return the width of image, return 0 when failed
  553. uint32_t (*getImageWidth)(struct GENICAM_Frame *thiz);
  554. /// \~chinese
  555. /// \brief 获取图片高度
  556. /// \param [in] thiz 本接口指针
  557. /// \return 返回图片高度,失败时为0
  558. /// \~english
  559. /// \brief get the height of image
  560. /// \param [in] thiz this pointer
  561. /// \return the height of image, return 0 when failed
  562. uint32_t (*getImageHeight)(struct GENICAM_Frame *thiz);
  563. /// \~chinese
  564. /// \brief 获取图片大小
  565. /// \param [in] thiz 本接口指针
  566. /// \return 返回图片大小,失败时为0
  567. /// \~english
  568. /// \brief get the size of image
  569. /// \param [in] thiz this pointer
  570. /// \return the size of image, return 0 when failed
  571. uint32_t (*getImageSize)(struct GENICAM_Frame *thiz);
  572. /// \~chinese
  573. /// \brief 获取图片像素格式
  574. /// \param [in] thiz 本接口指针
  575. /// \return 返回图片像素格式
  576. /// \~english
  577. /// \brief get image pixel format
  578. /// \param [in] thiz this pointer
  579. /// \return image pixel format
  580. enum EPixelType (*getImagePixelFormat)(struct GENICAM_Frame *thiz);
  581. /// \~chinese
  582. /// \brief 获取图片时间戳
  583. /// \param [in] thiz 本接口指针
  584. /// \return 返回图片时间戳,失败时为0
  585. /// \~english
  586. /// \brief get timestamp of image
  587. /// \param [in] thiz this pointer
  588. /// return image time stamp, return 0 when failed
  589. uint64_t (*getImageTimeStamp)(struct GENICAM_Frame *thiz);
  590. /// \~chinese
  591. /// \brief 获取图片对应的BlockId
  592. /// \param [in] thiz 本接口指针
  593. /// \return 返回图片对应的BlockId,失败时为0
  594. /// \~english
  595. /// \brief get the image's block ID
  596. /// \param [in] thiz this pointer
  597. /// \return the image's block ID, return 0 when failed
  598. uint64_t (*getBlockId)(struct GENICAM_Frame *thiz);
  599. /// \~chinese
  600. /// \brief 获取当前帧数据净荷类型
  601. /// \param [in] thiz 本接口指针
  602. /// \param [in/out] pPayloadTypeList 当前帧数据类型种类集,最大种类不超过MAX_PAYLOAD_TYPE_CNT,该内存外部分配
  603. /// \param [in/out] pTypeCnt 入参时为数组的实际长度;出参时为当前帧数据类型的实际个数,最大不超过20
  604. /// \return 返回当前帧数据净荷类型
  605. /// \~english
  606. /// \brief get pay load type of current frame
  607. /// \param [in] thiz this pointer
  608. /// \param [in/out] pPayloadTypeList Current frame data type set, maximum type cannot excced MAX_PAYLOAD_TYPE_CNT, and the memory is allocated externally
  609. /// \param [in/out] pTypeCnt the actul length of array when input;the number of the current frame's data types when output, maximum value cannot exceed 20
  610. /// \return pay load type of current frame
  611. int32_t(*getPayLoadTypes)(struct GENICAM_Frame *thiz, GENICAM_EPayloadType aPayloadTypeList[MAX_PAYLOAD_TYPE_CNT], uint32_t *pTypeCnt);
  612. /// \~chinese
  613. /// \brief 获取Buffer中包含的Chunk个数
  614. /// \param [in] thiz 本接口指针
  615. /// \return Chunk个数
  616. /// \~english
  617. /// \brief get the number of chunk in buffer
  618. /// \param [in] thiz this pointer
  619. /// \return the number of chunk
  620. uint32_t (*getChunkCount)(struct GENICAM_Frame *thiz);
  621. /// \~chinese
  622. /// \brief 获取Chunk数据
  623. /// \param [in] thiz 本接口指针
  624. /// \param [in] aIndex 索引ID
  625. /// \param [out] pID ChunkID
  626. /// \param [in/out] aRefParamList Chunk数据对应的属性名,该内存外部分配,接口约定ChunkID对应的参数列表最大不超过MAX_PARAM_CNT个,每个属性的字符长度不超过MAX_STRING_LENTH。
  627. /// \param [in/out] pParamCnt Chunk对应的属性个数,入参时为最大的参数个数,出参时为实际的参数个数
  628. /// \return 是否成功
  629. /// \~english
  630. /// \brief get chunk data
  631. /// \param [in] thiz this pointer
  632. /// \param [in] aIndex index ID
  633. /// \param [out] pID ChunkID
  634. /// \param [in/out] aRefParamList Chunk data's property name, this memory is allocated externally, Chunk ID's property list cannot exceed MAX_PARAM_CNT, each property's characters cannot exceed MAX_STRING_LENTH
  635. /// \param [in/out] pParamCnt the number of chunk's property, maximum parameter's number when input, real parameter's number when output
  636. /// \return success or fail
  637. int32_t (*getChunkDataByIndex)(struct GENICAM_Frame *thiz,uint32_t aIndex, uint32_t *pID,
  638. char aRefParamList[MAX_PARAM_CNT][MAX_STRING_LENTH], uint32_t *pParamCnt);
  639. /// \~chinese
  640. /// \brief 获取图片paddingX
  641. /// \param [in] thiz 本接口指针
  642. /// \return 返回图片paddingX,失败时为0
  643. /// \~english
  644. /// \brief get the paddingX of image
  645. /// \param [in] thiz this pointer
  646. /// \return the paddingX of image, return 0 when failed
  647. uint32_t(*getImagePaddingX)(struct GENICAM_Frame *thiz);
  648. /// \~chinese
  649. /// \brief 获取图片paddingY
  650. /// \param [in] thiz 本接口指针
  651. /// \return 返回图片paddingY,失败时为0
  652. /// \~english
  653. /// \brief get the paddingY of image
  654. /// \param [in] thiz this pointer
  655. /// \return the paddingY of image, return 0 when failed
  656. uint32_t(*getImagePaddingY)(struct GENICAM_Frame *thiz);
  657. uint32_t reserved[13]; ///< \~chinese 保留 ///< \~english reserved field
  658. }GENICAM_Frame;
  659. /// @}
  660. /// \~chinese
  661. /// \brief 流对象接口类
  662. /// \defgroup stream 流对象操作接口
  663. /// @{
  664. /// \~english
  665. /// \brief stream object interface class
  666. /// \defgroup stream Stream Object Operation Interface
  667. /// @{
  668. typedef enum GENICAM_EGrabStrategy
  669. {
  670. grabStrartegySequential = 0, ///< \~chinese 按到达顺序处理图片 ///< \~english The images are processed in the order of their arrival
  671. grabStrartegyLatestImage = 1, ///< \~chinese 获取最新的图片 ///< \~english get latest image
  672. grabStrartegyUndefined ///< \~chinese 未定义 ///< \~english undefined
  673. }GENICAM_EGrabStrategy;
  674. /// \~chinese
  675. /// \brief 设备流回调函数声明:每次回调送出一帧数据
  676. /// pFrame 回调时主动推送的帧对象,外部用完该帧后需要释放
  677. /// \~english
  678. /// \brief Callback function declaration of stream: Send out one frame at each time use callback function
  679. /// pFrame The frame which will be active pushed out during the callback, when this frame is used externally then it is required to be released
  680. typedef void(*callbackFun)(GENICAM_Frame* pFrame);
  681. /// \~chinese
  682. /// \brief 设备流回调函数声明:每次回调送出一帧数据
  683. /// pFrame 回调时主动推送的帧对象,外部用完该帧后需要释放
  684. /// pUser 用户自定义数据
  685. /// \~english
  686. /// \brief Callback function declaration of stream: Send out one frame at each time use callback function
  687. /// pFrame The frame which will be active pushed out during the callback, when this frame is used externally then it is required to be released
  688. /// pUser user defined data
  689. typedef void(*callbackFunEx)(GENICAM_Frame* pFrame, void* pUser);
  690. /// \~chinese
  691. /// \brief GENICAM_StreamSource 流对象
  692. /// 32位系统下128字节
  693. /// \~english
  694. /// \brief stream object
  695. /// 128 bytes in 32-bit system
  696. typedef struct GENICAM_StreamSource
  697. {
  698. /// \~chinese
  699. /// 底层私有数据
  700. /// \~english
  701. /// Underlying private data
  702. void *priv;
  703. /// \~chinese
  704. /// 增加接口引用
  705. /// \param [in] thiz 本接口指针
  706. /// \~english
  707. /// add interface reference
  708. /// \param [in] thiz this pointer
  709. int32_t (*addRef)(struct GENICAM_StreamSource *thiz);
  710. /// \~chinese
  711. /// 释放接口
  712. /// \param [in] thiz 本接口指针
  713. /// \~english
  714. /// release interface
  715. /// \param [in] thiz this pointer
  716. int32_t (*release)(struct GENICAM_StreamSource *thiz);
  717. /// \~chinese
  718. /// \brief 开始抓图
  719. /// \param [in] thiz 本接口指针
  720. /// \param [in] maxImagesGrabbed 允许最多的抓图数,达到指定抓图数后停止抓图,如果为0,表示忽略此参数,会连续抓图
  721. /// \param [in] strategy 抓图策略
  722. /// \return 返回抓图是否成功,0表示成功,-1表示失败
  723. /// \~english
  724. /// \brief Start grabbing
  725. /// \param [in] thiz this pointer
  726. /// \param [in] maxImagesGrabbed Maximum images allowed to grab, once it reaches the limit then stop grabbing; If it is 0, then ignore this parameter and start grabbing continuously
  727. /// \param [in] strategy Image grabbing strategy
  728. /// \return success:0, fail:-1
  729. int32_t (*startGrabbing)(struct GENICAM_StreamSource *thiz, uint64_t maxImagesGrabbed, GENICAM_EGrabStrategy strategy);
  730. /// \~chinese
  731. /// \brief 停止抓图
  732. /// \param [in] thiz 本接口指针
  733. /// \return 返回停止抓图是否成功,0表示成功,-1表示失败
  734. /// \~english
  735. /// \brief Stop grabbing
  736. /// \param [in] thiz this pointer
  737. /// \return success:0, fail:-1
  738. int32_t (*stopGrabbing)(struct GENICAM_StreamSource *thiz);
  739. /// \~chinese
  740. /// \brief 是否正在抓图
  741. /// \param [in] thiz 本接口指针
  742. /// \return 返回是否处于拉流状态,0表示处于拉流状态,-1表示非拉流状态
  743. /// \~english
  744. /// \brief Check whether it is grabbing or not
  745. /// \param [in] thiz this pointer
  746. /// \return grabbing or not grabbing, 0 means it is grabbing, -1 means it is not grabbing
  747. int32_t (*isGrabbing)(struct GENICAM_StreamSource *thiz);
  748. /// \~chinese
  749. /// \brief 获取一帧图像,该接口不支持多线程调用
  750. /// \param [in] thiz 本接口指针
  751. /// \param [out] ppFrame 一帧图像,内存由函数内部分配,用完该帧后需要显示调用GENICAM_Frame release接口显示释放
  752. /// \param [in] timeoutMS 获取一帧图像的超时时长,单位MS,当值为INFINITE时表示无限等待
  753. /// \return 返回是否成功,0表示成功,-1表示失败
  754. /// \~english
  755. /// \brief get a frame image, and this interface does not support multi-threading
  756. /// \param [in] thiz this pointer
  757. /// \param [out] ppFrame There is one image, its memory is allocated internally in this function, it is also required to call GENICAM_Frame release interface to release memory after use up this image
  758. /// \param [in] The timeout value of getting one image, unit is MS; When the value is INFINITE which means infinite wait
  759. /// \return success:0, fail:-1
  760. int32_t (*getFrame)(struct GENICAM_StreamSource *thiz, GENICAM_Frame **ppFrame, uint32_t timeoutMS);
  761. /// \~chinese
  762. /// \brief 注册数据帧回调函数。该异步获取帧机制和同步获取帧机制互斥,系统中两者只能选其一。
  763. /// \brief 只能处理一个回调函数
  764. /// \param [in] thiz 本接口指针
  765. /// \param [in] proc 数据帧回调函数,建议不要在该函数中处理耗时的操作,否则会阻塞后续数据帧的实时性
  766. /// \return 返回注册是否成功,0表示成功,-1表示失败
  767. /// \~english
  768. /// \brief Register data frame callback function; This asynchronous frame acquisition mechanism and synchronous frame acquisition mechanism are mutually exclusive, only one method can be choosed between these two in system
  769. /// \brief only process one callback unction
  770. /// \param [in] thiz this pointer
  771. /// \param [in] proc Data frame callback function; It is advised to not put time-cosuming operation in this function, otherwise it will block follow-up data frames and affect real time performance
  772. /// \return success:0, fail:-1
  773. int32_t (*attachGrabbing)(struct GENICAM_StreamSource *thiz, callbackFun proc);
  774. /// \~chinese
  775. /// \brief 去注册数据帧回调函数
  776. /// \param [in] thiz 本接口指针
  777. /// \param [in] proc 去注册数据帧回调函数
  778. /// \return 返回去注册是否成功,0表示成功,-1表示失败
  779. /// \~english
  780. /// \brief Unregister data frame callback function
  781. /// \param [in] thiz this pointer
  782. /// \param [in] proc Unregister data frame callback function
  783. /// \return success:0, fail:-1
  784. int32_t(*detachGrabbing)(struct GENICAM_StreamSource *thiz, callbackFun proc);
  785. /// \~chinese
  786. /// \brief 设置缓存个数,不能在拉流过程中设置
  787. /// \param [in] thiz 指针
  788. /// \param [in] 缓存数量
  789. /// \return 返回是否成功
  790. /// \~english
  791. /// \brief set number of buffer,it can not be set in Grabbing.
  792. /// \param [in] thiz this pointer
  793. /// \param [in] number of buffer
  794. /// \return success:0, fail:-1
  795. int32_t(*setBufferCount)(struct GENICAM_StreamSource *thiz, uint32_t nSize);
  796. /// \~chinese
  797. /// \brief 注册数据帧回调函数(包含用户自定义数据)。该异步获取帧机制和同步获取帧机制互斥,系统中两者只能选其一。
  798. /// \brief 只能处理一个回调函数
  799. /// \param [in] thiz 本接口指针
  800. /// \param [in] proc 数据帧回调函数,建议不要在该函数中处理耗时的操作,否则会阻塞后续数据帧的实时性
  801. /// \param [in] pUser 用户自定义数据
  802. /// \return 返回注册是否成功,0表示成功,-1表示失败
  803. /// \~english
  804. /// \brief Register data frame callback function(include user defined data); This asynchronous frame acquisition mechanism and synchronous frame acquisition mechanism are mutually exclusive, only one method can be choosed between these two in system
  805. /// \brief only process one callback unction
  806. /// \param [in] thiz this pointer
  807. /// \param [in] proc Data frame callback function; It is advised to not put time-cosuming operation in this function, otherwise it will block follow-up data frames and affect real time performance
  808. /// \param [in] pUser user defined data
  809. /// \return success:0, fail:-1
  810. int32_t(*attachGrabbingEx)(struct GENICAM_StreamSource *thiz, callbackFunEx proc, void* pUser);
  811. /// \~chinese
  812. /// \brief 去注册数据帧回调函数(包含用户自定义数据)
  813. /// \param [in] thiz 本接口指针
  814. /// \param [in] proc 去注册数据帧回调函数
  815. /// \param [in] pUser 用户自定义数据(与attachGrabbingEx的pUser相同)
  816. /// \return 返回去注册是否成功,0表示成功,-1表示失败
  817. /// \~english
  818. /// \brief Unregister data frame callback function(include user defined data)
  819. /// \param [in] thiz this pointer
  820. /// \param [in] proc Unregister data frame callback function(the same pUser of the attachGrabbingEx)
  821. /// \param [in] pUser user defined data
  822. /// \return success:0, fail:-1
  823. int32_t(*detachGrabbingEx)(struct GENICAM_StreamSource *thiz, callbackFunEx proc, void* pUser);
  824. /// \~chinese
  825. /// \brief 设置驱动包间隔时间(ms),仅对Gige设备有效
  826. /// \param [in] thiz 本接口指针
  827. /// \param [in] nTimeout 包间隔时间,单位ms
  828. /// \return 设置是否成功,0表示成功,-1表示失败
  829. /// \~english
  830. /// \brief set packet timeout(ms),just for GigE devices
  831. /// \param [in] thiz this pointer
  832. /// \param [in] the value of timeout
  833. /// \return success:0, fail:-1
  834. int32_t(*setInterPacketTimeout)(struct GENICAM_StreamSource *thiz, uint32_t nTimeout);
  835. uint32_t reserved[19]; ///< \~chinese 保留 ///< \~english reserved field
  836. }GENICAM_StreamSource;
  837. /// \~chinese
  838. /// \brief 流对象参数
  839. /// 32位系统下128字节
  840. /// \~english
  841. /// \brief stream object parameter
  842. /// 128 bytes in 32-bit system
  843. typedef struct GENICAM_StreamSourceInfo
  844. {
  845. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  846. uint32_t channelId; ///< \~chinese 通道号 ///< \~english ID of channel
  847. uint32_t reserved[30]; ///< \~chinese 保留 ///< \~english reserved field
  848. } GENICAM_StreamSourceInfo;
  849. /// \~chinese
  850. /// 创建流通道对象,该对象由外部调用该接口创建,释放时调用release接口
  851. ///
  852. /// \param [in] pStreamSourceInfo 创建流对象的参数
  853. /// \param [out] ppStreamSource 返回的流对象
  854. /// \retval < 0 创建失败
  855. /// \retval 0 创建成功
  856. /// \~english
  857. /// create stream channel object, this object is created by external call, and it requires to call release interface when release it
  858. /// \param [in] pStreamSourceInfo create parameter of stream object
  859. /// \param [out] ppStreamSource return stream object
  860. /// \retval < 0 create failed
  861. /// \retval 0 create successful
  862. GENICAM_API int32_t CALL_METHOD GENICAM_createStreamSource(const GENICAM_StreamSourceInfo* pStreamSourceInfo
  863. , GENICAM_StreamSource** ppStreamSource);
  864. /// @}
  865. typedef enum EVType
  866. {
  867. offLine, ///< \~chinese 设备离线通知 ///< \~english device offline notification
  868. onLine ///< \~chinese 设备在线通知 ///< \~english device online notification
  869. }EVType;
  870. /// \~chinese
  871. /// \brief 事件注册回调对象接口类
  872. /// \defgroup Event 相机事件订阅注册与去注册接口
  873. /// @{
  874. /// \~english
  875. /// \brief event subscribe callback interface class
  876. /// \defgroup Event register camera event subscribe and unsubscribe interface
  877. /// @{
  878. /// \~chinese
  879. /// \brief 连接事件参数封装
  880. /// \~english
  881. /// \brief connection event parameters encapsulation
  882. typedef struct GENICAM_SConnectArg
  883. {
  884. EVType m_event; ///< \~chinese 事件类型 ///< \~english event type
  885. uint32_t reserve[15]; ///< \~chinese 预留字段 ///< \~english reserved field
  886. }GENICAM_SConnectArg;
  887. /// \~chinese
  888. /// 参数更新事件参数封装
  889. /// \~english
  890. /// updating parameters event encapsulation
  891. typedef struct GENICAM_SParamUpdataArg
  892. {
  893. int32_t isPoll; ///< \~chinese 是否是定时更新,1表示是定时更新,0表示非定时更新 ///< \~english update periodically or not. 1 : update periodically, 0 : not update periodically
  894. uint32_t reserve[10]; ///< \~chinese 预留字段 ///< \~english reserved field
  895. char paramNames[MAX_PARAM_CNT][MAX_STRING_LENTH]; ///< \~chinese 更新的参数名称集合,约定更新的参数不超过1000个,每个参数的字符串长度不超过256 ///< \~english array of parameter's name which need to be updated. the maximum number of parameters is 1000. and the max length of strings of each parameter is 255.
  896. uint32_t referenceParamCnt; ///< \~chinese 更新的参数个数 ///< \~english the number of parameters which need update
  897. }GENICAM_SParamUpdataArg;
  898. /// \~chinese
  899. ///枚举:流事件状态
  900. /// \~english
  901. /// enumeration:stream event status
  902. typedef enum GENICAM_EEventStatus
  903. {
  904. streamEventNormal = 1, ///< \~chinese 正常流事件 ///< \~english normal stream event
  905. streamEventLostFrame = 2, ///< \~chinese 丢帧事件 ///< \~english lost frame event
  906. streamEventLostPacket = 3, ///< \~chinese 丢包事件 ///< \~english lost packet event
  907. streamEventImageError = 4, ///< \~chinese 图像错误事件 ///< \~english error image event
  908. streamEventStreamChannelError ///< \~chinese 取流错误事件 ///< \~english stream channel error event
  909. }GENICAM_EEventStatus;
  910. /// \~chinese
  911. /// \brief 流事件参数封装
  912. /// \~english
  913. /// \brief stream event parameters encapsulation
  914. typedef struct GENICAM_SStreamArg
  915. {
  916. uint32_t channel; ///< \~chinese 流通道号 ///< \~english channel no.
  917. uint64_t blockID; ///< \~chinese 流数据BlockID ///< \~english block ID of stream data
  918. uint64_t timestamp; ///< \~chinese 时间戳 ///< \~english event timestamp
  919. GENICAM_EEventStatus eStreamEventStatus; ///< \~chinese 流事件状态码 ///< \~english stream event status code
  920. uint32_t status; ///< \~chinese 事件状态错误码 ///< \~english status error code
  921. uint32_t reserve[9]; ///< \~chinese 预留字段 ///< \~english reserved field
  922. }GENICAM_SStreamArg;
  923. /// \~chinese
  924. /// 消息通道事件ID列表
  925. /// \~english
  926. /// message channel event id list
  927. #define MSG_EVENT_ID_EXPOSURE_END 0x9001
  928. #define MSG_EVENT_ID_FRAME_TRIGGER 0x9002
  929. #define MSG_EVENT_ID_FRAME_START 0x9003
  930. #define MSG_EVENT_ID_ACQ_START 0x9004
  931. #define MSG_EVENT_ID_ACQ_TRIGGER 0x9005
  932. #define MSG_EVENT_ID_DATA_READ_OUT 0x9006
  933. // \~chinese
  934. /// \brief 流事件参数封装
  935. /// \~english
  936. /// \brief stream event parameters encapsulation
  937. typedef struct GENICAM_SMsgChannelArg
  938. {
  939. uint16_t eventID; ///< \~chinese 事件Id ///< \~english event id
  940. uint16_t channelID; ///< \~chinese 消息通道号 ///< \~english channel id
  941. uint64_t blockID; ///< \~chinese 流数据BlockID ///< \~english block ID of stream data
  942. uint64_t timeStamp; ///< \~chinese 时间戳 ///< \~english event timestamp
  943. uint32_t reserve[8]; ///< \~chinese 预留字段 ///< \~english reserved field
  944. char paramNames[MAX_PARAM_CNT][MAX_STRING_LENTH]; ///< \~chinese 事件相关的属性名列表。约定属性名不超过1000个,每个属性名的字符串长度不超过256 ///< \~english array of parameter's name which is related. the maximum number of parameters is 1000. and the max length of strings of each parameter is 255.
  945. uint32_t referenceParamCnt;///< \~chinese 参数个数 ///< \~english the number of parameters which need update
  946. }GENICAM_SMsgChannelArg;
  947. /// \~chinese
  948. /// \brief 设备连接状态事件回调函数声明
  949. /// \~english
  950. /// \brief call back function declaration of camera connection status event
  951. typedef void (*connectCallBack)(const GENICAM_SConnectArg* pConnectArg);
  952. /// \~chinese
  953. /// \brief 设备连接状态事件回调函数声明
  954. /// \~english
  955. /// \brief call back function declaration of camera connection status event
  956. typedef void(*connectCallBackEx)(const GENICAM_SConnectArg* pConnectArg, void* pUser);
  957. /// \~chinese
  958. /// \brief 参数更新事件回调函数声明
  959. /// \~english
  960. /// \brief call back function declaration of camera parameter update event
  961. typedef void (*paramUpdateCallBack)(const GENICAM_SParamUpdataArg* pParamUpdateArg);
  962. /// \~chinese
  963. /// \brief 参数更新事件回调函数声明
  964. /// \~english
  965. /// \brief call back function declaration of camera parameter update event
  966. typedef void(*paramUpdateCallBackEx)(const GENICAM_SParamUpdataArg* pParamUpdateArg, void* pUser);
  967. /// \~chinese
  968. /// \brief 设备流事件回调函数声明
  969. /// \~english
  970. /// \brief call back function declaration of stream event
  971. typedef void (*streamCallBack)(const GENICAM_SStreamArg* pStreamArg);
  972. /// \~chinese
  973. /// \brief 设备流事件回调函数声明
  974. /// \~english
  975. /// \brief call back function declaration of stream event
  976. typedef void(*streamCallBackEx)(const GENICAM_SStreamArg* pStreamArg, void *pUser);
  977. /// \~chinese
  978. /// \brief 消息通道事件回调函数声明
  979. /// \~english
  980. /// \brief call back function declaration of message channel event
  981. typedef void(*msgChannelCallBackEx)(const GENICAM_SMsgChannelArg* pMsgChannelArg, void *pUser);
  982. /// \~chinese
  983. /// \brief 事件订阅对象
  984. /// 32位系统下128字节
  985. /// \~english
  986. /// \brief event subscribe object
  987. /// 128 bytes in 32-bit system
  988. typedef struct GENICAM_EventSubscribe
  989. {
  990. /// \~chinese
  991. /// 底层私有数据
  992. /// \~english
  993. /// Underlying private data
  994. void *priv;
  995. /// \~chinese
  996. /// 增加接口引用
  997. /// \param [in] thiz 本接口指针
  998. /// \~english
  999. /// add interface reference
  1000. /// \param [in] thiz this pointer
  1001. int32_t(*addRef)(struct GENICAM_EventSubscribe *thiz);
  1002. /// \~chinese
  1003. /// 释放接口
  1004. /// \param [in] thiz 本接口指针
  1005. /// \~english
  1006. /// release interface
  1007. /// \param [in] thiz this pointer
  1008. int32_t(*release)(struct GENICAM_EventSubscribe *thiz);
  1009. /// \~chinese
  1010. /// \brief 设备连接状态事件回调注册,只支持一个回调函数有效
  1011. /// \param [in] thiz 本接口指针
  1012. /// \param [in] proc 设备连接状态事件回调注册函数
  1013. /// \return 注册是否成功
  1014. /// \~english
  1015. /// \brief register call back function of camera connection status event. only support one valid call back function
  1016. /// \param [in] thiz this pointer
  1017. /// \param [in] proc register call back function of camera connection status event
  1018. /// \return the result of registration
  1019. int32_t(*subscribeConnectArgs)(struct GENICAM_EventSubscribe *thiz, const connectCallBack proc);
  1020. /// \~chinese
  1021. /// \brief 设备连接状态事件回调去注册
  1022. /// \param [in] thiz 本接口指针
  1023. /// \param [in] proc 设备连接状态事件回调去注册函数
  1024. /// \return 去注册是否成功
  1025. /// \~english
  1026. /// \brief unregister call back function of camera connection status event.
  1027. /// \param [in] thiz this pointer
  1028. /// \param [in] proc unregister call back function of camera connection status event
  1029. /// \return the result of unregistration
  1030. int32_t(*unsubscribeConnectArgs)(struct GENICAM_EventSubscribe *thiz, const connectCallBack proc);
  1031. /// \~chinese
  1032. /// \brief 参数更新事件回调注册,只支持一个回调函数有效
  1033. /// \param [in] thiz 本接口指针
  1034. /// \param [in] proc 参数更新注册的事件回调函数
  1035. /// \return 注册是否成功
  1036. /// \~english
  1037. /// \brief register call back function of parameter update event. only support one valid call back function
  1038. /// \param [in] thiz this pointer
  1039. /// \param [in] proc register call back function of parameter update event
  1040. /// \return the result of registration
  1041. int32_t (*subscribeParamUpdate)(struct GENICAM_EventSubscribe *thiz, const paramUpdateCallBack proc);
  1042. /// \~chinese
  1043. /// \brief 参数更新事件回调去注册
  1044. /// \param [in] thiz 本接口指针
  1045. /// \param [in] proc 参数更新事件去注册的回调函数
  1046. /// \return 去注册是否成功
  1047. /// \~english
  1048. /// \brief unregister call back function of parameter update event.
  1049. /// \param [in] thiz this pointer
  1050. /// \param [in] proc unregister call back function of parameter update event
  1051. /// \return the result of unregistration
  1052. int32_t (*unsubscribeParamUpdate)(struct GENICAM_EventSubscribe *thiz, const paramUpdateCallBack proc);
  1053. /// \~chinese
  1054. /// \brief 流通道事件回调注册,只支持一个回调函数有效
  1055. /// \param [in] thiz 本接口指针
  1056. /// \param [in] proc 流通道事件回调注册函数
  1057. /// \return 注册是否成功
  1058. /// \~english
  1059. /// \brief register call back function of stream channel event. only support one valid call back function
  1060. /// \param [in] thiz this pointer
  1061. /// \param [in] proc register call back function of stream channel event
  1062. /// \return the result of registration
  1063. int32_t (*subscribeStreamArg)(struct GENICAM_EventSubscribe *thiz, const streamCallBack proc);
  1064. /// \~chinese
  1065. /// \brief 流通道事件回调去注册
  1066. /// \param [in] thiz 本接口指针
  1067. /// \param [in] proc 流通道事件回调去注册函数
  1068. /// \return 去注册是否成功
  1069. /// \~english
  1070. /// \brief unregister call back function of stream channel event.
  1071. /// \param [in] thiz this pointer
  1072. /// \param [in] proc unregister call back function of stream channel event
  1073. /// \return the result of unregistration
  1074. int32_t (*unsubscribeStreamArg)(struct GENICAM_EventSubscribe *thiz, const streamCallBack proc);
  1075. /// \~chinese
  1076. /// \brief 设备连接状态事件回调注册,只支持一个回调函数有效
  1077. /// \param [in] thiz 本接口指针
  1078. /// \param [in] proc 设备连接状态事件回调注册函数
  1079. /// \param [in] pUser 用户自定义数据
  1080. /// \return 注册是否成功
  1081. /// \~english
  1082. /// \brief register call back function of camera connection status event. only support one valid call back function
  1083. /// \param [in] thiz this pointer
  1084. /// \param [in] proc register call back function of camera connection status event
  1085. /// \param [in] pUser user data
  1086. /// \return the result of registration
  1087. int32_t(*subscribeConnectArgsEx)(struct GENICAM_EventSubscribe *thiz, const connectCallBackEx proc, void* pUser);
  1088. /// \~chinese
  1089. /// \brief 设备连接状态事件回调去注册
  1090. /// \param [in] thiz 本接口指针
  1091. /// \param [in] proc 设备连接状态事件回调去注册函数
  1092. /// \param [in] pUser 用户自定义数据
  1093. /// \return 去注册是否成功
  1094. /// \~english
  1095. /// \brief unregister call back function of camera connection status event.
  1096. /// \param [in] thiz this pointer
  1097. /// \param [in] proc unregister call back function of camera connection status event
  1098. /// \param [in] pUser user data
  1099. /// \return the result of unregistration
  1100. int32_t(*unsubscribeConnectArgsEx)(struct GENICAM_EventSubscribe *thiz, const connectCallBackEx proc, void *pUser);
  1101. /// \~chinese
  1102. /// \brief 参数更新事件回调注册,只支持一个回调函数有效
  1103. /// \param [in] thiz 本接口指针
  1104. /// \param [in] proc 参数更新注册的事件回调函数
  1105. /// \param [in] pUser 用户自定义数据
  1106. /// \return 注册是否成功
  1107. /// \~english
  1108. /// \brief register call back function of parameter update event. only support one valid call back function
  1109. /// \param [in] thiz this pointer
  1110. /// \param [in] proc register call back function of parameter update event
  1111. /// \param [in] pUser user data
  1112. /// \return the result of registration
  1113. int32_t (*subscribeParamUpdateEx)(struct GENICAM_EventSubscribe *thiz, const paramUpdateCallBackEx proc, void* pUser);
  1114. /// \~chinese
  1115. /// \brief 参数更新事件回调去注册
  1116. /// \param [in] thiz 本接口指针
  1117. /// \param [in] proc 参数更新事件去注册的回调函数
  1118. /// \param [in] pUser 用户自定义数据
  1119. /// \return 去注册是否成功
  1120. /// \~english
  1121. /// \brief unregister call back function of parameter update event.
  1122. /// \param [in] thiz this pointer
  1123. /// \param [in] proc unregister call back function of parameter update event
  1124. /// \param [in] pUser user data
  1125. /// \return the result of unregistration
  1126. int32_t (*unsubscribeParamUpdateEx)(struct GENICAM_EventSubscribe *thiz, const paramUpdateCallBackEx proc, void* pUser);
  1127. /// \~chinese
  1128. /// \brief 流通道事件回调注册,只支持一个回调函数有效
  1129. /// \param [in] thiz 本接口指针
  1130. /// \param [in] proc 流通道事件回调注册函数
  1131. /// \param [in] pUser 用户自定义数据
  1132. /// \return 注册是否成功
  1133. /// \~english
  1134. /// \brief register call back function of stream channel event. only support one valid call back function
  1135. /// \param [in] thiz this pointer
  1136. /// \param [in] proc register call back function of stream channel event
  1137. /// \param [in] pUser user data
  1138. /// \return the result of registration
  1139. int32_t (*subscribeStreamArgEx)(struct GENICAM_EventSubscribe *thiz, const streamCallBackEx proc, void* pUser);
  1140. /// \~chinese
  1141. /// \brief 流通道事件回调去注册
  1142. /// \param [in] thiz 本接口指针
  1143. /// \param [in] proc 流通道事件回调去注册函数
  1144. /// \param [in] pUser 用户自定义数据
  1145. /// \return 去注册是否成功
  1146. /// \~english
  1147. /// \brief unregister call back function of stream channel event.
  1148. /// \param [in] thiz this pointer
  1149. /// \param [in] proc unregister call back function of stream channel event
  1150. /// \param [in] pUser user data
  1151. /// \return the result of unregistration
  1152. int32_t (*unsubscribeStreamArgEx)(struct GENICAM_EventSubscribe *thiz, const streamCallBackEx proc, void* pUser);
  1153. /// \~chinese
  1154. /// \brief 消息通道事件回调注册,只支持一个回调函数有效
  1155. /// \param [in] thiz 本接口指针
  1156. /// \param [in] proc 消息通道事件回调注册函数
  1157. /// \return 注册是否成功
  1158. /// \~english
  1159. /// \brief register call back function of message channel event. only support one valid call back function
  1160. /// \param [in] thiz this pointer
  1161. /// \param [in] proc register call back function of message channel event
  1162. /// \return the result of registration
  1163. int32_t(*subscribeMsgChannelEx)(struct GENICAM_EventSubscribe *thiz, const msgChannelCallBackEx proc, void* pUser);
  1164. /// \~chinese
  1165. /// \brief 消息通道事件回调去注册
  1166. /// \param [in] thiz 本接口指针
  1167. /// \param [in] proc 消息通道事件回调去注册函数
  1168. /// \return 去注册是否成功
  1169. /// \~english
  1170. /// \brief unregister call back function of message channel event.
  1171. /// \param [in] thiz this pointer
  1172. /// \param [in] proc unregister call back function of message channel event
  1173. /// \return the result of unregistration
  1174. int32_t(*unsubscribeMsgChannelEx)(struct GENICAM_EventSubscribe *thiz, const msgChannelCallBackEx proc, void* pUser);
  1175. uint32_t reserve[15]; ///< \~chinese 预留字段 ///< \~english reserved field
  1176. }GENICAM_EventSubscribe;
  1177. /// \~chinese
  1178. /// \brief 事件订阅对象参数
  1179. /// 32位系统下128字节
  1180. /// \~english
  1181. /// \brief event subscribe info object
  1182. /// 128 bytes in 32-bit system
  1183. typedef struct GENICAM_EventSubscribeInfo
  1184. {
  1185. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1186. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1187. } GENICAM_EventSubscribeInfo;
  1188. /// \~chinese
  1189. /// 创建事件订阅对象
  1190. /// \param [in] pEventSubscribeInfo 创建事件订阅对象的参数
  1191. /// \param [out] ppEventSubscribe 返回的事件订阅对象
  1192. /// \retval < 0 创建失败
  1193. /// \retval 0 创建成功
  1194. /// \~english
  1195. /// create event subscribe object
  1196. /// \param [in] pEventSubscribeInfo create event subscribe info object
  1197. /// \param [out] ppEventSubscribe return event subscribe object
  1198. /// \retval < 0 create failed
  1199. /// \retval 0 create successfully
  1200. GENICAM_API int32_t CALL_METHOD GENICAM_createEventSubscribe(const GENICAM_EventSubscribeInfo* pEventSubscribeInfo,
  1201. GENICAM_EventSubscribe** ppEventSubscribe);
  1202. /// @}
  1203. /// \~chinese
  1204. /// \brief 相机对象接口类
  1205. /// \defgroup GENICAM_GigECamera GigE相机对象操作接口
  1206. /// @{
  1207. /// \~english
  1208. /// \brief camera object interface class
  1209. /// \defgroup GENICAM_GigECamera GigeVision Camera Object Operation Interface
  1210. /// @{
  1211. /// \~chinese
  1212. /// \brief GiGE相机特殊接口
  1213. /// 32位系统下128字节
  1214. /// \~english
  1215. /// \brief GigE camera specific object
  1216. /// 128 bytes in 32-bit system
  1217. typedef struct GENICAM_GigECamera
  1218. {
  1219. /// \~chinese
  1220. /// 底层私有数据
  1221. /// \~english
  1222. /// Underlying private data
  1223. void *priv;
  1224. /// \~chinese
  1225. /// 增加接口引用
  1226. /// \param [in] thiz 本接口指针
  1227. /// \~english
  1228. /// add interface reference
  1229. /// \param [in] thiz this pointer
  1230. int32_t(*addRef)(struct GENICAM_GigECamera *thiz);
  1231. /// \~chinese
  1232. /// 释放接口
  1233. /// \param [in] thiz 本接口指针
  1234. /// \~english
  1235. /// release interface
  1236. /// \param [in] thiz this pointer
  1237. int32_t(*release)(struct GENICAM_GigECamera *thiz);
  1238. /// \~chinese
  1239. /// \brief 获取相机的ipAddress
  1240. /// \param [in] thiz 本接口指针
  1241. /// \return 返回ipAddress 相机的IP地址,失败返回NULL
  1242. /// \~english
  1243. /// \brief get camera's ipAddress
  1244. /// \param [in] thiz this pointer
  1245. /// \return return camera's ipAddress, return NULL if failed
  1246. const char* (*getIpAddress)(struct GENICAM_GigECamera *thiz);
  1247. /// \~chinese
  1248. /// \brief 返回相机的子网掩码
  1249. /// \param [in] thiz 本接口指针
  1250. /// \return 返回subnetMask 相机的子网掩码,失败返回NULL
  1251. /// \~english
  1252. /// \brief return camera's subnetMask
  1253. /// \param [in] thiz this pointer
  1254. /// \return camera's subnetMask, return NULL if failed
  1255. const char* (*getSubnetMask)(struct GENICAM_GigECamera *thiz);
  1256. /// \~chinese
  1257. /// \brief 返回相机的网关
  1258. /// \param [in] thiz 本接口指针
  1259. /// \return 返回 gateway 相机的网关,失败返回NULL
  1260. /// \~english
  1261. /// \brief return camera's gateway
  1262. /// \param [in] thiz this pointer
  1263. /// \return camera's gateway, return NULL if failed
  1264. const char* (*getGateway)(struct GENICAM_GigECamera *thiz);
  1265. /// \~chinese
  1266. /// \brief 获取相机的 macAddress
  1267. /// \param [in] thiz 本接口指针
  1268. /// \return 返回macAddress 相机的Mac地址,失败返回NULL
  1269. /// \~english
  1270. /// \brief get camera's macAddress
  1271. /// \param [in] thiz this pointer
  1272. /// \return camera's macAddress, return NULL if failed
  1273. const char* (*getMacAddress)(struct GENICAM_GigECamera *thiz);
  1274. /// \~chinese
  1275. /// \brief 修改设备IP
  1276. /// \brief 1、调用该函数时如果newSubnetMask和newGateway都设置了有效值,则以此有效值为准;
  1277. /// \brief 2、调用该函数时如果newSubnetMask和newGateway都设置了NULL,则内部实现时用它所连接网卡的子网掩码和网关代替
  1278. /// \brief 3、调用该函数时如果newSubnetMask和newGateway两者中其中一个为NULL,另一个非NULL,则返回失败
  1279. /// \brief 该接口只针对通过网卡接入的设备,对于其余设备,调用此接口无意义,直接返回失败
  1280. /// \param [in] thiz 本接口指针
  1281. /// \param [in] newIpAddress 新的IP地址信息
  1282. /// \param [in] newSubnetMask 新的掩码信息
  1283. /// \param [in] newGateway 新的网关信息
  1284. /// \retval < 0 修改IP失败
  1285. /// \retval 0 修改IP成功
  1286. /// \~english
  1287. /// \brief modify device IP
  1288. /// \brief 1、When callback this function, if the values of newSubnetMask and newGateway are both valid then we consider the value is correct
  1289. /// \brief 2、When callback this function, if the values of newSubnetMask and newGateway are both NULL, then these values will be replaced by the subnetmask and gateway of NIC which this camera connect to.
  1290. /// \brief 3、When callback this function, if there is one value of newSubnetMask or newGateway is NULL and the other one is not NULL, then return failed
  1291. /// \brief this interface only serve the devices which is connected to NIC. As for other devices, callback this function won't work and return failed
  1292. /// \param [in] thiz this pointer
  1293. /// \param [in] newIpAddress new ip address
  1294. /// \param [in] newSubnetMask new subnetMask
  1295. /// \param [in] newGateway new Gateway
  1296. /// \retval < 0 modify ip failed
  1297. /// \retval 0 modify ip success
  1298. int32_t (*forceIpAddress)(struct GENICAM_GigECamera *thiz,const char* newIpAddress, const char* newSubnetMask, const char* newGateway);
  1299. /// \~chinese
  1300. /// \brief 获取相机的当前访问权限
  1301. /// \return 如果获取成功,返回的枚举值代表相机的当前访问权限,如果失败,返回的枚举值为accessPermissionUnknown
  1302. /// \~english
  1303. /// \brief get current access permission of camera
  1304. /// \return success:return current access permission of camera, fail:return accessPermissionUnknown
  1305. GENICAM_ECameraAccessPermission (*getAccessPermission)(struct GENICAM_GigECamera *thiz);
  1306. /// \~chinese
  1307. /// \brief 获取相机的 Protocol Version
  1308. /// \param [in] thiz 本接口指针
  1309. /// \return 返回相机的Protocol Version,失败返回NULL
  1310. /// \~english
  1311. /// \brief get camera's Protocol Version
  1312. /// \param [in] thiz this pointer
  1313. /// \return camera's Protocol Version, return NULL if failed
  1314. const char* (*getProtocolVersion)(struct GENICAM_GigECamera *thiz);
  1315. /// \~chinese
  1316. /// \brief 获取相机的 IP Configuration
  1317. /// \param [in] thiz 本接口指针
  1318. /// \return 返回相机的IP Configuration,失败返回NULL
  1319. /// \~english
  1320. /// \brief get camera's IP Configuration
  1321. /// \param [in] thiz this pointer
  1322. /// \return camera's IP Configuration, return NULL if failed
  1323. const char* (*getIPConfiguration)(struct GENICAM_GigECamera *thiz);
  1324. uint32_t reserve[21]; ///< \~chinese 预留字段 ///< \~english reserved field
  1325. }GENICAM_GigECamera;
  1326. /// \~chinese
  1327. /// \brief 创建GigECamera对象参数
  1328. /// 32位系统下128字节
  1329. /// \~english
  1330. /// \brief create GigE camera object's info object
  1331. /// 128 bytes in 32-bit system
  1332. typedef struct GENICAM_GigECameraInfo
  1333. {
  1334. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1335. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1336. } GENICAM_GigECameraInfo;
  1337. /// \~chinese
  1338. /// 创建GiGE设备对象
  1339. /// \param [in] pGigECameraInfo 创建GiGE设备对象的参数
  1340. /// \param [out] ppGigECamera GigECamera 对象
  1341. /// \retval < 0 创建失败
  1342. /// \retval 0 创建成功
  1343. /// \~english
  1344. /// create GigE camera object
  1345. /// \param [in] pGigECameraInfo GigE camera info object
  1346. /// \param [out] ppGigECamera GigE camera object
  1347. /// \retval < 0 create failed
  1348. /// \retval 0 create successfully
  1349. GENICAM_API int32_t CALL_METHOD GENICAM_createGigECamera(GENICAM_GigECameraInfo* pGigECameraInfo
  1350. , GENICAM_GigECamera** ppGigECamera);
  1351. /// @}
  1352. /// \~chinese
  1353. /// \brief 相机接口类
  1354. /// \defgroup GigEInterface 连接GigE相机的接口
  1355. /// @{
  1356. /// \~english
  1357. /// \brief camera interface
  1358. /// \defgroup GigEInterface Interface Of GigEVision Camera Connection
  1359. /// @{
  1360. typedef struct GENICAM_GigEInterface
  1361. {
  1362. /// \~chinese
  1363. /// 底层私有数据
  1364. /// \~english
  1365. /// Underlying private data
  1366. void *priv;
  1367. /// \~chinese
  1368. /// 增加接口引用
  1369. /// \param [in] thiz 本接口指针
  1370. /// \~english
  1371. /// add interface reference
  1372. /// \param [in] thiz this pointer
  1373. int32_t(*addRef)(struct GENICAM_GigEInterface *thiz);
  1374. /// \~chinese
  1375. /// 释放接口
  1376. /// \param [in] thiz 本接口指针
  1377. /// \~english
  1378. /// release interface
  1379. /// \param [in] thiz this pointer
  1380. int32_t(*release)(struct GENICAM_GigEInterface *thiz);
  1381. /// \~chinese
  1382. /// \param [in] thiz 本接口指针
  1383. /// \return 返回网卡描述信息,失败返回NULL
  1384. /// \~english
  1385. /// \param [in] thiz this pointer
  1386. /// \return return network card description, return NULL if failed
  1387. const char * (*getDescription)(struct GENICAM_GigEInterface *thiz);
  1388. /// \~chinese
  1389. /// \param [in] thiz 本接口指针
  1390. /// \return 返回网卡的IP地址,失败返回NULL
  1391. /// \~english
  1392. /// \param [in] thiz this pointer
  1393. /// \return return NIC's IpAddress, return NULL if failed
  1394. const char * (*getIpAddress)(struct GENICAM_GigEInterface *thiz);
  1395. /// \~chinese
  1396. /// \param [in] thiz 本接口指针
  1397. /// \return 返回网卡的子网掩码,失败返回NULL
  1398. /// \~english
  1399. /// \param [in] thiz this pointer
  1400. /// \return return NIC's subnetMask, return NULL if failed
  1401. const char * (*getSubnetMask)(struct GENICAM_GigEInterface *thiz);
  1402. /// \~chinese
  1403. /// \brief 返回网卡的网关
  1404. /// \param [in] thiz 本接口指针
  1405. /// \return 返回网卡的网关,失败返回NULL
  1406. /// \~english
  1407. /// \brief return Gateway
  1408. /// \param [in] thiz this pointer
  1409. /// \return return NIC's Gateway, return NULL if failed
  1410. const char * (*getGateway)(struct GENICAM_GigEInterface *thiz);
  1411. /// \~chinese
  1412. /// \param [in] thiz 本接口指针
  1413. /// \return 返回网卡的Mac地址,失败返回NULL
  1414. /// \~english
  1415. /// \param [in] thiz this pointer
  1416. /// \return return NIC's macAddress, return NULL if failed
  1417. const char * (*getMacAddress)(struct GENICAM_GigEInterface *thiz);
  1418. uint32_t reserve[24]; ///< \~chinese 预留字段 ///< \~english reserved field
  1419. }GENICAM_GigEInterface;
  1420. /// \~chinese
  1421. /// \brief 创建GiGE设备接口对象参数
  1422. /// 32位系统下128字节
  1423. /// \~english
  1424. /// \brief create GigE camera interface object
  1425. /// 128 bytes in 32-bit system
  1426. typedef struct GENICAM_GigEInterfaceInfo
  1427. {
  1428. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1429. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1430. } GENICAM_GigEInterfaceInfo;
  1431. /// \~chinese
  1432. /// 创建GiGE设备接口对象
  1433. /// \param [in] pGigEInterfaceInfo 创建GiGE设备对象的参数
  1434. /// \param [out] ppGigEInterface GigE Camera 所连接的接口对象
  1435. /// \retval < 0 创建失败
  1436. /// \retval 0 创建成功
  1437. /// \~english
  1438. /// create GigE camera interface object
  1439. /// \param [in] pGigEInterfaceInfo parameter used to create GigE camera object
  1440. /// \param [out] ppGigEInterface interface ojbect which connect the GigE Camera
  1441. /// \retval < 0 create failed
  1442. /// \retval 0 create successfully
  1443. GENICAM_API int32_t CALL_METHOD GENICAM_createGigEInterface(GENICAM_GigEInterfaceInfo*pGigEInterfaceInfo
  1444. , GENICAM_GigEInterface** ppGigEInterface);
  1445. /// @}
  1446. /// \~chinese
  1447. /// \brief 相机对象接口类
  1448. /// \defgroup GENICAM_UsbCamera USB相机对象操作接口
  1449. /// @{
  1450. /// \~english
  1451. /// \brief camera object interface class
  1452. /// \defgroup GENICAM_UsbCamera USB Camera Object Operation Interface
  1453. /// @{
  1454. /// \~chinese
  1455. /// \brief USB相机特殊接口
  1456. /// 32位系统下128字节
  1457. /// \~english
  1458. /// \brief USB camera specific object
  1459. /// 128 bytes in 32-bit system
  1460. typedef struct GENICAM_UsbCamera
  1461. {
  1462. /// \~chinese
  1463. /// 底层私有数据
  1464. /// \~english
  1465. /// Underlying private data
  1466. void *priv;
  1467. /// \~chinese
  1468. /// 增加接口引用
  1469. /// \param [in] thiz 本接口指针
  1470. /// \~english
  1471. /// add interface reference
  1472. /// \param [in] thiz this pointer
  1473. int32_t(*addRef)(struct GENICAM_UsbCamera *thiz);
  1474. /// \~chinese
  1475. /// 释放接口
  1476. /// \param [in] thiz 本接口指针
  1477. /// \~english
  1478. /// release interface
  1479. /// \param [in] thiz this pointer
  1480. int32_t(*release)(struct GENICAM_UsbCamera *thiz);
  1481. /// \~chinese
  1482. /// \brief 获取相机的 Configuration Valid
  1483. /// \param [in] thiz 本接口指针
  1484. /// \return 返回相机的 Configuration Valid,失败返回NULL
  1485. /// \~english
  1486. /// \brief get camera's Configuration Valid
  1487. /// \param [in] thiz this pointer
  1488. /// \return camera's Configuration Valid, return NULL if failed
  1489. const char* (*getConfigurationValid)(struct GENICAM_UsbCamera *thiz);
  1490. /// \~chinese
  1491. /// \brief 获取相机的 GenCP Version
  1492. /// \param [in] thiz 本接口指针
  1493. /// \return 返回相机的 GenCP Version,失败返回NULL
  1494. /// \~english
  1495. /// \brief get camera's GenCP Version
  1496. /// \param [in] thiz this pointer
  1497. /// \return camera's GenCP Version, return NULL if failed
  1498. const char* (*getGenCPVersion)(struct GENICAM_UsbCamera *thiz);
  1499. /// \~chinese
  1500. /// \brief 获取相机的 U3V Version
  1501. /// \param [in] thiz 本接口指针
  1502. /// \return 返回相机的 U3V Version,失败返回NULL
  1503. /// \~english
  1504. /// \brief get camera's U3V Version
  1505. /// \param [in] thiz this pointer
  1506. /// \return camera's U3V Version, return NULL if failed
  1507. const char* (*getU3VVersion)(struct GENICAM_UsbCamera *thiz);
  1508. /// \~chinese
  1509. /// \brief 获取相机的 Device GUID
  1510. /// \param [in] thiz 本接口指针
  1511. /// \return 返回相机的 Device GUID,失败返回NULL
  1512. /// \~english
  1513. /// \brief get camera's Device GUID
  1514. /// \param [in] thiz this pointer
  1515. /// \return camera's Device GUID, return NULL if failed
  1516. const char* (*getDeviceGUID)(struct GENICAM_UsbCamera *thiz);
  1517. /// \~chinese
  1518. /// \brief 获取相机的 Family Name
  1519. /// \param [in] thiz 本接口指针
  1520. /// \return 返回相机的 Family Name,失败返回NULL
  1521. /// \~english
  1522. /// \brief get camera's Family Name
  1523. /// \param [in] thiz this pointer
  1524. /// \return camera's Family Name, return NULL if failed
  1525. const char* (*getFamilyName)(struct GENICAM_UsbCamera *thiz);
  1526. /// \~chinese
  1527. /// \brief 获取相机的序列号
  1528. /// \param [in] thiz 本接口指针
  1529. /// \return 返回相机的序列号,失败返回NULL
  1530. /// \~english
  1531. /// \brief get camera's serial number
  1532. /// \param [in] thiz this pointer
  1533. /// \return camera's serial number, return NULL if failed
  1534. const char* (*getU3VSerialNumber)(struct GENICAM_UsbCamera *thiz);
  1535. /// \~chinese
  1536. /// \brief 相机是否支持 Low Speed
  1537. /// \param [in] thiz 本接口指针
  1538. /// \return 0 支持, -1 不支持
  1539. /// \~english
  1540. /// \brief if Low Speed is supported
  1541. /// \param [in] thiz this pointer
  1542. /// \return 0 if supported, return -1 if not supported
  1543. int32_t (*isLowSpeedSupported)(struct GENICAM_UsbCamera *thiz);
  1544. /// \~chinese
  1545. /// \brief 相机是否支持 Full Speed
  1546. /// \param [in] thiz 本接口指针
  1547. /// \return 0 支持, -1 不支持
  1548. /// \~english
  1549. /// \brief if Full Speed is supported
  1550. /// \param [in] thiz this pointer
  1551. /// \return 0 if supported, return -1 if not supported
  1552. int32_t (*isFullSpeedSupported)(struct GENICAM_UsbCamera *thiz);
  1553. /// \~chinese
  1554. /// \brief 相机是否支持 High Speed
  1555. /// \param [in] thiz 本接口指针
  1556. /// \return 0 支持, -1 不支持
  1557. /// \~english
  1558. /// \brief if High Speed is supported
  1559. /// \param [in] thiz this pointer
  1560. /// \return 0 if supported, return -1 if not supported
  1561. int32_t (*isHighSpeedSupported)(struct GENICAM_UsbCamera *thiz);
  1562. /// \~chinese
  1563. /// \brief 相机是否支持 Super Speed
  1564. /// \param [in] thiz 本接口指针
  1565. /// \return 0 支持, -1 不支持
  1566. /// \~english
  1567. /// \brief if Super Speed is supported
  1568. /// \param [in] thiz this pointer
  1569. /// \return 0 if supported, return -1 if not supported
  1570. int32_t (*isSuperSpeedSupported)(struct GENICAM_UsbCamera *thiz);
  1571. /// \~chinese
  1572. /// \brief 获取相机的 Speed
  1573. /// \param [in] thiz 本接口指针
  1574. /// \return 返回相机的 Speed,失败返回NULL
  1575. /// \~english
  1576. /// \brief get camera's Speed
  1577. /// \param [in] thiz this pointer
  1578. /// \return camera's Speed, return NULL if failed
  1579. const char* (*getSpeed)(struct GENICAM_UsbCamera *thiz);
  1580. /// \~chinese
  1581. /// \brief 获取相机的 Max Power
  1582. /// \param [in] thiz 本接口指针
  1583. /// \return 返回相机的 Max Power,失败返回NULL
  1584. /// \~english
  1585. /// \brief get camera's Max Power
  1586. /// \param [in] thiz this pointer
  1587. /// \return camera's Max Power, return NULL if failed
  1588. const char* (*getMaxPower)(struct GENICAM_UsbCamera *thiz);
  1589. /// \~chinese
  1590. /// \brief 是否安装了USB驱动
  1591. /// \param [in] thiz 本接口指针
  1592. /// \return 0 安装了USB驱动,-1 没有安装USB驱动
  1593. /// \~english
  1594. /// \brief if USB driver is installed
  1595. /// \param [in] thiz this pointer
  1596. /// \return 0 if installed, return -1 if not installed
  1597. int32_t (*isDriverInstalled)(struct GENICAM_UsbCamera *thiz);
  1598. uint32_t reserve[16]; ///< \~chinese 预留字段 ///< \~english reserved field
  1599. }GENICAM_UsbCamera;
  1600. /// \~chinese
  1601. /// \brief 创建UsbCamera对象参数
  1602. /// 32位系统下128字节
  1603. /// \~english
  1604. /// \brief create Usb camera object's info object
  1605. /// 128 bytes in 32-bit system
  1606. typedef struct GENICAM_UsbCameraInfo
  1607. {
  1608. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1609. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1610. } GENICAM_UsbCameraInfo;
  1611. /// \~chinese
  1612. /// 创建USB设备对象
  1613. /// \param [in] pUsbCameraInfo 创建USB设备对象的参数
  1614. /// \param [out] ppUsbCamera UsbCamera 对象
  1615. /// \retval < 0 创建失败
  1616. /// \retval 0 创建成功
  1617. /// \~english
  1618. /// create USB camera object
  1619. /// \param [in] pUsbCameraInfo USB camera info object
  1620. /// \param [out] ppUsbCamera USB camera object
  1621. /// \retval < 0 create failed
  1622. /// \retval 0 create successfully
  1623. GENICAM_API int32_t CALL_METHOD GENICAM_createUsbCamera(GENICAM_UsbCameraInfo* pUsbCameraInfo
  1624. , GENICAM_UsbCamera** ppUsbCamera);
  1625. /// @}
  1626. /// \~chinese
  1627. /// \brief 相机接口类
  1628. /// \defgroup UsbInterface 连接USB相机的接口
  1629. /// \~english
  1630. /// \brief camera interface
  1631. /// \defgroup UsbInterface Interface Of USB Camera Connection
  1632. /// @{
  1633. typedef struct GENICAM_UsbInterface
  1634. {
  1635. /// \~chinese
  1636. /// 底层私有数据
  1637. /// \~english
  1638. /// Underlying private data
  1639. void *priv;
  1640. /// \~chinese
  1641. /// 增加接口引用
  1642. /// \param [in] thiz 本接口指针
  1643. /// \~english
  1644. /// add interface reference
  1645. /// \param [in] thiz this pointer
  1646. int32_t(*addRef)(struct GENICAM_UsbInterface *thiz);
  1647. /// \~chinese
  1648. /// 释放接口
  1649. /// \param [in] thiz 本接口指针
  1650. /// \~english
  1651. /// release interface
  1652. /// \param [in] thiz this pointer
  1653. int32_t(*release)(struct GENICAM_UsbInterface *thiz);
  1654. /// \~chinese
  1655. /// \param [in] thiz 本接口指针
  1656. /// \return 返回描述信息,失败返回NULL
  1657. /// \~english
  1658. /// \param [in] thiz this pointer
  1659. /// \return return description, return NULL if failed
  1660. const char * (*getDescription)(struct GENICAM_UsbInterface *thiz);
  1661. /// \~chinese
  1662. /// \param [in] thiz 本接口指针
  1663. /// \return 返回 Vendor ID,失败返回NULL
  1664. /// \~english
  1665. /// \param [in] thiz this pointer
  1666. /// \return return Vendor ID, return NULL if failed
  1667. const char * (*getVendorID)(struct GENICAM_UsbInterface *thiz);
  1668. /// \~chinese
  1669. /// \param [in] thiz 本接口指针
  1670. /// \return 返回 Device ID,失败返回NULL
  1671. /// \~english
  1672. /// \param [in] thiz this pointer
  1673. /// \return return Device ID, return NULL if failed
  1674. const char * (*getDeviceID)(struct GENICAM_UsbInterface *thiz);
  1675. /// \~chinese
  1676. /// \param [in] thiz 本接口指针
  1677. /// \return 返回 Subsystem ID,失败返回NULL
  1678. /// \~english
  1679. /// \param [in] thiz this pointer
  1680. /// \return return Subsystem ID, return NULL if failed
  1681. const char * (*getSubsystemID)(struct GENICAM_UsbInterface *thiz);
  1682. /// \~chinese
  1683. /// \param [in] thiz 本接口指针
  1684. /// \return 返回 Revision,失败返回NULL
  1685. /// \~english
  1686. /// \param [in] thiz this pointer
  1687. /// \return return Revision, return NULL if failed
  1688. const char * (*getRevision)(struct GENICAM_UsbInterface *thiz);
  1689. /// \~chinese
  1690. /// \param [in] thiz 本接口指针
  1691. /// \return 返回接口的speed,失败返回NULL
  1692. /// \~english
  1693. /// \param [in] thiz this pointer
  1694. /// \return return speed of interface, return NULL if failed
  1695. const char * (*getSpeed)(struct GENICAM_UsbInterface *thiz);
  1696. uint32_t reserve[23]; ///< \~chinese 预留字段 ///< \~english reserved field
  1697. }GENICAM_UsbInterface;
  1698. /// \~chinese
  1699. /// \brief 创建USB设备接口对象参数
  1700. /// 32位系统下128字节
  1701. /// \~english
  1702. /// \brief create USB camera interface object
  1703. /// 128 bytes in 32-bit system
  1704. typedef struct GENICAM_UsbInterfaceInfo
  1705. {
  1706. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1707. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1708. } GENICAM_UsbInterfaceInfo;
  1709. /// \~chinese
  1710. /// 创建USB设备接口对象
  1711. /// \param [in] pUsbInterfaceInfo 创建USB设备对象的参数
  1712. /// \param [out] ppUsbInterface Usb Camera 所连接的接口对象
  1713. /// \retval < 0 创建失败
  1714. /// \retval 0 创建成功
  1715. /// \~english
  1716. /// create USB camera interface object
  1717. /// \param [in] pUsbInterfaceInfo parameter used to create Usb camera object
  1718. /// \param [out] ppUsbInterface interface ojbect which connect the Usb Camera
  1719. /// \retval < 0 create failed
  1720. /// \retval 0 create successfully
  1721. GENICAM_API int32_t CALL_METHOD GENICAM_createUsbInterface(GENICAM_UsbInterfaceInfo*pUsbInterfaceInfo
  1722. , GENICAM_UsbInterface** ppUsbInterface);
  1723. /// @}
  1724. // 配置参数相关的接口
  1725. /// \~chinese
  1726. /// \brief 常用参数对象接口
  1727. /// \defgroup config 属性配置相关操作接口
  1728. /// @{
  1729. /// \~english
  1730. /// \brief common parameter object interface
  1731. /// \defgroup config Property Configure Operation Interface
  1732. /// @{
  1733. /// \~chinese
  1734. /// \brief Class GENICAM_IntNode 整型属性操作类
  1735. /// 32位系统下128字节
  1736. /// \~english
  1737. /// \brief Integer property operation class
  1738. /// 128 bytes in 32-bit system
  1739. typedef struct GENICAM_IntNode
  1740. {
  1741. /// \~chinese
  1742. /// 底层私有数据
  1743. /// \~english
  1744. /// Underlying private data
  1745. void *priv;
  1746. /// \~chinese
  1747. /// 增加接口引用
  1748. /// \param [in] thiz 本接口指针
  1749. /// \~english
  1750. /// add interface reference
  1751. /// \param [in] thiz this pointer
  1752. int32_t (*addRef)(struct GENICAM_IntNode *thiz);
  1753. /// \~chinese
  1754. /// 释放接口
  1755. /// \param [in] thiz 本接口指针
  1756. /// \~english
  1757. /// release interface
  1758. /// \param [in] thiz this pointer
  1759. int32_t (*release)(struct GENICAM_IntNode *thiz);
  1760. /// \~chinese
  1761. /// \brief 获取属性值
  1762. /// \param [in] thiz 本接口指针
  1763. /// \param [out] pVal 获取到的属性值
  1764. /// \return 成功返回0,失败返回-1
  1765. /// \~english
  1766. /// \brief get property's value
  1767. /// \param [in] thiz this pointer
  1768. /// \param [out] pVal the property value
  1769. /// \return success:0, fail:-1
  1770. int32_t (*getValue)(struct GENICAM_IntNode *thiz, int64_t* pVal);
  1771. /// \~chinese
  1772. /// \brief 设置属性值
  1773. /// \param [in] thiz 本接口指针
  1774. /// \param [in] val 待设置的属性值
  1775. /// \return 成功返回0,失败返回-1
  1776. /// \~english
  1777. /// \brief set the property's value
  1778. /// \param [in] thiz this pointer
  1779. /// \param [in] val the value to be set for this property
  1780. /// \return success:0, fail:-1
  1781. int32_t (*setValue)(struct GENICAM_IntNode *thiz, int64_t val);
  1782. /// \~chinese
  1783. /// \brief 获取属性可设最小值
  1784. /// \param [in] thiz 本接口指针
  1785. /// \param [out] pMinVal 获取到的属性最小值
  1786. /// \return 成功返回0,失败返回-1
  1787. /// \~english
  1788. /// \brief get the property's minimum value that can be set
  1789. /// \param [in] thiz this pointer
  1790. /// \param [out] pMinVal the property's minimum value
  1791. /// \return success:0, fail:-1
  1792. int32_t (*getMinVal)(struct GENICAM_IntNode *thiz, int64_t* pMinVal);
  1793. /// \~chinese
  1794. /// \brief 获取属性可设最大值
  1795. /// \param [in] thiz 本接口指针
  1796. /// \param [out] pMaxVal 获取到的属性最大值
  1797. /// \return 成功返回0,失败返回-1
  1798. /// \~english
  1799. /// \brief get the property's maximum value that can be set
  1800. /// \param [in] thiz this pointer
  1801. /// \param [out] pMaxVal the property's maximum value
  1802. /// \return success:0, fail:-1
  1803. int32_t (*getMaxVal)(struct GENICAM_IntNode *thiz, int64_t* pMaxVal);
  1804. /// \~chinese
  1805. /// \brief 判断属性是否有效
  1806. /// \param [in] thiz 本接口指针
  1807. /// \return 0表示有效,-1表示无效
  1808. /// \~english
  1809. /// \brief check the property is available or not
  1810. /// \param [in] thiz this pointer
  1811. /// \return valid:0, invalid:-1
  1812. int32_t (*isValid)(struct GENICAM_IntNode *thiz);
  1813. /// \~chinese
  1814. /// \brief 判断属性是否可用
  1815. /// \param [in] thiz 本接口指针
  1816. /// \return 0表示可用,-1表示不可用
  1817. /// \~english
  1818. /// \brief check the property is available or not
  1819. /// \param [in] thiz this pointer
  1820. /// \return available:0, not available:-1
  1821. int32_t(*isAvailable)(struct GENICAM_IntNode *thiz);
  1822. /// \~chinese
  1823. /// \brief 判断属性是否可读
  1824. /// \param [in] thiz 本接口指针
  1825. /// \return 0表示可读,-1表示不可读
  1826. /// \~english
  1827. /// \brief check the property is readable or not
  1828. /// \param [in] thiz this pointer
  1829. /// \return readable:0, not readable:-1
  1830. int32_t(*isReadable)(struct GENICAM_IntNode *thiz);
  1831. /// \~chinese
  1832. /// \brief 判断属性是否可写
  1833. /// \param [in] thiz 本接口指针
  1834. /// \return 0表示可写,-1表示不可写
  1835. /// \~english
  1836. /// \brief check the property is writeable or not
  1837. /// \param [in] thiz this pointer
  1838. /// \return writeable:0, not writeable:-1
  1839. int32_t(*isWriteable)(struct GENICAM_IntNode *thiz);
  1840. /// \~chinese
  1841. /// \brief 获取属性步长
  1842. /// \param [in] thiz 本接口指针
  1843. /// \param [out] pVal 获取到的属性步长
  1844. /// \return 成功返回0,失败返回-1
  1845. /// \~english
  1846. /// \brief get property's increment
  1847. /// \param [in] thiz this pointer
  1848. /// \param [out] pVal the property increment
  1849. /// \return success:0, fail:-1
  1850. int32_t(*getIncrement)(struct GENICAM_IntNode *thiz, int64_t* pVal);
  1851. uint32_t reserve[20]; ///< \~chinese 预留字段 ///< \~english reserved field
  1852. }GENICAM_IntNode;
  1853. /// \~chinese
  1854. /// \brief 创建整数节点类型信息
  1855. /// 32位系统下128 + 1024 字节
  1856. /// \~english
  1857. /// \brief create int node type's info
  1858. /// 128 + 1024 bytes in 32-bit system
  1859. typedef struct GENICAM_IntNodeInfo
  1860. {
  1861. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1862. char attrName[MAX_ATTR_NAME_LEN]; ///< \~chinese 属性名称 ///< \~english attribute name
  1863. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1864. } GENICAM_IntNodeInfo;
  1865. /// \~chinese
  1866. /// 创建整数节点类型对象
  1867. /// \param [in] pIntNodeInfo 创建整数节点类型信息
  1868. /// \param [out] ppIntNode 整数类型对象
  1869. /// \retval < 0 创建失败
  1870. /// \retval 0 创建成功
  1871. /// \~english
  1872. /// create IntNode property object class
  1873. /// \param [in] pIntNodeInfo create IntNode info
  1874. /// \param [out] ppIntNode IntNode type object
  1875. /// \retval < 0 create failed
  1876. /// \retval 0 create successfully
  1877. GENICAM_API int32_t CALL_METHOD GENICAM_createIntNode(GENICAM_IntNodeInfo* pIntNodeInfo
  1878. , GENICAM_IntNode** ppIntNode);
  1879. /// \~chinese
  1880. /// \brief Class GENICAM_DoubleNode 浮点数属性操作类
  1881. /// 32位系统下128字节
  1882. /// \~english
  1883. /// \brief Float property operation class
  1884. /// 128 bytes in 32-bit system
  1885. typedef struct GENICAM_DoubleNode
  1886. {
  1887. /// \~chinese
  1888. /// 底层私有数据
  1889. /// \~english
  1890. /// Underlying private data
  1891. void *priv;
  1892. /// \~chinese
  1893. /// 增加接口引用
  1894. /// \param [in] thiz 本接口指针
  1895. /// \~english
  1896. /// add interface reference
  1897. /// \param [in] thiz this pointer
  1898. int32_t (*addRef)(struct GENICAM_DoubleNode *thiz);
  1899. /// \~chinese
  1900. /// 释放接口
  1901. /// \param [in] thiz 本接口指针
  1902. /// \~english
  1903. /// release interface
  1904. /// \param [in] thiz this pointer
  1905. int32_t (*release)(struct GENICAM_DoubleNode *thiz);
  1906. /// \~chinese
  1907. /// \brief 获取属性值
  1908. /// \param [in] thiz 本接口指针
  1909. /// \param [out] pVal 获取到的属性值
  1910. /// \return 成功返回0,失败返回-1
  1911. /// \~english
  1912. /// \brief get property's value
  1913. /// \param [in] thiz this pointer
  1914. /// \param [out] pVal the property's value
  1915. /// \return success:0, fail:-1
  1916. int32_t (*getValue)(struct GENICAM_DoubleNode *thiz, double* pVal);
  1917. /// \~chinese
  1918. /// \brief 设置属性值
  1919. /// \param [in] thiz 本接口指针
  1920. /// \param [in] val 待设置的属性值
  1921. /// \return 成功返回0,失败返回-1
  1922. /// \~english
  1923. /// \brief set property's value
  1924. /// \param [in] thiz this pointer
  1925. /// \param [in] val the value to be set for this property
  1926. /// \return success:0, fail:-1
  1927. int32_t (*setValue)(struct GENICAM_DoubleNode *thiz, double val);
  1928. /// \~chinese
  1929. /// \brief 获取属性可设最小值
  1930. /// \param [in] thiz 本接口指针
  1931. /// \param [out] pMinVal 获取到的属性最小值
  1932. /// \return 成功返回0,失败返回-1
  1933. /// \~english
  1934. /// \brief get the property's minimum value that can be set
  1935. /// \param [in] thiz this pointer
  1936. /// \param [out] pMinVal the property's minimum value
  1937. /// \return success:0, fail:-1
  1938. int32_t (*getMinVal)(struct GENICAM_DoubleNode *thiz, double* pMinVal);
  1939. /// \~chinese
  1940. /// \brief 获取属性可设最大值
  1941. /// \param [in] thiz 本接口指针
  1942. /// \param [out] pMaxVal 获取到的属性最大值
  1943. /// \return 成功返回0,失败返回-1
  1944. /// \~english
  1945. /// \brief get the property's maximum value that can be set
  1946. /// \param [in] thiz this pointer
  1947. /// \param [out] pMaxVal the property's maximum value
  1948. /// \return success:0, fail:-1
  1949. int32_t (*getMaxVal)(struct GENICAM_DoubleNode *thiz, double* pMaxVal);
  1950. /// \~chinese
  1951. /// \brief 判断属性是否有效
  1952. /// \param [in] thiz 本接口指针
  1953. /// \return 0表示有效,-1表示无效
  1954. /// \~english
  1955. /// \brief check the property is valid or not
  1956. /// \param [in] thiz this pointer
  1957. /// \return valid:0, invalid:-1
  1958. int32_t (*isValid)(struct GENICAM_DoubleNode *thiz);
  1959. /// \~chinese
  1960. /// \brief 判断属性是否可用
  1961. /// \param [in] thiz 本接口指针
  1962. /// \return 0表示可用,-1表示不可用
  1963. /// \~english
  1964. /// \brief check the property is available or not
  1965. /// \param [in] thiz this pointer
  1966. /// \return available:0, not available:-1
  1967. int32_t(*isAvailable)(struct GENICAM_DoubleNode *thiz);
  1968. /// \~chinese
  1969. /// \brief 判断属性是否可读
  1970. /// \param [in] thiz 本接口指针
  1971. /// \return 0表示可读,-1表示不可读
  1972. /// \~english
  1973. /// \brief check the property is readable or not
  1974. /// \param [in] thiz this pointer
  1975. /// \return readable:0, not readable:-1
  1976. int32_t(*isReadable)(struct GENICAM_DoubleNode *thiz);
  1977. /// \~chinese
  1978. /// \brief 判断属性是否可写
  1979. /// \param [in] thiz 本接口指针
  1980. /// \return 0表示可写,-1表示不可写
  1981. /// \~english
  1982. /// \brief check the property is writeable or not
  1983. /// \param [in] thiz this pointer
  1984. /// \return writeable:0, not writeable:-1
  1985. int32_t(*isWriteable)(struct GENICAM_DoubleNode *thiz);
  1986. uint32_t reserve[21]; ///< \~chinese 预留字段 ///< \~english reserved field
  1987. }GENICAM_DoubleNode;
  1988. /// \~chinese
  1989. /// \brief 创建浮点数节点类型信息
  1990. /// 32位系统下128 + 1024 字节
  1991. /// \~english
  1992. /// \brief create double node info
  1993. /// 128 + 1024 bytes in 32-bit system
  1994. typedef struct GENICAM_DoubleNodeInfo
  1995. {
  1996. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  1997. char attrName[MAX_ATTR_NAME_LEN]; ///< \~chinese 属性名称 ///< \~english property's name
  1998. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  1999. } GENICAM_DoubleNodeInfo;
  2000. /// \~chinese
  2001. /// 创建浮点数节点类型对象
  2002. /// \param [in] pDoubleNodeInfo 创建浮点数节点类型信息
  2003. /// \param [out] ppDoubleNode 浮点数类型对象
  2004. /// \retval < 0 创建失败
  2005. /// \retval 0 创建成功
  2006. /// \~english
  2007. /// create double node object
  2008. /// \param [in] pDoubleNodeInfo create double node info
  2009. /// \param [out] ppDoubleNode double node object
  2010. /// \retval < 0 create failed
  2011. /// \retval 0 create successfully
  2012. GENICAM_API int32_t CALL_METHOD GENICAM_createDoubleNode(GENICAM_DoubleNodeInfo* pDoubleNodeInfo
  2013. , GENICAM_DoubleNode** ppDoubleNode);
  2014. /// \~chinese
  2015. /// \brief Class GENICAM_EnumNode 枚举型属性操作类
  2016. /// 32位系统下128字节
  2017. /// \~english
  2018. /// \brief EnumNode property operation class
  2019. /// 128 bytes in 32-bit system
  2020. typedef struct GENICAM_EnumNode
  2021. {
  2022. /// \~chinese
  2023. /// 底层私有数据
  2024. /// \~english
  2025. /// Underlying private data
  2026. void *priv;
  2027. /// \~chinese
  2028. /// 增加接口引用
  2029. /// \param [in] thiz 本接口指针
  2030. /// \~english
  2031. /// add interface reference
  2032. /// \param [in] thiz this pointer
  2033. int32_t (*addRef)(struct GENICAM_EnumNode *thiz);
  2034. /// \~chinese
  2035. /// 释放接口
  2036. /// \param [in] thiz 本接口指针
  2037. /// \~english
  2038. /// release interface
  2039. /// \param [in] thiz this pointer
  2040. int32_t (*release)(struct GENICAM_EnumNode *thiz);
  2041. /// \~chinese
  2042. /// \brief 获取枚举属性symbol值
  2043. /// \param [in] thiz 本接口指针
  2044. /// \param [in/out] pVal 获取到的属性值,约定字符串长度最大为256,该内存由外部分配
  2045. /// \param [in/out] pMaxCnt 输入的字符串长度,出参时为实际的字符串长度
  2046. /// \return 成功返回0,失败返回-1
  2047. /// \~english
  2048. /// \brief get enum property symbol's value
  2049. /// \param [in] thiz this pointer
  2050. /// \param [in/out] pVal the length of property's value cannot exceed 256, this memory is also allocated externally
  2051. /// \param [in/out] pMaxCnt the length of input chars; actual length of chars when output
  2052. /// \return success:0, fail:-1
  2053. int32_t (*getValueSymbol)(struct GENICAM_EnumNode *thiz, char* pVal, uint32_t *pMaxCnt);
  2054. /// \~chinese
  2055. /// \brief 设置枚举属性symbol值
  2056. /// \param [in] thiz 本接口指针
  2057. /// \param [in] strSymbolName 待设置的属性值
  2058. /// \return 成功返回0,失败返回-1
  2059. /// \~english
  2060. /// \brief set enum property symbol's value
  2061. /// \param [in] thiz this pointer
  2062. /// \param [in] strSymbolName the value waiting to be set for this property
  2063. /// \return success:0, fail:-1
  2064. int32_t (*setValueBySymbol)(struct GENICAM_EnumNode *thiz,const char* strSymbolName);
  2065. /// \~chinese
  2066. /// \brief 获取枚举属性可设置的symbol值列表
  2067. /// \param [in] thiz 本接口指针
  2068. /// \param [out] symbolList 获取到的可设置的symbol值列表,字符长度最长为256.例如:char symbolList[12][256]
  2069. /// \param [in/out] pSymbolCnt in:申请的缓冲数量,当作为输入参数时,与symbolList的一维个数一致,最多为1000; out:获取到的可设置的symbol个数.
  2070. /// \return 返回属性当前可设置symbol值列表
  2071. /// \~english
  2072. /// \brief Get the list of Enum property symbol value which can be set
  2073. /// \param [in] thiz this pointer
  2074. /// \param [out] symbolList get the configurable symbol's value list, maximum length of chars is 256.For example:char symbolList[12][256]
  2075. /// \param [in/out] pSymbolCnt in:buffer count is equal to the number of one dimension in symbolList; out:get the number of configurable symbol's value list, maximum number is 1000
  2076. /// \return Return the list of Enum property symbol value which can be set now
  2077. int32_t(*getEnumSymbolList)(struct GENICAM_EnumNode *thiz, char symbolList[][256], uint32_t *pSymbolCnt);
  2078. /// \~chinese
  2079. /// \brief 判断属性是否有效
  2080. /// \param [in] thiz 本接口指针
  2081. /// \return 0表示有效,-1表示无效
  2082. /// \~english
  2083. /// \brief check the property is valid or not
  2084. /// \param [in] thiz this pointer
  2085. /// \return valid:0, invalid:-1
  2086. int32_t (*isValid)(struct GENICAM_EnumNode *thiz);
  2087. /// \~chinese
  2088. /// \brief 判断属性是否可用
  2089. /// \param [in] thiz 本接口指针
  2090. /// \return 0表示可用,-1表示不可用
  2091. /// \~english
  2092. /// \brief check the property is available or not
  2093. /// \param [in] thiz this pointer
  2094. /// \return available:0, not available:-1
  2095. int32_t(*isAvailable)(struct GENICAM_EnumNode *thiz);
  2096. /// \~chinese
  2097. /// \brief 判断属性是否可读
  2098. /// \param [in] thiz 本接口指针
  2099. /// \return 0表示可读,-1表示不可读
  2100. /// \~english
  2101. /// \brief check the property is readable or not
  2102. /// \param [in] thiz this pointer
  2103. /// \return readable:0, not readable:-1
  2104. int32_t(*isReadable)(struct GENICAM_EnumNode *thiz);
  2105. /// \~chinese
  2106. /// \brief 判断属性是否可写
  2107. /// \param [in] thiz 本接口指针
  2108. /// \return 0表示可写,-1表示不可写
  2109. /// \~english
  2110. /// \brief check the property is writeable or not
  2111. /// \param [in] thiz this pointer
  2112. /// \return writeable:0, not writeable:-1
  2113. int32_t(*isWriteable)(struct GENICAM_EnumNode *thiz);
  2114. uint32_t reserve[22]; ///< \~chinese 预留字段 ///< \~english reserved field
  2115. }GENICAM_EnumNode;
  2116. /// \~chinese
  2117. /// \brief 创建枚举节点类型信息
  2118. /// 32位系统下128 + 1024 字节
  2119. /// \~english
  2120. /// \brief create enum node info
  2121. /// 128 + 1024 bytes in 32-bit system
  2122. typedef struct GENICAM_EnumNodeInfo
  2123. {
  2124. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2125. char attrName[MAX_ATTR_NAME_LEN]; ///< \~chinese 属性名称 ///< \~english attribute name
  2126. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2127. } GENICAM_EnumNodeInfo;
  2128. /// \~chinese
  2129. /// 创建枚举节点类型对象
  2130. /// \param [in] pEnumNodeInfo 创建枚举节点类型信息
  2131. /// \param [out] ppEnumNode 枚举类型对象
  2132. /// \retval < 0 创建失败
  2133. /// \retval 0 创建成功
  2134. /// \~english
  2135. /// create enum node type object
  2136. /// \param [in] pEnumNodeInfo create enum node info
  2137. /// \param [out] ppEnumNode enum node object
  2138. /// \retval < 0 create failed
  2139. /// \retval 0 create successfully
  2140. GENICAM_API int32_t CALL_METHOD GENICAM_createEnumNode(GENICAM_EnumNodeInfo* pEnumNodeInfo
  2141. , GENICAM_EnumNode** ppEnumNode);
  2142. /// \~chinese
  2143. /// \brief Class GENICAM_BoolNode 布尔型属性操作类
  2144. /// 32位系统下128字节
  2145. /// \~english
  2146. /// \brief Bool property operation class
  2147. /// 128 bytes in 32-bit system
  2148. typedef struct GENICAM_BoolNode
  2149. {
  2150. /// \~chinese
  2151. /// 底层私有数据
  2152. /// \~english
  2153. /// Underlying private data
  2154. void *priv;
  2155. /// \~chinese
  2156. /// 增加接口引用
  2157. /// \param [in] thiz 本接口指针
  2158. /// \~english
  2159. /// add interface reference
  2160. /// \param [in] thiz this pointer
  2161. int32_t (*addRef)(struct GENICAM_BoolNode *thiz);
  2162. /// \~chinese
  2163. /// 释放接口
  2164. /// \param [in] thiz 本接口指针
  2165. /// \~english
  2166. /// release interface
  2167. /// \param [in] thiz this pointer
  2168. int32_t (*release)(struct GENICAM_BoolNode *thiz);
  2169. /// \~chinese
  2170. /// \brief 获取属性值
  2171. /// \param [in] thiz 本接口指针
  2172. /// \param [out] pVal 获取到的属性值
  2173. /// \return 成功返回0,失败返回-1
  2174. /// \~english
  2175. /// \brief get property's value
  2176. /// \param [in] thiz this pointer
  2177. /// \param [out] pVal property's value
  2178. /// \return success:0, fail:-1
  2179. int32_t (*getValue)(struct GENICAM_BoolNode *thiz,uint32_t *pVal);
  2180. /// \~chinese
  2181. /// \brief 设置属性值
  2182. /// \param [in] thiz 本接口指针
  2183. /// \param [in] val 待设置的属性值
  2184. /// \return 成功返回0,失败返回-1
  2185. /// \~english
  2186. /// \brief set the property'value
  2187. /// \param [in] thiz this pointer
  2188. /// \param [in] val the value to be set for this property
  2189. /// \return success:0, fail:-1
  2190. int32_t (*setValue)(struct GENICAM_BoolNode *thiz, uint32_t val);
  2191. /// \~chinese
  2192. /// \brief 判断属性是否有效
  2193. /// \param [in] thiz 本接口指针
  2194. /// \return 0表示有效,-1表示无效
  2195. /// \~english
  2196. /// \brief check the validity of this property
  2197. /// \param [in] thiz this pointer
  2198. /// \return valid:0, invalid:-1
  2199. int32_t (*isValid)(struct GENICAM_BoolNode *thiz);
  2200. /// \~chinese
  2201. /// \brief 判断属性是否可用
  2202. /// \param [in] thiz 本接口指针
  2203. /// \return 0表示可用,-1表示不可用
  2204. /// \~english
  2205. /// \brief check the property is available or not
  2206. /// \param [in] thiz this pointer
  2207. /// \return available:0, not available:-1
  2208. int32_t(*isAvailable)(struct GENICAM_BoolNode *thiz);
  2209. /// \~chinese
  2210. /// \brief 判断属性是否可读
  2211. /// \param [in] thiz 本接口指针
  2212. /// \return 0表示可读,-1表示不可读
  2213. /// \~english
  2214. /// \brief check the property is readable or not
  2215. /// \param [in] thiz this pointer
  2216. /// \return readable:0, not readable:-1
  2217. int32_t(*isReadable)(struct GENICAM_BoolNode *thiz);
  2218. /// \~chinese
  2219. /// \brief 判断属性是否可写
  2220. /// \param [in] thiz 本接口指针
  2221. /// \return 0表示可写,-1表示不可写
  2222. /// \~english
  2223. /// \brief check the property is writeable or not
  2224. /// \param [in] thiz this pointer
  2225. /// \return writeable:0, not writeable:-1
  2226. int32_t(*isWriteable)(struct GENICAM_BoolNode *thiz);
  2227. uint32_t reserve[23]; ///< \~chinese 预留字段 ///< \~english reserved field
  2228. }GENICAM_BoolNode;
  2229. /// \~chinese
  2230. /// \brief 创建布尔节点类型信息
  2231. /// 32位系统下128 + 1024 字节
  2232. /// \~english
  2233. /// \brief create bool node info
  2234. /// 128 + 1024 bytes in 32-bit system
  2235. typedef struct GENICAM_BoolNodeInfo
  2236. {
  2237. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2238. char attrName[MAX_ATTR_NAME_LEN]; ///< \~chinese 属性名称 ///< \~english attribute name
  2239. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2240. } GENICAM_BoolNodeInfo;
  2241. /// \~chinese
  2242. /// 创建布尔节点类型对象
  2243. /// \param [in] pBoolNodeInfo 创建布尔节点类型信息
  2244. /// \param [out] ppBoolNode 布尔类型对象
  2245. /// \retval < 0 创建失败
  2246. /// \retval 0 创建成功
  2247. /// \~english
  2248. /// create Bool node object
  2249. /// \param [in] pBoolNodeInfo create bool node info
  2250. /// \param [out] ppBoolNode bool node object
  2251. /// \retval < 0 create failed
  2252. /// \retval 0 create successfully
  2253. GENICAM_API int32_t CALL_METHOD GENICAM_createBoolNode(GENICAM_BoolNodeInfo* pBoolNodeInfo
  2254. , GENICAM_BoolNode** ppBoolNode);
  2255. /// \~chinese
  2256. /// \brief 命令型属性操作类
  2257. /// 32位系统下128字节
  2258. /// \~english
  2259. /// \brief CmdNode property operation class
  2260. /// 128 bytes in 32-bit system
  2261. typedef struct GENICAM_CmdNode
  2262. {
  2263. /// \~chinese
  2264. /// 底层私有数据
  2265. /// \~english
  2266. /// Underlying private data
  2267. void *priv;
  2268. /// \~chinese
  2269. /// 增加接口引用
  2270. /// \param [in] thiz 本接口指针
  2271. /// \~english
  2272. /// add interface reference
  2273. /// \param [in] thiz this pointer
  2274. int32_t (*addRef)(struct GENICAM_CmdNode *thiz);
  2275. /// \~chinese
  2276. /// 释放接口
  2277. /// \param [in] thiz 本接口指针
  2278. /// \~english
  2279. /// release interface
  2280. /// \param [in] thiz this pointer
  2281. int32_t (*release)(struct GENICAM_CmdNode *thiz);
  2282. /// \~chinese
  2283. /// \brief 执行命令类型属性
  2284. /// \param [in] thiz 本接口指针
  2285. /// \return 成功返回0,失败返回-1
  2286. /// \~english
  2287. /// \brief execute command property
  2288. /// \param [in] thiz this pointer
  2289. /// \return success:0, fail:-1
  2290. int32_t (*execute)(struct GENICAM_CmdNode *thiz);
  2291. /// \~chinese
  2292. /// \brief 判断属性是否有效
  2293. /// \param [in] thiz 本接口指针
  2294. /// \return 0表示有效,-1表示无效
  2295. /// \~english
  2296. /// \brief check validity of the property
  2297. /// \param [in] thiz this pointer
  2298. /// \return valid:0, invalid:-1
  2299. int32_t (*isValid)(struct GENICAM_CmdNode *thiz);
  2300. /// \~chinese
  2301. /// \brief 判断属性是否可用
  2302. /// \param [in] thiz 本接口指针
  2303. /// \return 0表示可用,-1表示不可用
  2304. /// \~english
  2305. /// \brief check the property is available or not
  2306. /// \param [in] thiz this pointer
  2307. /// \return available:0, not available:-1
  2308. int32_t (*isAvailable)(struct GENICAM_CmdNode *thiz);
  2309. /// \~chinese
  2310. /// \brief 判断属性是否可读
  2311. /// \param [in] thiz 本接口指针
  2312. /// \return 0表示可读,-1表示不可读
  2313. /// \~english
  2314. /// \brief check the property is readable or not
  2315. /// \param [in] thiz this pointer
  2316. /// \return readable:0, not readable:-1
  2317. int32_t(*isReadable)(struct GENICAM_CmdNode *thiz);
  2318. /// \~chinese
  2319. /// \brief 判断属性是否可写
  2320. /// \param [in] thiz 本接口指针
  2321. /// \return 0表示可写,-1表示不可写
  2322. /// \~english
  2323. /// \brief check the property is writeable or not
  2324. /// \param [in] thiz this pointer
  2325. /// \return writeable:0, not writeable:-1
  2326. int32_t(*isWriteable)(struct GENICAM_CmdNode *thiz);
  2327. uint32_t reserve[24]; ///< \~chinese 预留字段 ///< \~english reserved field
  2328. }GENICAM_CmdNode;
  2329. /// \~chinese
  2330. /// \brief 创建命令节点类型信息
  2331. /// 32位系统下128 + 1024 字节
  2332. /// \~english
  2333. /// \brief create command node info
  2334. /// 128 + 1024 bytes in 32-bit system
  2335. typedef struct GENICAM_CmdNodeInfo
  2336. {
  2337. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2338. char attrName[MAX_ATTR_NAME_LEN]; ///< \~chinese 属性名称 ///< \~english attribute name
  2339. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2340. } GENICAM_CmdNodeInfo;
  2341. /// \~chinese
  2342. /// 创建命令节点类型对象
  2343. /// \param [in] pCmdNodeInfo 创建命令节点类型信息
  2344. /// \param [out] ppCmdNode 命令类型对象
  2345. /// \retval < 0 创建失败
  2346. /// \retval 0 创建成功
  2347. /// \~english
  2348. /// create command node object
  2349. /// \param [in] pCmdNodeInfo create command node info
  2350. /// \param [out] ppCmdNode command node object
  2351. /// \retval < 0 create failed
  2352. /// \retval 0 create successfully
  2353. GENICAM_API int32_t CALL_METHOD GENICAM_createCmdNode(GENICAM_CmdNodeInfo* pCmdNodeInfo
  2354. , GENICAM_CmdNode** ppCmdNode);
  2355. /// \~chinese
  2356. /// \brief GENICAM_StringNode string属性操作类
  2357. /// 32位系统下128字节
  2358. /// \~english
  2359. /// \brief string property operation class
  2360. /// 128 bytes in 32-bit system
  2361. typedef struct GENICAM_StringNode
  2362. {
  2363. /// \~chinese
  2364. /// 底层私有数据
  2365. /// \~english
  2366. /// Underlying private data
  2367. void *priv;
  2368. /// \~chinese
  2369. /// 增加接口引用
  2370. /// \param [in] thiz 本接口指针
  2371. /// \~english
  2372. /// add interface reference
  2373. /// \param [in] thiz this pointer
  2374. int32_t (*addRef)(struct GENICAM_StringNode *thiz);
  2375. /// \~chinese
  2376. /// 释放接口
  2377. /// \param [in] thiz 本接口指针
  2378. /// \~english
  2379. /// release interface
  2380. /// \param [in] thiz this pointer
  2381. int32_t (*release)(struct GENICAM_StringNode *thiz);
  2382. /// \~chinese
  2383. /// \brief 获取属性值
  2384. /// \param [in] thiz 本接口指针
  2385. /// \param [in/out] pOutStr 获取到的属性值,约定字符最大长度为256,该内存由外部分配
  2386. /// \param [in/out] pMaxCnt 入参时为输入内存的长度,出参时为实际的字符长度
  2387. /// \return 成功返回0,否则-1
  2388. /// \~english
  2389. /// \brief get property's value
  2390. /// \param [in] thiz this pointer
  2391. /// \param [in/out] pOutStr Get the property's value, and the length of char cannot exceed 256, this memory is allocated externally
  2392. /// \param [in/out] pMaxCnt At input, it is the length of input memory; At output, it is the actual length of chars
  2393. /// \return success:0, fail:-1
  2394. int32_t (*getValue)(struct GENICAM_StringNode *thiz,char*pOutStr,uint32_t *pMaxCnt);
  2395. /// \~chinese
  2396. /// \brief 设置属性值
  2397. /// \param [in] thiz 本接口指针
  2398. /// \param [in] pInStr 待输入的属性值
  2399. /// \return 成功则返回0,否则返回-1
  2400. /// \~english
  2401. /// \brief set the property
  2402. /// \param [in] thiz this pointer
  2403. /// \param [in] pInStr the value waiting to be input for this property
  2404. /// \return success:0, fail:-1
  2405. int32_t (*setValue)(struct GENICAM_StringNode *thiz, const char *pInStr);
  2406. /// \~chinese
  2407. /// \brief 判断属性是否有效
  2408. /// \param [in] thiz 本接口指针
  2409. /// \return 0表示有效,-1表示无效
  2410. /// \~english
  2411. /// \brief check validity of the property
  2412. /// \param [in] thiz this pointer
  2413. /// \return valid:0, invalid:-1
  2414. int32_t (*isValid)(struct GENICAM_StringNode *thiz);
  2415. /// \~chinese
  2416. /// \brief 判断属性是否可用
  2417. /// \param [in] thiz 本接口指针
  2418. /// \return 0表示可用,-1表示不可用
  2419. /// \~english
  2420. /// \brief check the property is available or not
  2421. /// \param [in] thiz this pointer
  2422. /// \return available:0, not available:-1
  2423. int32_t(*isAvailable)(struct GENICAM_StringNode *thiz);
  2424. /// \~chinese
  2425. /// \brief 判断属性是否可读
  2426. /// \param [in] thiz 本接口指针
  2427. /// \return 0表示可读,-1表示不可读
  2428. /// \~english
  2429. /// \brief check the property is readable or not
  2430. /// \param [in] thiz this pointer
  2431. /// \return readable:0, not readable:-1
  2432. int32_t(*isReadable)(struct GENICAM_StringNode *thiz);
  2433. /// \~chinese
  2434. /// \brief 判断属性是否可写
  2435. /// \param [in] thiz 本接口指针
  2436. /// \return 0表示可写,-1表示不可写
  2437. /// \~english
  2438. /// \brief check the property is writeable or not
  2439. /// \param [in] thiz this pointer
  2440. /// \return writeable:0, not writeable:-1
  2441. int32_t(*isWriteable)(struct GENICAM_StringNode *thiz);
  2442. uint32_t reserve[23]; ///< \~chinese 预留字段 ///< \~english reserved field
  2443. }GENICAM_StringNode;
  2444. /// \~chinese
  2445. /// \brief 创建字符串节点类型信息
  2446. /// 32位系统下128 + 1024 字节
  2447. /// \~english
  2448. /// \brief create string node info
  2449. /// 128 + 1024 bytes in 32-bit system
  2450. typedef struct GENICAM_StringNodeInfo
  2451. {
  2452. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2453. char attrName[MAX_ATTR_NAME_LEN]; ///< \~chinese 属性名称 ///< \~english attribute name
  2454. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2455. } GENICAM_StringNodeInfo;
  2456. /// \~chinese
  2457. /// 创建字符串节点类型对象
  2458. /// \param [in] pStringNodeInfo 创建字符串节点类型信息
  2459. /// \param [out] ppStringNode 字符串类型对象
  2460. /// \retval < 0 创建失败
  2461. /// \retval 0 创建成功
  2462. /// \~english
  2463. /// create string node object
  2464. /// \param [in] pStringNodeInfo create string node info
  2465. /// \param [out] ppStringNode string node object
  2466. /// \retval < 0 create failed
  2467. /// \retval 0 create successfully
  2468. GENICAM_API int32_t CALL_METHOD GENICAM_createStringNode(GENICAM_StringNodeInfo* pStringNodeInfo
  2469. , GENICAM_StringNode** ppStringNode);
  2470. /// \~chinese
  2471. /// \brief GENICAM_AcquisitionControl 下属性操作类
  2472. /// \~english
  2473. /// \brief AcquisitionControl's property operation class
  2474. typedef struct GENICAM_AcquisitionControl
  2475. {
  2476. /// \~chinese
  2477. /// 底层私有数据
  2478. /// \~english
  2479. /// Underlying private data
  2480. void *priv;
  2481. /// \~chinese
  2482. /// 增加接口引用
  2483. /// \param [in] thiz 本接口指针
  2484. /// \~english
  2485. /// add interface reference
  2486. /// \param [in] thiz this pointer
  2487. int32_t(*addRef)(struct GENICAM_AcquisitionControl *thiz);
  2488. /// \~chinese
  2489. /// 释放接口
  2490. /// \param [in] thiz 本接口指针
  2491. /// \~english
  2492. /// release interface
  2493. /// \param [in] thiz this pointer
  2494. int32_t(*release)(struct GENICAM_AcquisitionControl *thiz);
  2495. /// \~chinese
  2496. /// \brief 获取AcquisitionFrameCount属性操作对象
  2497. /// \param [in] thiz 本接口指针
  2498. /// \return 返回属性操作对象,失败返回NULL
  2499. /// \~english
  2500. /// \brief get AcquisitionFrameCount's property operation object
  2501. /// \param [in] thiz this pointer
  2502. /// \return success:return property operation object, fail:return NULL
  2503. GENICAM_IntNode (*acquisitionFrameCount)(struct GENICAM_AcquisitionControl *thiz);
  2504. /// \~chinese
  2505. /// \brief 获取AcquisitionFrameRate属性操作对象
  2506. /// \param [in] thiz 本接口指针
  2507. /// \return 返回属性操作对象,失败返回NULL
  2508. /// \~english
  2509. /// \brief get AcquisitionFrameRate property's operation object
  2510. /// \param [in] thiz this pointer
  2511. /// \return success:return property operation object, fail:return NULL
  2512. GENICAM_DoubleNode (*acquisitionFrameRate)(struct GENICAM_AcquisitionControl *thiz);
  2513. /// \~chinese
  2514. /// \brief 获取AcquisitionFrameRateEnable使能属性操作对象
  2515. /// \param [in] thiz 本接口指针
  2516. /// \return 返回属性操作对象,失败返回NULL
  2517. /// \~english
  2518. /// \brief get AcquisitionFrameRateEnable property operation object
  2519. /// \param [in] thiz this pointer
  2520. /// \return success:return property operation object, fail:return NULL
  2521. GENICAM_BoolNode(*acquisitionFrameRateEnable)(struct GENICAM_AcquisitionControl *thiz);
  2522. /// \~chinese
  2523. /// \brief 获取AcquisitionFrameRate属性操作对象
  2524. /// \param [in] thiz 本接口指针
  2525. /// \return 返回属性操作对象,失败返回NULL
  2526. /// \~english
  2527. /// \brief get AcquisitionFrameRate property operation object
  2528. /// \param [in] thiz this pointer
  2529. /// \return success:return property operation object, fail:return NULL
  2530. GENICAM_EnumNode (*acquisitionMode)(struct GENICAM_AcquisitionControl *thiz);
  2531. /// \~chinese
  2532. /// \brief 获取ExposureAuto属性操作对象
  2533. /// \param [in] thiz 本接口指针
  2534. /// \return 返回属性操作对象,失败返回NULL
  2535. /// \~english
  2536. /// \brief get ExposureAuto property operation object
  2537. /// \param [in] thiz this pointer
  2538. /// \return success:return property operation object, fail:return NULL
  2539. GENICAM_EnumNode (*exposureAuto)(struct GENICAM_AcquisitionControl *thiz);
  2540. /// \~chinese
  2541. /// \brief 获取ExposureMode属性操作对象
  2542. /// \param [in] thiz 本接口指针
  2543. /// \return 返回属性操作对象,失败返回NULL
  2544. /// \~english
  2545. /// \brief get ExposureMode property operation object
  2546. /// \param [in] thiz this pointer
  2547. /// \return success:return property operation object, fail:return NULL
  2548. GENICAM_EnumNode (*exposureMode)(struct GENICAM_AcquisitionControl *thiz);
  2549. /// \~chinese
  2550. /// \brief 获取ExposureTime属性操作对象
  2551. /// \param [in] thiz 本接口指针
  2552. /// \return 返回属性操作对象,失败返回NULL
  2553. /// \~english
  2554. /// \brief get ExposureTime property operation object
  2555. /// \param [in] thiz this pointer
  2556. /// \return success:return property operation object, fail:return NULL
  2557. GENICAM_DoubleNode (*exposureTime)(struct GENICAM_AcquisitionControl *thiz);
  2558. /// \~chinese
  2559. /// \brief 获取TriggerActivation属性操作对象,设置触发上升沿下降沿
  2560. /// \param [in] thiz 本接口指针
  2561. /// \return 返回属性操作对象,失败返回NULL
  2562. /// \~english
  2563. /// \brief get TriggerActivation property operation object,set trigger as rising edge or falling edge
  2564. /// \param [in] thiz this pointer
  2565. /// \return success:return property operation object, fail:return NULL
  2566. GENICAM_EnumNode (*triggerActivation)(struct GENICAM_AcquisitionControl *thiz);
  2567. /// \~chinese
  2568. /// \brief 获取TriggerDelay属性操作对象,设置软触发延时
  2569. /// \param [in] thiz 本接口指针
  2570. /// \return 返回属性操作对象,失败返回NULL
  2571. /// \~english
  2572. /// \brief get TriggerDelay property operation object, set soft trigger delay
  2573. /// \param [in] thiz this pointer
  2574. /// \return success:return property operation object, fail:return NULL
  2575. GENICAM_DoubleNode (*triggerDelay)(struct GENICAM_AcquisitionControl *thiz);
  2576. /// \~chinese
  2577. /// \brief 获取TriggerMode属性操作对象
  2578. /// \param [in] thiz 本接口指针
  2579. /// \return 返回属性操作对象,失败返回NULL
  2580. /// \~english
  2581. /// \brief get TriggerMode property operation object
  2582. /// \param [in] thiz this pointer
  2583. /// \return success:return property operation object, fail:return NULL
  2584. GENICAM_EnumNode (*triggerMode)(struct GENICAM_AcquisitionControl *thiz);
  2585. /// \~chinese
  2586. /// \brief 获取TriggerSelector属性操作对象
  2587. /// \param [in] thiz 本接口指针
  2588. /// \return 返回属性操作对象,失败返回NULL
  2589. /// \~english
  2590. /// \brief get TriggerSelector property operation object
  2591. /// \param [in] thiz this pointer
  2592. /// \return success:return property operation object, fail:return NULL
  2593. GENICAM_EnumNode (*triggerSelector)(struct GENICAM_AcquisitionControl *thiz);
  2594. /// \~chinese
  2595. /// \brief 获取TriggerSource属性操作对象,设置内部/外部触发
  2596. /// \param [in] thiz 本接口指针
  2597. /// \return 返回属性操作对象,失败返回NULL
  2598. /// \~english
  2599. /// \brief get TriggerSource property operation object, set internal/external trigger
  2600. /// \param [in] thiz this pointer
  2601. /// \return success:return property operation object, fail:return NULL
  2602. GENICAM_EnumNode (*triggerSource)(struct GENICAM_AcquisitionControl *thiz);
  2603. /// \~chinese
  2604. /// \brief 获取TriggerSoftware属性操作对象,执行内部软触发
  2605. /// \param [in] thiz 本接口指针
  2606. /// \return 返回属性操作对象,失败返回NULL
  2607. /// \~english
  2608. /// \brief get TriggerSoftware property operation object, execute internal soft trigger
  2609. /// \param [in] thiz this pointer
  2610. /// \return success:return property operation object, fail:return NULL
  2611. GENICAM_CmdNode (*triggerSoftware)(struct GENICAM_AcquisitionControl *thiz);
  2612. uint32_t reserve[17]; ///< \~chinese 预留字段 ///< \~english reserved field
  2613. }GENICAM_AcquisitionControl;
  2614. /// \~chinese
  2615. /// brief 创建属性节点AcquisitionControl信息
  2616. /// 32位系统下128字节
  2617. /// \~english
  2618. /// brief create parameter node AcquisitionControl info
  2619. /// 128 bytes in 32-bit system
  2620. typedef struct GENICAM_AcquisitionControlInfo
  2621. {
  2622. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2623. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2624. } GENICAM_AcquisitionControlInfo;
  2625. /// \~chinese
  2626. /// 创建属性节点AcquisitionControl
  2627. /// \param [in] pAcquisitionControlInfo 创建属性节点AcquisitionControl对象的参数
  2628. /// \param [out] ppAcquisitionControl 属性节点AcquisitionControl对象
  2629. /// \retval < 0 创建失败
  2630. /// \retval 0 创建成功
  2631. /// \~english
  2632. /// create parameter node : AcquisitionControl
  2633. /// \param [in] pAcquisitionControlInfo create AcquisitionControl info
  2634. /// \param [out] ppAcquisitionControl AcquisitionControl object
  2635. /// \retval < 0 create failed
  2636. /// \retval 0 create successfully
  2637. GENICAM_API int32_t CALL_METHOD GENICAM_createAcquisitionControl(GENICAM_AcquisitionControlInfo*pAcquisitionControlInfo,
  2638. GENICAM_AcquisitionControl** ppAcquisitionControl);
  2639. typedef enum GENICAM_EConfigSet
  2640. {
  2641. userSet1 = 1, ///< \~chinese 【读写】相机配置集合1 ///< \~english user set 1
  2642. userSet2 = 2, ///< \~chinese 【读写】相机配置集合2 ///< \~english user set 2
  2643. userSetInvalid
  2644. }GENICAM_EConfigSet;
  2645. /// \~chinese
  2646. /// \brief GENICAM_UserSetControl 下属性操作类
  2647. /// \~english
  2648. /// \brief UserSetControl property operation class
  2649. typedef struct GENICAM_UserSetControl
  2650. {
  2651. /// \~chinese
  2652. /// 底层私有数据
  2653. /// \~english
  2654. /// Underlying private data
  2655. void *priv;
  2656. /// \~chinese
  2657. /// 增加接口引用
  2658. /// \param [in] thiz 本接口指针
  2659. /// \~english
  2660. /// add interface reference
  2661. /// \param [in] thiz this pointer
  2662. int32_t (*addRef)(struct GENICAM_UserSetControl *thiz);
  2663. /// \~chinese
  2664. /// 释放接口
  2665. /// \param [in] thiz 本接口指针
  2666. /// \~english
  2667. /// release interface
  2668. /// \param [in] thiz this pointer
  2669. int32_t (*release)(struct GENICAM_UserSetControl *thiz);
  2670. /// \~chinese
  2671. /// \brief 恢复相机默认配置
  2672. /// \param [in] thiz 本接口指针
  2673. /// \return 成功返回0,否则返回-1
  2674. /// \~english
  2675. /// \brief restore default
  2676. /// \param [in] thiz this pointer
  2677. /// \return success:0, fail:-1
  2678. int32_t (*restoreDefault)(struct GENICAM_UserSetControl *thiz);
  2679. /// \~chinese
  2680. /// \brief 设置相机当前配置,并生效且下次以该配置启动
  2681. /// \param [in] thiz 本接口指针
  2682. /// \param [in] configSet 要设置的配置集合
  2683. /// \return 成功返回0,否则返回-1
  2684. /// \~english
  2685. /// \brief set current camera configuration, these configurations will take effect immediately and load this userset on next time when start camera
  2686. /// \param [in] thiz this pointer
  2687. /// \param [in] configSet configuration set
  2688. /// \return success:0, fail:-1
  2689. int32_t (*setCurrentUserSet)(struct GENICAM_UserSetControl *thiz, GENICAM_EConfigSet configSet);
  2690. /// \~chinese
  2691. /// \brief 保存相机当前配置到某配置集合,如userSet1
  2692. /// \param [in] thiz 本接口指针
  2693. /// \param [in] configSet 要保存到的配置集合
  2694. /// \return 成功返回0,否则返回-1
  2695. /// \~english
  2696. /// \brief save current configuration into certain userset, for example, userSet1
  2697. /// \param [in] thiz this pointer
  2698. /// \param [in] configSet User set which is going to save
  2699. /// \return success:0, fail:-1
  2700. int32_t (*saveUserSet)(struct GENICAM_UserSetControl *thiz, GENICAM_EConfigSet configSet);
  2701. /// \~chinese
  2702. /// \brief 获取相机当前配置集合
  2703. /// \param [in] thiz 本接口指针
  2704. /// \return 返回配置集合枚举值
  2705. /// \~english
  2706. /// \brief get current user set
  2707. /// \param [in] thiz this pointer
  2708. /// \return user set enumeration value
  2709. GENICAM_EConfigSet (*getCurrentUserSet)(struct GENICAM_UserSetControl *thiz);
  2710. /// \~chinese
  2711. /// \brief 获取相机当前UserSet相关是否可用
  2712. /// \param [in] thiz 本接口指针
  2713. /// \return 可用返回0,否则返回-1
  2714. /// \~english
  2715. /// \brief check validity of current user set
  2716. /// \param [in] thiz this pointer
  2717. /// \return available:0, not available:-1
  2718. int32_t (*isAvailable)(struct GENICAM_UserSetControl *thiz);
  2719. uint32_t reserve[24]; ///< \~chinese 预留字段 ///< \~english reserved field
  2720. }GENICAM_UserSetControl;
  2721. /// \~chinese
  2722. /// \brief 创建属性节点UserSetControl信息
  2723. /// 32位系统下128字节
  2724. /// \~english
  2725. /// \brief create UserSetControl info
  2726. /// 128 bytes in 32-bit system
  2727. typedef struct GENICAM_UserSetControlInfo
  2728. {
  2729. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2730. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2731. } GENICAM_UserSetControlInfo;
  2732. /// \~chinese
  2733. /// 创建属性节点UserSetControl
  2734. /// \param [in] pUserSetControlInfo 创建属性节点UserSetControl对象的参数
  2735. /// \param [out] ppUserSetControl 属性节点UserSetControl对象
  2736. /// \retval < 0 创建失败
  2737. /// \retval 0 创建成功
  2738. /// \~english
  2739. /// create UserSetControl
  2740. /// \param [in] pUserSetControlInfo create UserSetControl info
  2741. /// \param [out] ppUserSetControl UserSetControl object
  2742. /// \retval < 0 create failed
  2743. /// \retval 0 create successfully
  2744. GENICAM_API int32_t CALL_METHOD GENICAM_createUserSetControl(GENICAM_UserSetControlInfo* pUserSetControlInfo
  2745. , GENICAM_UserSetControl** ppUserSetControl);
  2746. /// \~chinese
  2747. /// \brief GENICAM_ISPControl 下属性操作类
  2748. /// \~english
  2749. /// \brief ISPControl property operation class
  2750. typedef struct GENICAM_ISPControl
  2751. {
  2752. /// \~chinese
  2753. /// 底层私有数据
  2754. /// \~english
  2755. /// Underlying private data
  2756. void *priv;
  2757. /// \~chinese
  2758. /// 增加接口引用
  2759. /// \param [in] thiz 本接口指针
  2760. /// \~english
  2761. /// add interface reference
  2762. /// \param [in] thiz this pointer
  2763. int32_t (*addRef)(struct GENICAM_ISPControl *thiz);
  2764. /// \~chinese
  2765. /// 释放接口
  2766. /// \param [in] thiz 本接口指针
  2767. /// \~english
  2768. /// release interface
  2769. /// \param [in] thiz this pointer
  2770. int32_t (*release)(struct GENICAM_ISPControl *thiz);
  2771. /// \~chinese
  2772. /// \brief 获取Brightness属性操作对象,设置亮度
  2773. /// \param [in] thiz 本接口指针
  2774. /// \return 返回属性操作对象,失败返回NULL
  2775. /// \~english
  2776. /// \brief get Brightness property operation object, set brightness
  2777. /// \param [in] thiz this pointer
  2778. /// \return success:return property operation object, fail:return NULL
  2779. GENICAM_IntNode (*brightness)(struct GENICAM_ISPControl *thiz);
  2780. /// \~chinese
  2781. /// \brief 获取Sharpness属性操作对象,设置锐度
  2782. /// \param [in] thiz 本接口指针
  2783. /// \return 返回属性操作对象,失败返回NULL
  2784. /// \~english
  2785. /// \brief get Sharpness property operation object, set sharpness
  2786. /// \param [in] thiz this pointer
  2787. /// \return success:return property operation object, fail:return NULL
  2788. GENICAM_IntNode (*sharpness)(struct GENICAM_ISPControl *thiz);
  2789. /// \~chinese
  2790. /// \brief 获取SharpnessAuto属性操作对象,设置是否自动锐度
  2791. /// \param [in] thiz 本接口指针
  2792. /// \return 返回属性操作对象,失败返回NULL
  2793. /// \~english
  2794. /// \brief get SharpnessAuto property operation object, set whether activate auto sharpness or not
  2795. /// \param [in] thiz this pointer
  2796. /// \return success:return property operation object, fail:return NULL
  2797. GENICAM_BoolNode (*sharpnessAuto)(struct GENICAM_ISPControl *thiz);
  2798. /// \~chinese
  2799. /// \brief 获取SharpnessEnable属性操作对象,设置是否开启锐度
  2800. /// \param [in] thiz 本接口指针
  2801. /// \return 返回属性操作对象,失败返回NULL
  2802. /// \~english
  2803. /// \brief get SharpnessEnable property operation object, set whether enable sharpness or not
  2804. /// \param [in] thiz this pointer
  2805. /// \return success:return property operation object, fail:return NULL
  2806. GENICAM_EnumNode (*sharpnessEnable)(struct GENICAM_ISPControl *thiz);
  2807. /// \~chinese
  2808. /// \brief 获取Contrast属性操作对象,设置对比度
  2809. /// \param [in] thiz 本接口指针
  2810. /// \return 返回属性操作对象,失败返回NULL
  2811. /// \~english
  2812. /// \brief get Contrast property operation object, set contrast
  2813. /// \param [in] thiz this pointer
  2814. /// \return success:return property operation object, fail:return NULL
  2815. GENICAM_IntNode (*contrast)(struct GENICAM_ISPControl *thiz);
  2816. /// \~chinese
  2817. /// \brief 获取Hue属性操作对象,设置色度
  2818. /// \param [in] thiz 本接口指针
  2819. /// \return 返回属性操作对象,失败返回NULL
  2820. /// \~english
  2821. /// \brief get Hue property operation object, set hue
  2822. /// \param [in] thiz this pointer
  2823. /// \return success:return property operation object, fail:return NULL
  2824. GENICAM_IntNode (*hue)(struct GENICAM_ISPControl *thiz);
  2825. /// \~chinese
  2826. /// \brief 获取Saturation属性操作对象,设置饱和度
  2827. /// \param [in] thiz 本接口指针
  2828. /// \return 返回属性操作对象,失败返回NULL
  2829. /// \~english
  2830. /// \brief get Saturation property operation object, set saturation
  2831. /// \param [in] thiz this pointer
  2832. /// \return success:return property operation object, fail:return NULL
  2833. GENICAM_IntNode (*saturation)(struct GENICAM_ISPControl *thiz);
  2834. uint32_t reserved[22]; ///< \~chinese 保留 ///< \~english reserved field
  2835. }GENICAM_ISPControl;
  2836. /// \~chinese
  2837. /// \brief 创建属性节点信息
  2838. /// 32位系统下128字节
  2839. /// \~english
  2840. /// \brief create property node info
  2841. /// 128 bytes in 32-bit system
  2842. typedef struct GENICAM_ISPControlInfo
  2843. {
  2844. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2845. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2846. } GENICAM_ISPControlInfo;
  2847. /// \~chinese
  2848. /// 创建属性节点
  2849. /// \param [in] pISPControlInfo 创建属性节点ISPControl对象的参数
  2850. /// \param [out] ppISPControl 属性节点ISPControl对象
  2851. /// \retval < 0 创建失败
  2852. /// \retval 0 创建成功
  2853. /// \~english
  2854. /// create property node
  2855. /// \param [in] pISPControlInfo create ISPControl info
  2856. /// \param [out] ppISPControl create ISPControl object
  2857. /// \retval < 0 create failed
  2858. /// \retval 0 create successfully
  2859. GENICAM_API int32_t CALL_METHOD GENICAM_createISPControl(GENICAM_ISPControlInfo* pISPControlInfo
  2860. , GENICAM_ISPControl** ppISPControl);
  2861. /// \~chinese
  2862. /// \brief AnalogControl 下属性操作类
  2863. /// 32位系统下128字节
  2864. /// \~english
  2865. /// \brief AnalogControl property operation class
  2866. /// 128 bytes in 32-bit system
  2867. typedef struct GENICAM_AnalogControl
  2868. {
  2869. /// \~chinese
  2870. /// 底层私有数据
  2871. /// \~english
  2872. /// Underlying private data
  2873. void *priv;
  2874. /// \~chinese
  2875. /// 增加接口引用
  2876. /// \param [in] thiz 本接口指针
  2877. /// \~english
  2878. /// add interface reference
  2879. /// \param [in] thiz this pointer
  2880. int32_t (*addRef)(struct GENICAM_AnalogControl *thiz);
  2881. /// \~chinese
  2882. /// 释放接口
  2883. /// \param [in] thiz 本接口指针
  2884. /// \~english
  2885. /// release interface
  2886. /// \param [in] thiz this pointer
  2887. int32_t (*release)(struct GENICAM_AnalogControl *thiz);
  2888. /// \~chinese
  2889. /// \brief 获取BlackLevelSelector属性操作对象,设置操作哪个白平衡
  2890. /// \param [in] thiz 本接口指针
  2891. /// \return 返回属性操作对象,失败返回NULL
  2892. /// \~english
  2893. /// \brief get BlackLevelSelector property operation object
  2894. /// \param [in] thiz this pointer
  2895. /// \return success:return property operation object, fail:return NULL
  2896. GENICAM_EnumNode (*blackLevelSelector)(struct GENICAM_AnalogControl *thiz);
  2897. /// \~chinese
  2898. /// \brief 获取BlackLevelAuto属性操作对象,设置自动白平衡
  2899. /// \param [in] thiz 本接口指针
  2900. /// \return 返回属性操作对象,失败返回NULL
  2901. /// \~english
  2902. /// \brief get BalanceWhiteAuto property operation object, set auto white balance
  2903. /// \param [in] thiz this pointer
  2904. /// \return success:return property operation object, fail:return NULL
  2905. GENICAM_EnumNode (*blackLevelAuto)(struct GENICAM_AnalogControl *thiz);
  2906. /// \~chinese
  2907. /// \brief 获取BlackLevel属性操作对象,设置白平衡值
  2908. /// \param [in] thiz 本接口指针
  2909. /// \return 返回属性操作对象,失败返回NULL
  2910. /// \~english
  2911. /// \brief get BlackLevel property operation object, set black level
  2912. /// \param [in] thiz this pointer
  2913. /// \return success:return property operation object, fail:return NULL
  2914. GENICAM_IntNode (*blackLevel)(struct GENICAM_AnalogControl *thiz);
  2915. /// \~chinese
  2916. /// \brief 获取GainAuto属性操作对象
  2917. /// \param [in] thiz 本接口指针
  2918. /// \return 返回属性操作对象,失败返回NULL
  2919. /// \~english
  2920. /// \brief get GainAuto property operation object
  2921. /// \param [in] thiz this pointer
  2922. /// \return success:return property operation object, fail:return NULL
  2923. GENICAM_EnumNode (*gainAuto)(struct GENICAM_AnalogControl *thiz);
  2924. /// \~chinese
  2925. /// \brief 获取GainRaw属性操作对象
  2926. /// \param [in] thiz 本接口指针
  2927. /// \return 返回属性操作对象,失败返回NULL
  2928. /// \~english
  2929. /// \brief get GainRaw operation object
  2930. /// \param [in] thiz this pointer
  2931. /// \return success:return property operation object, fail:return NULL
  2932. GENICAM_DoubleNode (*gainRaw)(struct GENICAM_AnalogControl *thiz);
  2933. /// \~chinese
  2934. /// \brief 获取Gamma属性操作对象,设置Gamma值
  2935. /// \param [in] thiz 本接口指针
  2936. /// \return 返回属性操作对象,失败返回NULL
  2937. /// \~english
  2938. /// \brief get Gamma operation object, set gamma
  2939. /// \param [in] thiz this pointer
  2940. /// \return success:return property operation object, fail:return NULL
  2941. GENICAM_DoubleNode (*gamma)(struct GENICAM_AnalogControl *thiz);
  2942. /// \~chinese
  2943. /// \brief 获取BalanceRatioSelector属性操作对象,设置操作哪个白平衡
  2944. /// \param [in] thiz 本接口指针
  2945. /// \return 返回属性操作对象,失败返回NULL
  2946. /// \~english
  2947. /// \brief get BalanceRatioSelector property operation object
  2948. /// \param [in] thiz this pointer
  2949. /// \return success:return property operation object, fail:return NULL
  2950. GENICAM_EnumNode (*balanceRatioSelector)(struct GENICAM_AnalogControl *thiz);
  2951. /// \~chinese
  2952. /// \brief 获取BalanceWhiteAuto属性操作对象,设置自动白平衡
  2953. /// \param [in] thiz 本接口指针
  2954. /// \return 返回属性操作对象,失败返回NULL
  2955. /// \~english
  2956. /// \brief get BalanceWhiteAuto property operation object, set auto white balance
  2957. /// \param [in] thiz this pointer
  2958. /// \return success:return property operation object, fail:return NULL
  2959. GENICAM_EnumNode (*balanceWhiteAuto)(struct GENICAM_AnalogControl *thiz);
  2960. /// \~chinese
  2961. /// \brief 获取BalanceRatioSelector属性操作对象,设置操作哪个白平衡
  2962. /// \param [in] thiz 本接口指针
  2963. /// \return 返回属性操作对象,失败返回NULL
  2964. /// \~english
  2965. /// \brief get BalanceRatioSelector property operation object
  2966. /// \param [in] thiz this pointer
  2967. /// \return success:return property operation object, fail:return NULL
  2968. GENICAM_DoubleNode (*balanceRatio)(struct GENICAM_AnalogControl *thiz);
  2969. uint32_t reserve[20]; ///< \~chinese 预留字段 ///< \~english reserved field
  2970. }GENICAM_AnalogControl;
  2971. /// \~chinese
  2972. /// \brief 创建属性节点信息
  2973. /// 32位系统下128字节
  2974. /// \~english
  2975. /// \brief create property node info
  2976. /// 128 bytes in 32-bit system
  2977. typedef struct GENICAM_AnalogControlInfo
  2978. {
  2979. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  2980. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  2981. } GENICAM_AnalogControlInfo;
  2982. /// \~chinese
  2983. /// 创建属性节点
  2984. /// \param [in] pAnalogControlInfo 创建属性节点AnalogControl对象的参数
  2985. /// \param [out] ppAnalogControl 属性节点AnalogControl对象
  2986. /// \retval < 0 创建失败
  2987. /// \retval 0 创建成功
  2988. /// \~english
  2989. /// create property node
  2990. /// \param [in] pAnalogControlInfo create AnalogControl info
  2991. /// \param [out] ppAnalogControl AnalogControl object
  2992. /// \retval < 0 create failed
  2993. /// \retval 0 create successfully
  2994. GENICAM_API int32_t CALL_METHOD GENICAM_createAnalogControl(GENICAM_AnalogControlInfo* pAnalogControlInfo
  2995. , GENICAM_AnalogControl** ppAnalogControl);
  2996. /// \~chinese
  2997. /// \brief GENICAM_DeviceControl 下属性操作类
  2998. /// 32位系统下128字节
  2999. /// \~english
  3000. /// \brief DeviceControl property operation calss
  3001. /// 128 bytes in 32-bit system
  3002. typedef struct GENICAM_DeviceControl
  3003. {
  3004. /// \~chinese
  3005. /// 底层私有数据
  3006. /// \~english
  3007. /// Underlying private data
  3008. void *priv;
  3009. /// \~chinese
  3010. /// 增加接口引用
  3011. /// \param [in] thiz 本接口指针
  3012. /// \~english
  3013. /// add interface reference
  3014. /// \param [in] thiz this pointer
  3015. int32_t (*addRef)(struct GENICAM_DeviceControl *thiz);
  3016. /// \~chinese
  3017. /// 释放接口
  3018. /// \param [in] thiz 本接口指针
  3019. /// \~english
  3020. /// release interface
  3021. /// \param [in] thiz this pointer
  3022. int32_t (*release)(struct GENICAM_DeviceControl *thiz);
  3023. /// \~chinese
  3024. /// \brief 获取DeviceUserID属性操作对象,该对象可读写
  3025. /// \param [in] thiz 本接口指针
  3026. /// \return 返回属性操作对象,失败返回NULL
  3027. /// \~english
  3028. /// \brief get DeviceUserID property operation object which are readable and writable
  3029. /// \param [in] thiz this pointer
  3030. /// \return success:return property operation object, fail:return NULL
  3031. GENICAM_StringNode (*deviceUserID)(struct GENICAM_DeviceControl *thiz);
  3032. uint32_t reserve[28]; ///< \~chinese 预留字段 ///< \~english reserved field
  3033. }GENICAM_DeviceControl;
  3034. /// \~chinese
  3035. /// \brief 创建属性节点信息
  3036. /// 32位系统下128字节
  3037. /// \~english
  3038. /// \brief create property node info
  3039. /// 128 bytes in 32-bit system
  3040. typedef struct GENICAM_DeviceControlInfo
  3041. {
  3042. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  3043. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  3044. } GENICAM_DeviceControlInfo;
  3045. /// \~chinese
  3046. /// 创建属性节点
  3047. /// \param [in] pDeviceControlInfo 创建属性节点DeviceControl对象的参数
  3048. /// \param [out] ppDeviceControl 属性节点DeviceControl对象
  3049. /// \retval < 0 创建失败
  3050. /// \retval 0 创建成功
  3051. /// \~english
  3052. /// create property node
  3053. /// \param [in] pDeviceControlInfo create DeviceControl info
  3054. /// \param [out] ppDeviceControl DeviceControl object
  3055. /// \retval < 0 create failed
  3056. /// \retval 0 create successfully
  3057. GENICAM_API int32_t CALL_METHOD GENICAM_createDeviceControl(GENICAM_DeviceControlInfo* pDeviceControlInfo
  3058. , GENICAM_DeviceControl** ppDeviceControl);
  3059. /// \~chinese
  3060. /// \brief GENICAM_DigitalIOControl 下属性操作类
  3061. /// 32位系统下128字节
  3062. /// \~english
  3063. /// \brief DigitalIOControl property operation calss
  3064. /// 128 bytes in 32-bit system
  3065. typedef struct GENICAM_DigitalIOControl
  3066. {
  3067. /// \~chinese
  3068. /// 底层私有数据
  3069. /// \~english
  3070. /// Underlying private data
  3071. void *priv;
  3072. /// \~chinese
  3073. /// 增加接口引用
  3074. /// \param [in] thiz 本接口指针
  3075. /// \~english
  3076. /// add interface reference
  3077. /// \param [in] thiz this pointer
  3078. int32_t(*addRef)(struct GENICAM_DigitalIOControl *thiz);
  3079. /// \~chinese
  3080. /// 释放接口
  3081. /// \param [in] thiz 本接口指针
  3082. /// \~english
  3083. /// release interface
  3084. /// \param [in] thiz this pointer
  3085. int32_t(*release)(struct GENICAM_DigitalIOControl *thiz);
  3086. /// \~chinese
  3087. /// \brief 获取LineSelector属性操作对象,该对象可读写
  3088. /// \param [in] thiz 本接口指针
  3089. /// \return 返回属性操作对象,失败返回NULL
  3090. /// \~english
  3091. /// \brief get LineSelector property operation object which is readable and writable
  3092. /// \param [in] thiz this pointer
  3093. /// \return success:return property operation object, fail:return NULL
  3094. GENICAM_EnumNode(*lineSelector)(struct GENICAM_DigitalIOControl *thiz);
  3095. /// \~chinese
  3096. /// \brief 获取LineDebouncerTimeAbs属性操作对象,该对象可读
  3097. /// \param [in] thiz 本接口指针
  3098. /// \return 返回属性操作对象,失败返回NULL
  3099. /// \~english
  3100. /// \brief get LineDebouncerTimeAbs property operation object which is readable and writable
  3101. /// \param [in] thiz this pointer
  3102. /// \return success:return property operation object, fail:return NULL
  3103. GENICAM_DoubleNode(*lineDebouncerTimeAbs)(struct GENICAM_DigitalIOControl *thiz);
  3104. /// \~chinese
  3105. /// \brief 获取UserOutputSelector属性操作对象,该对象可读写
  3106. /// \param [in] thiz 本接口指针
  3107. /// \return 返回属性操作对象,失败返回NULL
  3108. /// \~english
  3109. /// \brief get UserOutputSelector property operation object which is readable and writable
  3110. /// \param [in] thiz this pointer
  3111. /// \return success:return property operation object, fail:return NULL
  3112. GENICAM_EnumNode(*userOutputSelector)(struct GENICAM_DigitalIOControl *thiz);
  3113. /// \~chinese
  3114. /// \brief 获取UserOutputValue属性操作对象,该对象可读写
  3115. /// \param [in] thiz 本接口指针
  3116. /// \return 返回属性操作对象,失败返回NULL
  3117. /// \~english
  3118. /// \brief get UserOutputValue's property operation object which is readable and writable
  3119. /// \param [in] thiz this pointer
  3120. /// \return success:return property operation object, fail:return NULL
  3121. GENICAM_BoolNode(*userOutputValue)(struct GENICAM_DigitalIOControl *thiz);
  3122. uint32_t reserve[25]; ///< \~chinese 预留字段 ///< \~english reserved field
  3123. }GENICAM_DigitalIOControl;
  3124. /// \~chinese
  3125. /// \brief 创建属性节点信息
  3126. /// 32位系统下128字节
  3127. /// \~english
  3128. /// \brief create property node info
  3129. /// 128 bytes in 32-bit system
  3130. typedef struct GENICAM_DigitalIOControlInfo
  3131. {
  3132. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  3133. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  3134. } GENICAM_DigitalIOControlInfo;
  3135. /// \~chinese
  3136. /// 创建属性节点
  3137. /// \param [in] pDigitalIOControlInfo 创建属性节点DigitalIOControl对象的参数
  3138. /// \param [out] ppDigitalIOControl 属性节点DigitalIOControl对象
  3139. /// \retval < 0 创建失败
  3140. /// \retval 0 创建成功
  3141. /// \~english
  3142. /// create property node
  3143. /// \param [in] pDigitalIOControlInfo create DigitalIOControl info
  3144. /// \param [out] ppDigitalIOControl DigitalIOControl object
  3145. /// \retval < 0 create failed
  3146. /// \retval 0 create successfully
  3147. GENICAM_API int32_t CALL_METHOD GENICAM_createDigitalIOControl(GENICAM_DigitalIOControlInfo* pDigitalIOControlInfo
  3148. , GENICAM_DigitalIOControl** ppDigitalIOControl);
  3149. /// \~chinese
  3150. /// \brief GENICAM_TransportLayerControl 下属性操作类
  3151. /// 32位系统下128字节
  3152. /// \~english
  3153. /// \brief TransportLayerControl property operation class
  3154. /// 128 bytes in 32-bit system
  3155. typedef struct GENICAM_TransportLayerControl
  3156. {
  3157. /// \~chinese
  3158. /// 底层私有数据
  3159. /// \~english
  3160. /// Underlying private data
  3161. void *priv;
  3162. /// \~chinese
  3163. /// 增加接口引用
  3164. /// \param [in] thiz 本接口指针
  3165. /// \~english
  3166. /// add interface reference
  3167. /// \param [in] thiz this pointer
  3168. int32_t (*addRef)(struct GENICAM_TransportLayerControl *thiz);
  3169. /// \~chinese
  3170. /// 释放接口
  3171. /// \param [in] thiz 本接口指针
  3172. /// \~english
  3173. /// release interface
  3174. /// \param [in] thiz this pointer
  3175. int32_t (*release)(struct GENICAM_TransportLayerControl *thiz);
  3176. /// \~chinese
  3177. /// \brief 获取GevSCPD属性操作对象,设置包发送间隔
  3178. /// \param [in] thiz 本接口指针
  3179. /// \return 返回属性操作对象,失败返回NULL
  3180. /// \~english
  3181. /// \brief get GevSCPD property operation object, set packet sending interval
  3182. /// \param [in] thiz this pointer
  3183. /// \return success:return property operation object, fail:return NULL
  3184. GENICAM_IntNode (*gevSCPD)(struct GENICAM_TransportLayerControl *thiz);
  3185. uint32_t reserve[28]; ///< \~chinese 预留字段 ///< \~english reserved field
  3186. }GENICAM_TransportLayerControl;
  3187. /// \~chinese
  3188. /// \brief 创建属性节点信息
  3189. /// 32位系统下128字节
  3190. /// \~english
  3191. /// \brief create property node info
  3192. /// 128 bytes in 32-bit system
  3193. typedef struct GENICAM_TransportLayerControlInfo
  3194. {
  3195. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  3196. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  3197. } GENICAM_TransportLayerControlInfo;
  3198. /// \~chinese
  3199. /// 创建属性节点
  3200. /// \param [in] pTransportControlInfo 创建属性节点TransportLayerControl对象的参数
  3201. /// \param [out] ppTransportControl 属性节点TransportLayerControl对象
  3202. /// \retval < 0 创建失败
  3203. /// \retval 0 创建成功
  3204. /// \~english
  3205. /// create property node
  3206. /// \param [in] pTransportControlInfo create TransportLayerControl info
  3207. /// \param [out] ppTransportControl TransportLayerControl object
  3208. /// \retval < 0 create failed
  3209. /// \retval 0 create successfully
  3210. GENICAM_API int32_t CALL_METHOD GENICAM_createTransportLayerControl(GENICAM_TransportLayerControlInfo* pTransportControlInfo
  3211. , GENICAM_TransportLayerControl** ppTransportControl);
  3212. /// \~chinese
  3213. /// \brief GENICAM_ImageFormatControl 下属性操作类
  3214. /// 32位系统下128字节
  3215. /// \~english
  3216. /// \brief ImageFormatControl property operation class
  3217. /// 128 bytes in 32-bit system
  3218. typedef struct GENICAM_ImageFormatControl
  3219. {
  3220. /// \~chinese
  3221. /// 底层私有数据
  3222. /// \~english
  3223. /// Underlying private data
  3224. void *priv;
  3225. /// \~chinese
  3226. /// 增加接口引用
  3227. /// \param [in] thiz 本接口指针
  3228. /// \~english
  3229. /// add interface reference
  3230. /// \param [in] thiz this pointer
  3231. int32_t (*addRef)(struct GENICAM_ImageFormatControl *thiz);
  3232. /// \~chinese
  3233. /// 释放接口
  3234. /// \param [in] thiz 本接口指针
  3235. /// \~english
  3236. /// release interface
  3237. /// \param [in] thiz this pointer
  3238. int32_t (*release)(struct GENICAM_ImageFormatControl *thiz);
  3239. /// \~chinese
  3240. /// \brief 获取Height属性操作对象
  3241. /// \param [in] thiz 本接口指针
  3242. /// \return 返回属性操作对象,失败返回NULL
  3243. /// \~english
  3244. /// \brief get Height property operation object
  3245. /// \param [in] thiz this pointer
  3246. /// \return success:property's object, fail:NULL
  3247. GENICAM_IntNode (*height)(struct GENICAM_ImageFormatControl *thiz);
  3248. /// \~chinese
  3249. /// \brief 获取Width属性操作对象
  3250. /// \param [in] thiz 本接口指针
  3251. /// \return 返回属性操作对象,失败返回NULL
  3252. /// \~english
  3253. /// \brief get Width property operation object
  3254. /// \param [in] thiz this pointer
  3255. /// \return success:property's object, fail:NULL
  3256. GENICAM_IntNode (*width)(struct GENICAM_ImageFormatControl *thiz);
  3257. /// \~chinese
  3258. /// \brief 获取OffsetX属性操作对象
  3259. /// \param [in] thiz 本接口指针
  3260. /// \return 返回属性操作对象,失败返回NULL
  3261. /// \~english
  3262. /// \brief get OffsetX property operation object
  3263. /// \param [in] thiz this pointer
  3264. /// \return success:property's object, fail:NULL
  3265. GENICAM_IntNode (*offsetX)(struct GENICAM_ImageFormatControl *thiz);
  3266. /// \~chinese
  3267. /// \brief 获取OffsetY属性操作对象
  3268. /// \param [in] thiz 本接口指针
  3269. /// \return 返回属性操作对象,失败返回NULL
  3270. /// \~english
  3271. /// \brief get OffsetY property operation object
  3272. /// \param [in] thiz this pointer
  3273. /// \return success:property's object, fail:NULL
  3274. GENICAM_IntNode (*offsetY)(struct GENICAM_ImageFormatControl *thiz);
  3275. /// \~chinese
  3276. /// \brief 获取PixelFormat属性操作对象
  3277. /// \param [in] thiz 本接口指针
  3278. /// \return 返回属性操作对象,失败返回NULL
  3279. /// \~english
  3280. /// \brief get PixelFormat property operation object
  3281. /// \param [in] thiz this pointer
  3282. /// \return success:property's object, fail:NULL
  3283. GENICAM_EnumNode (*pixelFormat)(struct GENICAM_ImageFormatControl *thiz);
  3284. /// \~chinese
  3285. /// \brief 获取ReverseX属性操作对象,设置是否翻转图像X轴
  3286. /// \param [in] thiz 本接口指针
  3287. /// \return 返回属性操作对象,失败返回NULL
  3288. /// \~english
  3289. /// \brief get ReverseX property operation object, set whether reverse X or not
  3290. /// \param [in] thiz this pointer
  3291. /// \return property operation object,return NULL if failed
  3292. GENICAM_BoolNode (*reverseX)(struct GENICAM_ImageFormatControl *thiz);
  3293. /// \~chinese
  3294. /// \brief 获取ReverseY属性操作对象,设置是否翻转图像Y轴
  3295. /// \param [in] thiz 本接口指针
  3296. /// \return 返回属性操作对象,失败返回NULL
  3297. /// \~english
  3298. /// \brief get ReverseY property operation object, set whether reverse Y or not
  3299. /// \param [in] thiz this pointer
  3300. /// \return property operation object,return NULL if failed
  3301. GENICAM_BoolNode (*reverseY)(struct GENICAM_ImageFormatControl *thiz);
  3302. uint32_t reserve[22]; ///< \~chinese 预留字段 ///< \~english reserved field
  3303. }GENICAM_ImageFormatControl;
  3304. /// \~chinese
  3305. /// \brief 创建属性节点信息
  3306. /// 32位系统下128字节
  3307. /// \~english
  3308. /// \brief create property node info
  3309. /// 128 bytes in 32-bit system
  3310. typedef struct GENICAM_ImageFormatControlInfo
  3311. {
  3312. GENICAM_Camera* pCamera; ///< \~chinese 相机对象 ///< \~english camera object
  3313. uint32_t reserved[31]; ///< \~chinese 保留 ///< \~english reserved field
  3314. } GENICAM_ImageFormatControlInfo;
  3315. /// \~chinese
  3316. /// 创建属性节点
  3317. /// \param [in] pImageFormatControlInfo 创建属性节点ImageFormatControl对象的参数
  3318. /// \param [out] ppImageFormatControl 属性节点ImageFormatControl对象
  3319. /// \retval < 0 创建失败
  3320. /// \retval 0 创建成功
  3321. /// \~english
  3322. /// create property node
  3323. /// \param [in] pImageFormatControlInfo create ImageFormatControl info
  3324. /// \param [out] ppImageFormatControl ImageFormatControl object
  3325. /// \retval < 0 create failed
  3326. /// \retval 0 create successfully
  3327. GENICAM_API int32_t CALL_METHOD GENICAM_createImageFormatControl(GENICAM_ImageFormatControlInfo* pImageFormatControlInfo,
  3328. GENICAM_ImageFormatControl** ppImageFormatControl);
  3329. /// @}
  3330. #ifdef __cplusplus
  3331. }
  3332. #endif
  3333. #endif