| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403 | using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;namespace IMCS.Device.FanucBase{    public class Focas1    {        /* Axis define */#if FS30D    public const short MAX_AXIS = 32;#elif M_AXIS2    public const short MAX_AXIS = 24;#elif FS15D    public const short MAX_AXIS = 10;#else        public const short MAX_AXIS = 8;#endif        public const short ALL_AXES = (-1);        public const short ALL_SPINDLES = (-1);        public const short EW_OK = (short)focas_ret.EW_OK;        /* Error Codes */        public enum focas_ret        {            EW_PROTOCOL = (-17),           /* protocol error */            EW_SOCKET = (-16),           /* Windows socket error */            EW_NODLL = (-15),           /* DLL not exist error */            EW_BUS = (-11),           /* bus error */            EW_SYSTEM2 = (-10),           /* system error */            EW_HSSB = (-9),           /* hssb communication error */            EW_HANDLE = (-8),           /* Windows library handle error */            EW_VERSION = (-7),           /* CNC/PMC version missmatch */            EW_UNEXP = (-6),           /* abnormal error */            EW_SYSTEM = (-5),           /* system error */            EW_PARITY = (-4),           /* shared RAM parity error */            EW_MMCSYS = (-3),           /* emm386 or mmcsys install error */            EW_RESET = (-2),           /* reset or stop occured error */            EW_BUSY = (-1),           /* busy error */            EW_OK = 0,           /* no problem */            EW_FUNC = 1,           /* command prepare error */            EW_NOPMC = 1,           /* pmc not exist */            EW_LENGTH = 2,           /* data block length error */            EW_NUMBER = 3,           /* data number error */            EW_RANGE = 3,           /* address range error */            EW_ATTRIB = 4,           /* data attribute error */            EW_TYPE = 4,           /* data type error */            EW_DATA = 5,           /* data error */            EW_NOOPT = 6,           /* no option error */            EW_PROT = 7,           /* write protect error */            EW_OVRFLOW = 8,           /* memory overflow error */            EW_PARAM = 9,           /* cnc parameter not correct error */            EW_BUFFER = 10,           /* buffer error */            EW_PATH = 11,           /* path error */            EW_MODE = 12,           /* cnc mode error */            EW_REJECT = 13,           /* execution rejected error */            EW_DTSRVR = 14,           /* data server error */            EW_ALARM = 15,           /* alarm has been occurred */            EW_STOP = 16,           /* CNC is not running */            EW_PASSWD = 17,           /* protection data error */            /*                Result codes of DNC operation            */            DNC_NORMAL = (-1),           /* normal completed */            DNC_CANCEL = (-32768),           /* DNC operation was canceled by CNC */            DNC_OPENERR = (-514),           /* file open error */            DNC_NOFILE = (-516),           /* file not found */            DNC_READERR = (-517)              /* read error */        };        /*--------------------*/        /*                    */        /* Structure Template */        /*                    */        /*--------------------*/        /*-------------------------------------*/        /* CNC: Control axis / spindle related */        /*-------------------------------------*/        /* cnc_actf:read actual axis feedrate(F) */        /* cnc_acts:read actual spindle speed(S) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBACT        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;      /* dummy */            public int data;      /* actual feed / actual spindle */        }        /* cnc_acts2:read actual spindle speed(S) */        /* (All or specified ) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBACT2        {            public short datano;     /* spindle number */            public short type;       /* dummy */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public int[] data;       /* spindle data */        }        /* cnc_absolute:read absolute axis position */        /* cnc_machine:read machine axis position */        /* cnc_relative:read relative axis position */        /* cnc_distance:read distance to go */        /* cnc_skip:read skip position */        /* cnc_srvdelay:read servo delay value */        /* cnc_accdecdly:read acceleration/deceleration delay value */        /* cnc_absolute2:read absolute axis position 2 */        /* cnc_relative2:read relative axis position 2 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAXIS        {            public short dummy;  /* dummy */            public short type;   /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] data;      /* data value */        }        /* cnc_rddynamic:read all dynamic data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class FAXIS        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] absolute;    /* absolute position */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] machine;     /* machine position */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] relative;    /* relative position */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] distance;    /* distance to go */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OAXIS        {            public int absolute;  /* absolute position */            public int machine;   /* machine position */            public int relative;  /* relative position */            public int distance;  /* distance to go */        }#if (!ONO8D)        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDY_1        {            public short dummy;            public short axis;      /* axis number */            public short alarm;     /* alarm status */            public short prgnum;    /* current program number */            public short prgmnum;   /* main program number */            public int seqnum;    /* current sequence number */            public int actf;      /* actual feedrate */            public int acts;      /* actual spindle speed */            public FAXIS pos = new FAXIS();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDY_2        {            public short dummy;            public short axis;      /* axis number */            public short alarm;     /* alarm status */            public short prgnum;    /* current program number */            public short prgmnum;   /* main program number */            public int seqnum;    /* current sequence number */            public int actf;      /* actual feedrate */            public int acts;      /* actual spindle speed */            public OAXIS pos = new OAXIS();        }#else    [StructLayout(LayoutKind.Sequential, Pack=4)]    public class ODBDY_1    {        public short  dummy ;        public short  axis ;      /* axis number */        public short  alarm ;     /* alarm status */        public int    prgnum ;    /* current program number */        public int    prgmnum ;   /* main program number */        public int    seqnum ;    /* current sequence number */        public int    actf ;      /* actual feedrate */        public int    acts ;      /* actual spindle speed */        public FAXIS  pos = new FAXIS();    }    [StructLayout(LayoutKind.Sequential, Pack=4)]    public class ODBDY_2    {        public short  dummy ;        public short  axis ;      /* axis number */        public short  alarm ;     /* alarm status */        public int    prgnum ;    /* current program number */        public int    prgmnum ;   /* main program number */        public int    seqnum ;    /* current sequence number */        public int    actf ;      /* actual feedrate */        public int    acts ;      /* actual spindle speed */        public OAXIS  pos = new OAXIS();    }#endif        /* cnc_rddynamic2:read all dynamic data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDY2_1        {            public short dummy;            public short axis;      /* axis number */            public int alarm;     /* alarm status */            public int prgnum;    /* current program number */            public int prgmnum;   /* main program number */            public int seqnum;    /* current sequence number */            public int actf;      /* actual feedrate */            public int acts;      /* actual spindle speed */            public FAXIS pos = new FAXIS();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDY2_2        {            public short dummy;            public short axis;       /* axis number */            public int alarm;      /* alarm status */            public int prgnum;     /* current program number */            public int prgmnum;    /* main program number */            public int seqnum;     /* current sequence number */            public int actf;       /* actual feedrate */            public int acts;       /* actual spindle speed */            public OAXIS pos = new OAXIS(); /* In case of 1 axis  */        }        /* cnc_wrrelpos:set origin / preset relative axis position */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBWRR        {            public short datano; /* dummy */            public short type;   /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] data = new int[MAX_AXIS];   /* preset data */        }        /* cnc_prstwkcd:preset work coordinate */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBWRA        {            public short datano; /* dummy */            public short type;   /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] data = new int[MAX_AXIS];   /* preset data */        }        /* cnc_rdmovrlap:read manual overlapped motion value */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBOVL        {            public short datano; /* dummy */            public short type;   /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2 * MAX_AXIS)]            public int[] data;   /* data value:[2][MAX_AXIS] */        }        /* cnc_rdspload:read load information of serial spindle */        /* cnc_rdspmaxrpm:read maximum r.p.m. ratio of serial spindle */        /* cnc_rdspgear:read gear ratio of serial spindle */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPN        {            public short datano; /* dummy */            public short type;   /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public short[] data;   /* preset data */        }        /* cnc_rdposition:read tool position */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class POSELM        {            public int data;         /* position data */            public short dec;        /* place of decimal point of position data */            public short unit;       /* unit of position data */            public short disp;       /* status of display */            public char name;        /* axis name */            public char suff;        /* axis name preffix */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class POSELMALL        {            public POSELM abs = new POSELM();            public POSELM mach = new POSELM();            public POSELM rel = new POSELM();            public POSELM dist = new POSELM();        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBPOS    {        public POSELMALL p1=new POSELMALL();        public POSELMALL p2=new POSELMALL();        public POSELMALL p3=new POSELMALL();        public POSELMALL p4=new POSELMALL();        public POSELMALL p5=new POSELMALL();        public POSELMALL p6=new POSELMALL();        public POSELMALL p7=new POSELMALL();        public POSELMALL p8=new POSELMALL();        public POSELMALL p9=new POSELMALL();        public POSELMALL p10=new POSELMALL();        public POSELMALL p11=new POSELMALL();        public POSELMALL p12=new POSELMALL();        public POSELMALL p13=new POSELMALL();        public POSELMALL p14=new POSELMALL();        public POSELMALL p15=new POSELMALL();        public POSELMALL p16=new POSELMALL();        public POSELMALL p17=new POSELMALL();        public POSELMALL p18=new POSELMALL();        public POSELMALL p19=new POSELMALL();        public POSELMALL p20=new POSELMALL();        public POSELMALL p21=new POSELMALL();        public POSELMALL p22=new POSELMALL();        public POSELMALL p23=new POSELMALL();        public POSELMALL p24=new POSELMALL();        // In case of 24 axes.        // if you need the more information, you must be add the member.    }#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBPOS    {        public POSELMALL p1=new POSELMALL();        public POSELMALL p2=new POSELMALL();        public POSELMALL p3=new POSELMALL();        public POSELMALL p4=new POSELMALL();        public POSELMALL p5=new POSELMALL();        public POSELMALL p6=new POSELMALL();        public POSELMALL p7=new POSELMALL();        public POSELMALL p8=new POSELMALL();        public POSELMALL p9=new POSELMALL();        public POSELMALL p10=new POSELMALL();        // In case of 10 axes.        // if you need the more information, you must be add the member.    }#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPOS        {            public POSELMALL p1 = new POSELMALL();            public POSELMALL p2 = new POSELMALL();            public POSELMALL p3 = new POSELMALL();            public POSELMALL p4 = new POSELMALL();            public POSELMALL p5 = new POSELMALL();            public POSELMALL p6 = new POSELMALL();            public POSELMALL p7 = new POSELMALL();            public POSELMALL p8 = new POSELMALL();            // In case of 8 axes.            // if you need the more information, you must be add the member.        }#endif        /* cnc_rdhndintrpt:read handle interruption */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHND_data        {            public POSELM input = new POSELM();   /* input unit */            public POSELM output = new POSELM();  /* output unit */        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBHND    {        public ODBHND_data p1=new ODBHND_data();        public ODBHND_data p2=new ODBHND_data();        public ODBHND_data p3=new ODBHND_data();        public ODBHND_data p4=new ODBHND_data();        public ODBHND_data p5=new ODBHND_data();        public ODBHND_data p6=new ODBHND_data();        public ODBHND_data p7=new ODBHND_data();        public ODBHND_data p8=new ODBHND_data();        public ODBHND_data p9=new ODBHND_data();        public ODBHND_data p10=new ODBHND_data();        public ODBHND_data p11=new ODBHND_data();        public ODBHND_data p12=new ODBHND_data();        public ODBHND_data p13=new ODBHND_data();        public ODBHND_data p14=new ODBHND_data();        public ODBHND_data p15=new ODBHND_data();        public ODBHND_data p16=new ODBHND_data();        public ODBHND_data p17=new ODBHND_data();        public ODBHND_data p18=new ODBHND_data();        public ODBHND_data p19=new ODBHND_data();        public ODBHND_data p20=new ODBHND_data();        public ODBHND_data p21=new ODBHND_data();        public ODBHND_data p22=new ODBHND_data();        public ODBHND_data p23=new ODBHND_data();        public ODBHND_data p24=new ODBHND_data();        // In case of 24 axes.        // if you need the more information, you must be add the member.    }#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBHND    {        public ODBHND_data p1=new ODBHND_data();        public ODBHND_data p2=new ODBHND_data();        public ODBHND_data p3=new ODBHND_data();        public ODBHND_data p4=new ODBHND_data();        public ODBHND_data p5=new ODBHND_data();        public ODBHND_data p6=new ODBHND_data();        public ODBHND_data p7=new ODBHND_data();        public ODBHND_data p8=new ODBHND_data();        public ODBHND_data p9=new ODBHND_data();        public ODBHND_data p10=new ODBHND_data();        // In case of 10 axes.        // if you need the more information, you must be add the member.    }#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHND        {            public ODBHND_data p1 = new ODBHND_data();            public ODBHND_data p2 = new ODBHND_data();            public ODBHND_data p3 = new ODBHND_data();            public ODBHND_data p4 = new ODBHND_data();            public ODBHND_data p5 = new ODBHND_data();            public ODBHND_data p6 = new ODBHND_data();            public ODBHND_data p7 = new ODBHND_data();            public ODBHND_data p8 = new ODBHND_data();            // In case of 8 axes.            // if you need the more information, you must be add the member.        }#endif        /* cnc_rdspeed:read current speed */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class SPEEDELM        {            public int data;       /* speed data */            public short dec;        /* decimal position */            public short unit;       /* data unit */            public short disp;       /* display flag */            public byte name;       /* name of data */            public byte suff;       /* suffix */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPEED        {            public SPEEDELM actf = new SPEEDELM();   /* actual feed rate */            public SPEEDELM acts = new SPEEDELM();   /* actual spindle speed */        }        /* cnc_rdsvmeter:read servo load meter */        /* cnc_rdspmeter:read spindle load meter */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class LOADELM        {            public int data;       /* load meter */            public short dec;        /* decimal position */            public short unit;       /* unit */            public byte name;       /* name of data */            public byte suff1;      /* suffix */            public byte suff2;      /* suffix */            public byte reserve;    /* reserve */        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBSVLOAD    {        public LOADELM svload1 = new LOADELM();     /* servo load meter */        public LOADELM svload2 = new LOADELM();     /* servo load meter */        public LOADELM svload3 = new LOADELM();     /* servo load meter */        public LOADELM svload4 = new LOADELM();     /* servo load meter */        public LOADELM svload5 = new LOADELM();     /* servo load meter */        public LOADELM svload6 = new LOADELM();     /* servo load meter */        public LOADELM svload7 = new LOADELM();     /* servo load meter */        public LOADELM svload8 = new LOADELM();     /* servo load meter */        public LOADELM svload9 = new LOADELM();     /* servo load meter */        public LOADELM svload10= new LOADELM();     /* servo load meter */        public LOADELM svload11= new LOADELM();     /* servo load meter */        public LOADELM svload12= new LOADELM();     /* servo load meter */        public LOADELM svload13= new LOADELM();     /* servo load meter */        public LOADELM svload14= new LOADELM();     /* servo load meter */        public LOADELM svload15= new LOADELM();     /* servo load meter */        public LOADELM svload16= new LOADELM();     /* servo load meter */        public LOADELM svload17= new LOADELM();     /* servo load meter */        public LOADELM svload18= new LOADELM();     /* servo load meter */        public LOADELM svload19= new LOADELM();     /* servo load meter */        public LOADELM svload20= new LOADELM();     /* servo load meter */        public LOADELM svload21= new LOADELM();     /* servo load meter */        public LOADELM svload22= new LOADELM();     /* servo load meter */        public LOADELM svload23= new LOADELM();     /* servo load meter */        public LOADELM svload24= new LOADELM();     /* servo load meter */    }#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBSVLOAD    {        public LOADELM svload1 = new LOADELM();     /* servo load meter */        public LOADELM svload2 = new LOADELM();     /* servo load meter */        public LOADELM svload3 = new LOADELM();     /* servo load meter */        public LOADELM svload4 = new LOADELM();     /* servo load meter */        public LOADELM svload5 = new LOADELM();     /* servo load meter */        public LOADELM svload6 = new LOADELM();     /* servo load meter */        public LOADELM svload7 = new LOADELM();     /* servo load meter */        public LOADELM svload8 = new LOADELM();     /* servo load meter */        public LOADELM svload9 = new LOADELM();     /* servo load meter */        public LOADELM svload10= new LOADELM();     /* servo load meter */    }#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSVLOAD        {            public LOADELM svload1 = new LOADELM();     /* servo load meter */            public LOADELM svload2 = new LOADELM();     /* servo load meter */            public LOADELM svload3 = new LOADELM();     /* servo load meter */            public LOADELM svload4 = new LOADELM();     /* servo load meter */            public LOADELM svload5 = new LOADELM();     /* servo load meter */            public LOADELM svload6 = new LOADELM();     /* servo load meter */            public LOADELM svload7 = new LOADELM();     /* servo load meter */            public LOADELM svload8 = new LOADELM();     /* servo load meter */        }#endif        /* cnc_rdexecpt:read execution program pointer */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class PRGPNT        {            public int prog_no;                      /* program number */            public int blk_no;                       /* block number */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPLOAD_data        {            public LOADELM spload = new LOADELM();     /* spindle load meter */            public LOADELM spspeed = new LOADELM();    /* spindle speed */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPLOAD        {            public ODBSPLOAD_data spload1 = new ODBSPLOAD_data();     /* spindle load */            public ODBSPLOAD_data spload2 = new ODBSPLOAD_data();     /* spindle load */            public ODBSPLOAD_data spload3 = new ODBSPLOAD_data();     /* spindle load */            public ODBSPLOAD_data spload4 = new ODBSPLOAD_data();     /* spindle load */        }        /* cnc_rd5axmandt:read manual feed for 5-axis machining */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB5AXMAN        {            public short type1;            public short type2;            public short type3;            public int data1;            public int data2;            public int data3;            public int c1;            public int c2;            public int dummy;            public int td;            public int r1;            public int r2;            public int vr;            public int h1;            public int h2;        }        /*----------------------*/        /* CNC: Program related */        /*----------------------*/        /* cnc_rddncdgndt:read the diagnosis data of DNC operation */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDNCDGN        {            public short ctrl_word;            public short can_word;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public char[] nc_file;            public ushort read_ptr;            public ushort write_ptr;            public ushort empty_cnt;            public uint total_size;        }        /* cnc_upload:upload NC program */        /* cnc_cupload:upload NC program(conditional) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBUP        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;  /* dummy */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]            public char[] data; /* data */        } /* In case that the number of data is 256 */        /* cnc_buff:read buffer status for downloading/verification NC program */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBBUF        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;  /* dummy */            public short data;  /* buffer status */        }        /* cnc_rdprogdir:read program directory */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class PRGDIR        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]            public char[] prg_data; /* directory data */        } /* In case that the number of data is 256 */        /* cnc_rdproginfo:read program information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBNC_1        {            public short reg_prg;       /* registered program number */            public short unreg_prg;     /* unregistered program number */            public int used_mem;      /* used memory area */            public int unused_mem;    /* unused memory area */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBNC_2        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 31)]            public char[] asc; /* ASCII string type */        }        /* cnc_rdprgnum:read program number under execution */#if (!ONO8D)        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPRO        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;     /* dummy */            public short data;      /* running program number */            public short mdata;     /* main program number */        }#else    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBPRO    {        [MarshalAs(UnmanagedType.ByValArray,SizeConst=2)]        public short[] dummy ;     /* dummy */        public int     data ;      /* running program number */        public int     mdata ;     /* main program number */    }#endif        /* cnc_exeprgname:read program name under execution */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBEXEPRG        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 36)]            public char[] name;       /* running program name */            public int o_num;        /* running program number */        }        /* cnc_rdseqnum:read sequence number under execution */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSEQ        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;      /* dummy */            public int data;       /* sequence number */        }        /* cnc_rdmdipntr:read execution pointer for MDI operation */#if (!ONO8D)        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMDIP        {            public short mdiprog;    /* exec. program number */            public int mdipntr;    /* exec. pointer */            public short crntprog;   /* prepare program number */            public int crntpntr;   /* prepare pointer */        }#else    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBMDIP    {        public int     mdiprog;    /* exec. program number */        public int     mdipntr;    /* exec. pointer */        public int     crntprog;   /* prepare program number */        public int     crntpntr;   /* prepare pointer */    }#endif        /* cnc_rdaxisdata:read various axis data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAXDT_data        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string name = new string(' ', 4);   /* axis name */            public int data;                       /* position data */            public short dec;                        /* decimal position */            public short unit;                       /* data unit */            public short flag;                       /* flags */            public short reserve;                    /* reserve */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAXDT        {            public ODBAXDT_data data1 = new ODBAXDT_data();            public ODBAXDT_data data2 = new ODBAXDT_data();            public ODBAXDT_data data3 = new ODBAXDT_data();            public ODBAXDT_data data4 = new ODBAXDT_data();            public ODBAXDT_data data5 = new ODBAXDT_data();            public ODBAXDT_data data6 = new ODBAXDT_data();            public ODBAXDT_data data7 = new ODBAXDT_data();            public ODBAXDT_data data8 = new ODBAXDT_data();            public ODBAXDT_data data9 = new ODBAXDT_data();            public ODBAXDT_data data10 = new ODBAXDT_data();            public ODBAXDT_data data11 = new ODBAXDT_data();            public ODBAXDT_data data12 = new ODBAXDT_data();            public ODBAXDT_data data13 = new ODBAXDT_data();            public ODBAXDT_data data14 = new ODBAXDT_data();            public ODBAXDT_data data15 = new ODBAXDT_data();            public ODBAXDT_data data16 = new ODBAXDT_data();            public ODBAXDT_data data17 = new ODBAXDT_data();            public ODBAXDT_data data18 = new ODBAXDT_data();            public ODBAXDT_data data19 = new ODBAXDT_data();            public ODBAXDT_data data20 = new ODBAXDT_data();            public ODBAXDT_data data21 = new ODBAXDT_data();            public ODBAXDT_data data22 = new ODBAXDT_data();            public ODBAXDT_data data23 = new ODBAXDT_data();            public ODBAXDT_data data24 = new ODBAXDT_data();            public ODBAXDT_data data25 = new ODBAXDT_data();            public ODBAXDT_data data26 = new ODBAXDT_data();            public ODBAXDT_data data27 = new ODBAXDT_data();            public ODBAXDT_data data28 = new ODBAXDT_data();            public ODBAXDT_data data29 = new ODBAXDT_data();            public ODBAXDT_data data30 = new ODBAXDT_data();            public ODBAXDT_data data31 = new ODBAXDT_data();            public ODBAXDT_data data32 = new ODBAXDT_data();            public ODBAXDT_data data33 = new ODBAXDT_data();            public ODBAXDT_data data34 = new ODBAXDT_data();            public ODBAXDT_data data35 = new ODBAXDT_data();            public ODBAXDT_data data36 = new ODBAXDT_data();            public ODBAXDT_data data37 = new ODBAXDT_data();            public ODBAXDT_data data38 = new ODBAXDT_data();            public ODBAXDT_data data39 = new ODBAXDT_data();            public ODBAXDT_data data40 = new ODBAXDT_data();            public ODBAXDT_data data41 = new ODBAXDT_data();            public ODBAXDT_data data42 = new ODBAXDT_data();            public ODBAXDT_data data43 = new ODBAXDT_data();            public ODBAXDT_data data44 = new ODBAXDT_data();            public ODBAXDT_data data45 = new ODBAXDT_data();            public ODBAXDT_data data46 = new ODBAXDT_data();            public ODBAXDT_data data47 = new ODBAXDT_data();            public ODBAXDT_data data48 = new ODBAXDT_data();            public ODBAXDT_data data49 = new ODBAXDT_data();            public ODBAXDT_data data50 = new ODBAXDT_data();            public ODBAXDT_data data51 = new ODBAXDT_data();            public ODBAXDT_data data52 = new ODBAXDT_data();            public ODBAXDT_data data53 = new ODBAXDT_data();            public ODBAXDT_data data54 = new ODBAXDT_data();            public ODBAXDT_data data55 = new ODBAXDT_data();            public ODBAXDT_data data56 = new ODBAXDT_data();            public ODBAXDT_data data57 = new ODBAXDT_data();            public ODBAXDT_data data58 = new ODBAXDT_data();            public ODBAXDT_data data59 = new ODBAXDT_data();            public ODBAXDT_data data60 = new ODBAXDT_data();            public ODBAXDT_data data61 = new ODBAXDT_data();            public ODBAXDT_data data62 = new ODBAXDT_data();            public ODBAXDT_data data63 = new ODBAXDT_data();            public ODBAXDT_data data64 = new ODBAXDT_data();            public ODBAXDT_data data65 = new ODBAXDT_data();            public ODBAXDT_data data66 = new ODBAXDT_data();            public ODBAXDT_data data67 = new ODBAXDT_data();            public ODBAXDT_data data68 = new ODBAXDT_data();            public ODBAXDT_data data69 = new ODBAXDT_data();            public ODBAXDT_data data70 = new ODBAXDT_data();            public ODBAXDT_data data71 = new ODBAXDT_data();            public ODBAXDT_data data72 = new ODBAXDT_data();            public ODBAXDT_data data73 = new ODBAXDT_data();            public ODBAXDT_data data74 = new ODBAXDT_data();            public ODBAXDT_data data75 = new ODBAXDT_data();            public ODBAXDT_data data76 = new ODBAXDT_data();            public ODBAXDT_data data77 = new ODBAXDT_data();            public ODBAXDT_data data78 = new ODBAXDT_data();            public ODBAXDT_data data79 = new ODBAXDT_data();            public ODBAXDT_data data80 = new ODBAXDT_data();            public ODBAXDT_data data81 = new ODBAXDT_data();            public ODBAXDT_data data82 = new ODBAXDT_data();            public ODBAXDT_data data83 = new ODBAXDT_data();            public ODBAXDT_data data84 = new ODBAXDT_data();            public ODBAXDT_data data85 = new ODBAXDT_data();            public ODBAXDT_data data86 = new ODBAXDT_data();            public ODBAXDT_data data87 = new ODBAXDT_data();            public ODBAXDT_data data88 = new ODBAXDT_data();            public ODBAXDT_data data89 = new ODBAXDT_data();            public ODBAXDT_data data90 = new ODBAXDT_data();            public ODBAXDT_data data91 = new ODBAXDT_data();            public ODBAXDT_data data92 = new ODBAXDT_data();            public ODBAXDT_data data93 = new ODBAXDT_data();            public ODBAXDT_data data94 = new ODBAXDT_data();            public ODBAXDT_data data95 = new ODBAXDT_data();            public ODBAXDT_data data96 = new ODBAXDT_data();            public ODBAXDT_data data97 = new ODBAXDT_data();            public ODBAXDT_data data98 = new ODBAXDT_data();            public ODBAXDT_data data99 = new ODBAXDT_data();            public ODBAXDT_data data100 = new ODBAXDT_data();            public ODBAXDT_data data101 = new ODBAXDT_data();            public ODBAXDT_data data102 = new ODBAXDT_data();            public ODBAXDT_data data103 = new ODBAXDT_data();            public ODBAXDT_data data104 = new ODBAXDT_data();            public ODBAXDT_data data105 = new ODBAXDT_data();            public ODBAXDT_data data106 = new ODBAXDT_data();            public ODBAXDT_data data107 = new ODBAXDT_data();            public ODBAXDT_data data108 = new ODBAXDT_data();            public ODBAXDT_data data109 = new ODBAXDT_data();            public ODBAXDT_data data110 = new ODBAXDT_data();            public ODBAXDT_data data111 = new ODBAXDT_data();            public ODBAXDT_data data112 = new ODBAXDT_data();            public ODBAXDT_data data113 = new ODBAXDT_data();            public ODBAXDT_data data114 = new ODBAXDT_data();            public ODBAXDT_data data115 = new ODBAXDT_data();            public ODBAXDT_data data116 = new ODBAXDT_data();            public ODBAXDT_data data117 = new ODBAXDT_data();            public ODBAXDT_data data118 = new ODBAXDT_data();            public ODBAXDT_data data119 = new ODBAXDT_data();            public ODBAXDT_data data120 = new ODBAXDT_data();            public ODBAXDT_data data121 = new ODBAXDT_data();            public ODBAXDT_data data122 = new ODBAXDT_data();            public ODBAXDT_data data123 = new ODBAXDT_data();            public ODBAXDT_data data124 = new ODBAXDT_data();            public ODBAXDT_data data125 = new ODBAXDT_data();            public ODBAXDT_data data126 = new ODBAXDT_data();            public ODBAXDT_data data127 = new ODBAXDT_data();            public ODBAXDT_data data128 = new ODBAXDT_data();        }        /* cnc_rdspcss:read constant surface speed data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBCSS        {            public int srpm;       /* order spindle speed */            public int sspm;       /* order constant spindle speed */            public int smax;       /* order maximum spindle speed */        }        /* cnc_rdpdf_drive:read program drive directory */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPDFDRV        {            public short max_num;    /* maximum drive number */            public short dummy;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive1 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive2 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive3 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive4 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive5 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive6 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive7 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive8 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive9 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive10 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive11 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive12 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive13 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive14 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive15 = new string(' ', 12);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string drive16 = new string(' ', 12);        }        /* cnc_rdpdf_inf:read program drive information */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBPDFINF        {            public int used_page;  /* used capacity */            public int all_page;   /* all capacity */            public int used_dir;   /* used directory number */            public int all_dir;    /* all directory number */        }        /* cnc_rdpdf_subdir:read directory (sub directories) */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IDBPDFSDIR        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 212)]            public string path = new string(' ', 212);  /* path name */            public short req_num;    /* entry number */            public short dummy;        }        /* cnc_rdpdf_subdir:read directory (sub directories) */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBPDFSDIR        {            public short sub_exist;    /* existence of sub directory */            public short dummy;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]            public string d_f = new string(' ', 36);  /* path name */        }        /* cnc_rdpdf_alldir:read directory (all files) */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IDBPDFADIR        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 212)]            public string path = new string(' ', 212);  /* path name */            public short req_num;    /* entry number */            public short size_kind;  /* kind of size */            public short type;       /* kind of format */            public short dummy;        }        /* cnc_rdpdf_alldir:read directory (all files) */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBPDFADIR        {            public short data_kind;  /* kinf of data */            public short year;       /* last date and time */            public short mon;        /* last date and time */            public short day;        /* last date and time */            public short hour;       /* last date and time */            public short min;        /* last date and time */            public short sec;        /* last date and time */            public short dummy;            public int dummy2;            public int size;       /* size */            public int attr;       /* attribute */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]            public string d_f = new string(' ', 36);      /* path name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 52)]            public string comment = new string(' ', 52);  /* comment */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string o_time = new string(' ', 12);   /* machining time stamp */        }        /* cnc_rdpdf_subdirn:read file count the directory has */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPDFNFIL        {            public short dir_num;    /* directory */            public short file_num;   /* file */        }        /* cnc_wrpdf_attr:change attribute of program file and directory */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBPDFTDIR        {            public uint slct;       /* selection */            public uint attr;       /* data */        }        /*---------------------------*/        /* CNC: NC file data related */        /*---------------------------*/        /* cnc_rdtofs:read tool offset value */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTOFS        {            public short datano; /* data number */            public short type;   /* data type */            public int data;   /* data */        }        /* cnc_rdtofsr:read tool offset value(area specified) */        /* cnc_wrtofsr:write tool offset value(area specified) */        [StructLayout(LayoutKind.Explicit)]        public class OFS_1        {            [FieldOffset(0),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] m_ofs = new int[5];     /* M Each */            [FieldOffset(0),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] m_ofs_a = new int[5];   /* M-A All */            [FieldOffset(0),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] t_tip = new short[5];   /* T Each, 2-byte */            [FieldOffset(0),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] t_ofs = new int[5];     /* T Each, 4-byte */        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OFS_2        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2 * 5)]            public int[] m_ofs_b = new int[10];  /* M-B All */        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OFS_3        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4 * 5)]            public int[] m_ofs_c = new int[20];   /* M-C All */        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class T_OFS_A        {            public short tip;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public int[] data;        } /* T-A All */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class T_OFS_A_data        {            public T_OFS_A data1 = new T_OFS_A();            public T_OFS_A data2 = new T_OFS_A();            public T_OFS_A data3 = new T_OFS_A();            public T_OFS_A data4 = new T_OFS_A();            public T_OFS_A data5 = new T_OFS_A();        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class T_OFS_B        {            public short tip;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] data;        } /* T-B All */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class T_OFS_B_data        {            public T_OFS_B data1 = new T_OFS_B();            public T_OFS_B data2 = new T_OFS_B();            public T_OFS_B data3 = new T_OFS_B();            public T_OFS_B data4 = new T_OFS_B();            public T_OFS_B data5 = new T_OFS_B();        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTO_1_1        {            public short datano_s;  /* start offset number */            public short type;      /* offset type */            public short datano_e;  /* end offset number */            public OFS_1 ofs = new OFS_1();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTO_1_2        {            public short datano_s;  /* start offset number */            public short type;      /* offset type */            public short datano_e;  /* end offset number */            public OFS_2 ofs = new OFS_2();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTO_1_3        {            public short datano_s;  /* start offset number */            public short type;      /* offset type */            public short datano_e;  /* end offset number */            public OFS_3 ofs = new OFS_3();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTO_2        {            public short datano_s;  /* start offset number */            public short type;      /* offset type */            public short datano_e;  /* end offset number */            public T_OFS_A_data tofsa = new T_OFS_A_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTO_3        {            public short datano_s;  /* start offset number */            public short type;      /* offset type */            public short datano_e;  /* end offset number */            public T_OFS_B_data tofsb = new T_OFS_B_data();        }        /* cnc_rdzofs:read work zero offset value */        /* cnc_wrzofs:write work zero offset value */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBZOFS        {            public short datano;    /* offset NO. */            public short type;      /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] data = new int[MAX_AXIS];       /* data value */        }        /* cnc_rdzofsr:read work zero offset value(area specified) */        /* cnc_wrzofsr:write work zero offset value(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBZOR        {            public short datano_s;  /* start offset number */            public short type;      /* axis number */            public short datano_e;  /* end offset number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * MAX_AXIS)]            public int[] data = new int[7 * MAX_AXIS];      /* offset value */        } /* In case that the number of axes is MAX_AXIS, the number of data is 7 */        /* cnc_rdmsptype:read mesured point value */        /* cnc_wrmsptype:write mesured point value */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMSTP        {            public short datano_s;  /* start offset number */            public short dummy;     /* dummy */            public short datano_e;  /* end offset number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]            public sbyte[] data = new sbyte[7];      /* mesured point value */        }        /* cnc_rdparam:read parameter */        /* cnc_wrparam:write parameter */        /* cnc_rdset:read setting data */        /* cnc_wrset:write setting data */        /* cnc_rdparar:read parameter(area specified) */        /* cnc_wrparas:write parameter(plural specified) */        /* cnc_rdsetr:read setting data(area specified) */        /* cnc_wrsets:write setting data(plural specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REALPRM        {            public int prm_val;     /* data of real parameter */            public int dec_val;     /* decimal point of real parameter */        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class REALPRMS    {        public REALPRM rdata1=new REALPRM();        public REALPRM rdata2=new REALPRM();        public REALPRM rdata3=new REALPRM();        public REALPRM rdata4=new REALPRM();        public REALPRM rdata5=new REALPRM();        public REALPRM rdata6=new REALPRM();        public REALPRM rdata7=new REALPRM();        public REALPRM rdata8=new REALPRM();        public REALPRM rdata9=new REALPRM();        public REALPRM rdata10=new REALPRM();        public REALPRM rdata11=new REALPRM();        public REALPRM rdata12=new REALPRM();        public REALPRM rdata13=new REALPRM();        public REALPRM rdata14=new REALPRM();        public REALPRM rdata15=new REALPRM();        public REALPRM rdata16=new REALPRM();        public REALPRM rdata17=new REALPRM();        public REALPRM rdata18=new REALPRM();        public REALPRM rdata19=new REALPRM();        public REALPRM rdata20=new REALPRM();        public REALPRM rdata21=new REALPRM();        public REALPRM rdata22=new REALPRM();        public REALPRM rdata23=new REALPRM();        public REALPRM rdata24=new REALPRM();    } /* In case that the number of alarm is 24 */#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class REALPRMS    {        public REALPRM rdata1=new REALPRM();        public REALPRM rdata2=new REALPRM();        public REALPRM rdata3=new REALPRM();        public REALPRM rdata4=new REALPRM();        public REALPRM rdata5=new REALPRM();        public REALPRM rdata6=new REALPRM();        public REALPRM rdata7=new REALPRM();        public REALPRM rdata8=new REALPRM();        public REALPRM rdata9=new REALPRM();        public REALPRM rdata10=new REALPRM();    } /* In case that the number of alarm is 10 */#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REALPRMS        {            public REALPRM rdata1 = new REALPRM();            public REALPRM rdata2 = new REALPRM();            public REALPRM rdata3 = new REALPRM();            public REALPRM rdata4 = new REALPRM();            public REALPRM rdata5 = new REALPRM();            public REALPRM rdata6 = new REALPRM();            public REALPRM rdata7 = new REALPRM();            public REALPRM rdata8 = new REALPRM();        } /* In case that the number of alarm is 8 */#endif        [StructLayout(LayoutKind.Explicit)]        public class IODBPSD_1        {            [FieldOffset(0)]            public short datano;    /* data number */            [FieldOffset(2)]            public short type;      /* axis number */            [FieldOffset(4)]            public byte cdata;     /* parameter / setting data */            [FieldOffset(4)]            public short idata;            [FieldOffset(4)]            public int ldata;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSD_2        {            public short datano;    /* data number */            public short type;      /* axis number */            public REALPRM rdata = new REALPRM();        }        [StructLayout(LayoutKind.Explicit)]        public class IODBPSD_3        {            [FieldOffset(0)]            public short datano;    /* data number */            [FieldOffset(2)]            public short type;      /* axis number */            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas = new byte[MAX_AXIS];            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas = new short[MAX_AXIS];            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas = new int[MAX_AXIS];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSD_4        {            public short datano;    /* data number */            public short type;      /* axis number */            public REALPRMS rdatas = new REALPRMS();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSD_A        {            public IODBPSD_1 data1 = new IODBPSD_1();            public IODBPSD_1 data2 = new IODBPSD_1();            public IODBPSD_1 data3 = new IODBPSD_1();            public IODBPSD_1 data4 = new IODBPSD_1();            public IODBPSD_1 data5 = new IODBPSD_1();            public IODBPSD_1 data6 = new IODBPSD_1();            public IODBPSD_1 data7 = new IODBPSD_1();        } /* (sample) must be modified */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSD_B        {            public IODBPSD_2 data1 = new IODBPSD_2();            public IODBPSD_2 data2 = new IODBPSD_2();            public IODBPSD_2 data3 = new IODBPSD_2();            public IODBPSD_2 data4 = new IODBPSD_2();            public IODBPSD_2 data5 = new IODBPSD_2();            public IODBPSD_2 data6 = new IODBPSD_2();            public IODBPSD_2 data7 = new IODBPSD_2();        } /* (sample) must be modified */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSD_C        {            public IODBPSD_3 data1 = new IODBPSD_3();            public IODBPSD_3 data2 = new IODBPSD_3();            public IODBPSD_3 data3 = new IODBPSD_3();            public IODBPSD_3 data4 = new IODBPSD_3();            public IODBPSD_3 data5 = new IODBPSD_3();            public IODBPSD_3 data6 = new IODBPSD_3();            public IODBPSD_3 data7 = new IODBPSD_3();        } /* (sample) must be modified */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSD_D        {            public IODBPSD_4 data1 = new IODBPSD_4();            public IODBPSD_4 data2 = new IODBPSD_4();            public IODBPSD_4 data3 = new IODBPSD_4();            public IODBPSD_4 data4 = new IODBPSD_4();            public IODBPSD_4 data5 = new IODBPSD_4();            public IODBPSD_4 data6 = new IODBPSD_4();            public IODBPSD_4 data7 = new IODBPSD_4();        } /* (sample) must be modified */        /* cnc_rdparam_ext:read parameters */        /* cnc_rddiag_ext:read diagnosis data */        /* cnc_start_async_wrparam:async parameter write start */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPRMNO        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] prm = new int[10];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPRM_data        {            public int prm_val;   /* parameter / setting data */            public int dec_val;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPRM1        {            public IODBPRM_data data1 = new IODBPRM_data();            public IODBPRM_data data2 = new IODBPRM_data();            public IODBPRM_data data3 = new IODBPRM_data();            public IODBPRM_data data4 = new IODBPRM_data();            public IODBPRM_data data5 = new IODBPRM_data();            public IODBPRM_data data6 = new IODBPRM_data();            public IODBPRM_data data7 = new IODBPRM_data();            public IODBPRM_data data8 = new IODBPRM_data();            public IODBPRM_data data9 = new IODBPRM_data();            public IODBPRM_data data10 = new IODBPRM_data();            public IODBPRM_data data11 = new IODBPRM_data();            public IODBPRM_data data12 = new IODBPRM_data();            public IODBPRM_data data13 = new IODBPRM_data();            public IODBPRM_data data14 = new IODBPRM_data();            public IODBPRM_data data15 = new IODBPRM_data();            public IODBPRM_data data16 = new IODBPRM_data();            public IODBPRM_data data17 = new IODBPRM_data();            public IODBPRM_data data18 = new IODBPRM_data();            public IODBPRM_data data19 = new IODBPRM_data();            public IODBPRM_data data20 = new IODBPRM_data();            public IODBPRM_data data21 = new IODBPRM_data();            public IODBPRM_data data22 = new IODBPRM_data();            public IODBPRM_data data23 = new IODBPRM_data();            public IODBPRM_data data24 = new IODBPRM_data();            public IODBPRM_data data25 = new IODBPRM_data();            public IODBPRM_data data26 = new IODBPRM_data();            public IODBPRM_data data27 = new IODBPRM_data();            public IODBPRM_data data28 = new IODBPRM_data();            public IODBPRM_data data29 = new IODBPRM_data();            public IODBPRM_data data30 = new IODBPRM_data();            public IODBPRM_data data31 = new IODBPRM_data();            public IODBPRM_data data32 = new IODBPRM_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPRM2        {            public int datano;    /* data number */            public short type;      /* data type */            public short axis;      /* axis information */            public short info;      /* misc information */            public short unit;      /* unit information */            public IODBPRM1 data = new IODBPRM1();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPRM        {            public IODBPRM2 prm1 = new IODBPRM2();            public IODBPRM2 prm2 = new IODBPRM2();            public IODBPRM2 prm3 = new IODBPRM2();            public IODBPRM2 prm4 = new IODBPRM2();            public IODBPRM2 prm5 = new IODBPRM2();            public IODBPRM2 prm6 = new IODBPRM2();            public IODBPRM2 prm7 = new IODBPRM2();            public IODBPRM2 prm8 = new IODBPRM2();            public IODBPRM2 prm9 = new IODBPRM2();            public IODBPRM2 prm10 = new IODBPRM2();        } /* In case that the number of alarm is 10 */        /* cnc_rdpitchr:read pitch error compensation data(area specified) */        /* cnc_wrpitchr:write pitch error compensation data(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPI        {            public short datano_s;  /* start pitch number */            public short dummy;     /* dummy */            public short datano_e;  /* end pitch number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public sbyte[] data = new sbyte[5];    /* offset value */        } /* In case that the number of data is 5 */        /* cnc_rdmacro:read custom macro variable */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBM        {            public short datano;    /* variable number */            public short dummy;     /* dummy */            public int mcr_val;   /* macro variable */            public short dec_val;   /* decimal point */        }        /* cnc_rdmacror:read custom macro variables(area specified) */        /* cnc_wrmacror:write custom macro variables(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMR_data        {            public int mcr_val;   /* macro variable */            public short dec_val;   /* decimal point */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMR1        {            public IODBMR_data data1 = new IODBMR_data();            public IODBMR_data data2 = new IODBMR_data();            public IODBMR_data data3 = new IODBMR_data();            public IODBMR_data data4 = new IODBMR_data();            public IODBMR_data data5 = new IODBMR_data();        }  /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMR        {            public short datano_s;  /* start macro number */            public short dummy;     /* dummy */            public short datano_e;  /* end macro number */            public IODBMR1 data = new IODBMR1();        }        /* cnc_rdpmacro:read P code macro variable */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPM        {            public int datano;    /* variable number */            public short dummy;     /* dummy */            public int mcr_val;   /* macro variable */            public short dec_val;   /* decimal point */        }        /* cnc_rdpmacror:read P code macro variables(area specified) */        /* cnc_wrpmacror:write P code macro variables(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPR_data        {            public int mcr_val;   /* macro variable */            public short dec_val;   /* decimal point */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPR1        {            public IODBPR_data data1 = new IODBPR_data();            public IODBPR_data data2 = new IODBPR_data();            public IODBPR_data data3 = new IODBPR_data();            public IODBPR_data data4 = new IODBPR_data();            public IODBPR_data data5 = new IODBPR_data();        }  /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPR        {            public int datano_s;  /* start macro number */            public short dummy;     /* dummy */            public int datano_e;  /* end macro number */            public IODBPR1 data = new IODBPR1();        }        /* cnc_rdtofsinfo:read tool offset information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLINF        {            public short ofs_type;            public short use_no;        }        /* cnc_rdtofsinfo2:read tool offset information(2) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLINF2        {            public short ofs_type;            public short use_no;            public short ofs_enable;        }        /* cnc_rdmacroinfo:read custom macro variable information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMVINF        {            public short use_no1;            public short use_no2;        }        /* cnc_rdpmacroinfo:read P code macro variable information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMINF        {            public short use_no1;#if PCD_UWORD        public ushort  use_no2;#else            public short use_no2;#endif            public short v2_type;        }        /* cnc_tofs_rnge:read validity of tool offset */        /* cnc_zofs_rnge:read validity of work zero offset */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDATRNG        {            public int data_min;   /* lower limit */            public int data_max;   /* upper limit */            public int status;     /* status of setting */        }        /* cnc_rdhsprminfo:read the information for function cnc_rdhsparam() */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class HSPINFO_data        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data1 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data2 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data3 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data4 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data5 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data6 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data7 = new byte[16];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] data8 = new byte[16];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class HSPINFO        {            public HSPINFO_data prminfo1 = new HSPINFO_data();            public HSPINFO_data prminfo2 = new HSPINFO_data();            public HSPINFO_data prminfo3 = new HSPINFO_data();            public HSPINFO_data prminfo4 = new HSPINFO_data();            public HSPINFO_data prminfo5 = new HSPINFO_data();            public HSPINFO_data prminfo6 = new HSPINFO_data();            public HSPINFO_data prminfo7 = new HSPINFO_data();            public HSPINFO_data prminfo8 = new HSPINFO_data();            public HSPINFO_data prminfo9 = new HSPINFO_data();            public HSPINFO_data prminfo10 = new HSPINFO_data();        }        /* cnc_rdhsparam:read parameters at the high speed */        [StructLayout(LayoutKind.Explicit)]        public class HSPDATA_1        {            [FieldOffset(0),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas1 = new byte[MAX_AXIS];            [FieldOffset(4 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas2 = new byte[MAX_AXIS];            [FieldOffset(4 * 2 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas3 = new byte[MAX_AXIS];            [FieldOffset(4 * 3 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas4 = new byte[MAX_AXIS];            [FieldOffset(4 * 4 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas5 = new byte[MAX_AXIS];            [FieldOffset(4 * 5 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas6 = new byte[MAX_AXIS];            [FieldOffset(4 * 6 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas7 = new byte[MAX_AXIS];            [FieldOffset(4 * 7 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas8 = new byte[MAX_AXIS];            [FieldOffset(4 * 8 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas9 = new byte[MAX_AXIS];            [FieldOffset(4 * 9 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas10 = new byte[MAX_AXIS];        }        [StructLayout(LayoutKind.Explicit)]        public class HSPDATA_2        {            [FieldOffset(0),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas1 = new short[MAX_AXIS];            [FieldOffset(2 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas2 = new short[MAX_AXIS];            [FieldOffset(2 * 2 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas3 = new short[MAX_AXIS];            [FieldOffset(2 * 3 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas4 = new short[MAX_AXIS];            [FieldOffset(2 * 4 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas5 = new short[MAX_AXIS];            [FieldOffset(2 * 5 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas6 = new short[MAX_AXIS];            [FieldOffset(2 * 6 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas7 = new short[MAX_AXIS];            [FieldOffset(2 * 7 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas8 = new short[MAX_AXIS];            [FieldOffset(2 * 8 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas9 = new short[MAX_AXIS];            [FieldOffset(2 * 9 * MAX_AXIS),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas10 = new short[MAX_AXIS];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class HSPDATA_3        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas1 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas2 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas3 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas4 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas5 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas6 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas7 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas8 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas9 = new int[MAX_AXIS];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas10 = new int[MAX_AXIS];        }        /*----------------------------------------*/        /* CNC: Tool life management data related */        /*----------------------------------------*/        /* cnc_rdgrpid:read tool life management data(tool group number) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLIFE1        {            public short dummy; /* dummy */            public short type;  /* data type */            public int data;  /* data */        }        /// <summary>        /// 读取刀片组的全部数量        /// </summary>        /* cnc_rdngrp:read tool life management data(number of tool groups) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLIFE2        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;  /* dummy */            public int data;   /* data */        }        /* cnc_rdntool:read tool life management data(number of tools) */        /* cnc_rdlife:read tool life management data(tool life) */        /* cnc_rdcount:read tool life management data(tool lift counter) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLIFE3        {            public short datano;    /* data number */            public short dummy;     /* dummy */            public int data;      /* data */        }        /// <summary>        /// 刀具的数量        /// </summary>        /* cnc_rd1length:read tool life management data(tool length number-1) */        /* cnc_rd2length:read tool life management data(tool length number-2) */        /* cnc_rd1radius:read tool life management data(cutter compensation no.-1) */        /* cnc_rd2radius:read tool life management data(cutter compensation no.-2) */        /* cnc_t1info:read tool life management data(tool information-1) */        /* cnc_t2info:read tool life management data(tool information-2) */        /* cnc_toolnum:read tool life management data(tool number) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLIFE4        {            public short datano;    /* data number */            public short type;      /* data type */            public int data;      /* data */        }        /// <summary>        /// 读取刀片组的序号        /// </summary>        /* cnc_rdgrpid2:read tool life management data(tool group number) 2 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLIFE5        {            public int dummy; /* dummy */            public int type;  /* data type */            public int data;  /* data */        }        /* cnc_rdtoolrng:read tool life management data(tool number, tool life, tool life counter)(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTR_data        {            public int ntool;     /* tool number */            public int life;      /* tool life */            public int count;     /* tool life counter */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTR1        {            public IODBTR_data data1 = new IODBTR_data();            public IODBTR_data data2 = new IODBTR_data();            public IODBTR_data data3 = new IODBTR_data();            public IODBTR_data data4 = new IODBTR_data();            public IODBTR_data data5 = new IODBTR_data();        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTR        {            public short datano_s;  /* start group number */            public short dummy;     /* dummy */            public short datano_e;  /* end group number */            public IODBTR1 data = new IODBTR1();        }        /* cnc_rdtoolgrp:read tool life management data(all data within group) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTG_data        {            public int tuse_num;      /* tool number */            public int tool_num;      /* tool life */            public int length_num;    /* tool life counter */            public int radius_num;    /* tool life counter */            public int tinfo;         /* tool life counter */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTG1        {            public ODBTG_data data1 = new ODBTG_data();            public ODBTG_data data2 = new ODBTG_data();            public ODBTG_data data3 = new ODBTG_data();            public ODBTG_data data4 = new ODBTG_data();            public ODBTG_data data5 = new ODBTG_data();        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTG        {            public short grp_num;   /* start group number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy;  /* dummy */            public int ntool;     /* tool number */            public int life;      /* tool life */            public int count;     /* tool life counter */            public ODBTG1 data = new ODBTG1();        }        /* cnc_wrcountr:write tool life management data(tool life counter) (area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBWRC_data        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] dummy;     /* dummy */            public int count;     /* tool life counter */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBWRC1        {            public IDBWRC_data data1 = new IDBWRC_data();            public IDBWRC_data data2 = new IDBWRC_data();            public IDBWRC_data data3 = new IDBWRC_data();            public IDBWRC_data data4 = new IDBWRC_data();            public IDBWRC_data data5 = new IDBWRC_data();        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBWRC        {            public short datano_s;  /* start group number */            public short dummy;     /* dummy */            public short datano_e;  /* end group number */            public IDBWRC1 data = new IDBWRC1();        }        /* cnc_rdusegrpid:read tool life management data(used tool group number) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBUSEGR        {            public short datano; /* dummy */            public short type;   /* dummy */            public int next;   /* next use group number */            public int use;    /* using group number */            public int slct;   /* selecting group number */        }        /* cnc_rdmaxgrp:read tool life management data(max. number of tool groups) */        /* cnc_rdmaxtool:read tool life management data(maximum number of tool within group) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBLFNO        {            public short datano; /* dummy */            public short type;   /* dummy */            public short data;   /* number of data */        }        /* cnc_rdusetlno:read tool life management data(used tool no within group) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLUSE        {            public short s_grp;  /* start group number */            public short dummy;  /* dummy */            public short e_grp;  /* end group number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] data;   /* tool using number */        } /* In case that the number of group is 5 */        /* cnc_rd1tlifedata:read tool life management data(tool data1) */        /* cnc_rd2tlifedata:read tool life management data(tool data2) */        /* cnc_wr1tlifedata:write tool life management data(tool data1) */        /* cnc_wr2tlifedata:write tool life management data(tool data2) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTD        {            public short datano;     /* tool group number */            public short type;       /* tool using number */            public int tool_num;   /* tool number */            public int h_code;     /* H code */            public int d_code;     /* D code */            public int tool_inf;   /* tool information */        }        /* cnc_rd1tlifedat2:read tool life management data(tool data1) 2 */        /* cnc_wr1tlifedat2:write tool life management data(tool data1) 2 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTD2        {            public short datano;     /* tool group number */            public short dummy;      /* dummy */            public int type;       /* tool using number */            public int tool_num;   /* tool number */            public int h_code;     /* H code */            public int d_code;     /* D code */            public int tool_inf;   /* tool information */        }        /* cnc_rdgrpinfo:read tool life management data(tool group information) */        /* cnc_wrgrpinfo:write tool life management data(tool group information) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTGI_data        {            public int n_tool;         /* number of tool */            public int count_value;    /* tool life */            public int counter;        /* tool life counter */            public int count_type;     /* tool life counter type */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTGI1        {            public IODBTGI_data data1 = new IODBTGI_data();            public IODBTGI_data data2 = new IODBTGI_data();            public IODBTGI_data data3 = new IODBTGI_data();            public IODBTGI_data data4 = new IODBTGI_data();            public IODBTGI_data data5 = new IODBTGI_data();        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTGI        {            public short s_grp;  /* start group number */            public short dummy;  /* dummy */            public short e_grp;  /* end group number */            public IODBTGI1 data = new IODBTGI1();        }        /* cnc_rdgrpinfo2:read tool life management data(tool group information 2) */        /* cnc_wrgrpinfo2:write tool life management data(tool group information 2) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTGI2        {            public short s_grp;      /* start group number */            public short dummy;      /* dummy */            public short e_grp;      /* end group number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] opt_grpno = new int[5];  /* optional group number of tool */        } /* In case that the number of group is 5 */        /* cnc_rdgrpinfo3:read tool life management data(tool group information 3) */        /* cnc_wrgrpinfo3:write tool life management data(tool group information 3) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTGI3        {            public short s_grp;      /* start group number */            public short dummy;      /* dummy */            public short e_grp;      /* end group number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] life_rest = new int[5];  /* tool life rest count */        } /* In case that the number of group is 5 */        /* cnc_rdgrpinfo4:read tool life management data(tool group information 4) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTGI4        {            public short grp_no;            public int n_tool;            public int count_value;            public int counter;            public int count_type;            public int opt_grpno;            public int life_rest;        }        /* cnc_instlifedt:insert tool life management data(tool data) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBITD        {            public short datano; /* tool group number */            public short type;   /* tool using number */            public int data;   /* tool number */        }        /* cnc_rdtlinfo:read tool life management data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBTLINFO        {            public int max_group;  /* maximum number of tool groups */            public int max_tool;   /* maximum number of tool within group */            public int max_minute; /* maximum number of life count (minutes) */            public int max_cycle;  /* maximum number of life count (cycles) */        }        /* cnc_rdtlusegrp:read tool life management data(used tool group number) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBUSEGRP        {            public int next;       /* next use group number */            public int use;        /* using group number */            public int slct;       /* selecting group number */            public int opt_next;   /* next use optional group number */            public int opt_use;    /* using optional group number */            public int opt_slct;   /* selecting optional group number */        }        /* cnc_rdtlgrp:read tool life management data(tool group information 2) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLGRP_data        {            public int ntool;      /* number of all tool */            public int nfree;      /* number of free tool */            public int life;       /* tool life */            public int count;      /* tool life counter */            public int use_tool;   /* using tool number */            public int opt_grpno;  /* optional group number */            public int life_rest;  /* tool life rest count */            public short rest_sig;   /* tool life rest signal */            public short count_type; /* tool life counter type */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLGRP        {            public IODBTLGRP_data data1 = new IODBTLGRP_data();            public IODBTLGRP_data data2 = new IODBTLGRP_data();            public IODBTLGRP_data data3 = new IODBTLGRP_data();            public IODBTLGRP_data data4 = new IODBTLGRP_data();            public IODBTLGRP_data data5 = new IODBTLGRP_data();        } /* In case that the number of group is 5 */        /* cnc_rdtltool:read tool life management data (tool data1) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLTOOL_data        {            public int tool_num;   /* tool number */            public int h_code;     /* H code */            public int d_code;     /* D code */            public int tool_inf;   /* tool information */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLTOOL        {            public IODBTLTOOL_data data1 = new IODBTLTOOL_data();            public IODBTLTOOL_data data2 = new IODBTLTOOL_data();            public IODBTLTOOL_data data3 = new IODBTLTOOL_data();            public IODBTLTOOL_data data4 = new IODBTLTOOL_data();            public IODBTLTOOL_data data5 = new IODBTLTOOL_data();        } /* In case that the number of group is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBEXGP_data        {            public int grp_no;     /* group number */            public int opt_grpno;  /* optional group number */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBEXGP        {            public ODBEXGP_data data1 = new ODBEXGP_data();            public ODBEXGP_data data2 = new ODBEXGP_data();            public ODBEXGP_data data3 = new ODBEXGP_data();            public ODBEXGP_data data4 = new ODBEXGP_data();            public ODBEXGP_data data5 = new ODBEXGP_data();            public ODBEXGP_data data6 = new ODBEXGP_data();            public ODBEXGP_data data7 = new ODBEXGP_data();            public ODBEXGP_data data8 = new ODBEXGP_data();            public ODBEXGP_data data9 = new ODBEXGP_data();            public ODBEXGP_data data10 = new ODBEXGP_data();            public ODBEXGP_data data11 = new ODBEXGP_data();            public ODBEXGP_data data12 = new ODBEXGP_data();            public ODBEXGP_data data13 = new ODBEXGP_data();            public ODBEXGP_data data14 = new ODBEXGP_data();            public ODBEXGP_data data15 = new ODBEXGP_data();            public ODBEXGP_data data16 = new ODBEXGP_data();            public ODBEXGP_data data17 = new ODBEXGP_data();            public ODBEXGP_data data18 = new ODBEXGP_data();            public ODBEXGP_data data19 = new ODBEXGP_data();            public ODBEXGP_data data20 = new ODBEXGP_data();            public ODBEXGP_data data21 = new ODBEXGP_data();            public ODBEXGP_data data22 = new ODBEXGP_data();            public ODBEXGP_data data23 = new ODBEXGP_data();            public ODBEXGP_data data24 = new ODBEXGP_data();            public ODBEXGP_data data25 = new ODBEXGP_data();            public ODBEXGP_data data26 = new ODBEXGP_data();            public ODBEXGP_data data27 = new ODBEXGP_data();            public ODBEXGP_data data28 = new ODBEXGP_data();            public ODBEXGP_data data29 = new ODBEXGP_data();            public ODBEXGP_data data30 = new ODBEXGP_data();            public ODBEXGP_data data31 = new ODBEXGP_data();            public ODBEXGP_data data32 = new ODBEXGP_data();        }        /*-----------------------------------*/        /* CNC: Tool management data related */        /*-----------------------------------*/        /* cnc_regtool:new registration of tool management data */        /* cnc_rdtool:lead of tool management data */        /* cnc_wrtool:write of tool management data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMNG_data        {            public int T_code;            public int life_count;            public int max_life;            public int rest_life;            public byte life_stat;            public byte cust_bits;            public ushort tool_info;            public short H_code;            public short D_code;            public int spindle_speed;            public int feedrate;            public short magazine;            public short pot;            public short gno;            public short m_ofs;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public int[] reserved = new int[4];            public int custom1;            public int custom2;            public int custom3;            public int custom4;            public int custom5;            public int custom6;            public int custom7;            public int custom8;            public int custom9;            public int custom10;            public int custom11;            public int custom12;            public int custom13;            public int custom14;            public int custom15;            public int custom16;            public int custom17;            public int custom18;            public int custom19;            public int custom20;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMNG        {            public IODBTLMNG_data data1 = new IODBTLMNG_data();            public IODBTLMNG_data data2 = new IODBTLMNG_data();            public IODBTLMNG_data data3 = new IODBTLMNG_data();            public IODBTLMNG_data data4 = new IODBTLMNG_data();            public IODBTLMNG_data data5 = new IODBTLMNG_data();        } /* In case that the number of group is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMNG_F2_data        {            public int T_code;            public int life_count;            public int max_life;            public int rest_life;            public byte life_stat;            public byte cust_bits;            public ushort tool_info;            public short H_code;            public short D_code;            public int spindle_speed;            public int feedrate;            public short magazine;            public short pot;            public short G_code;            public short W_code;            public short gno;            public short m_ofs;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public int[] reserved;            public int custom1;            public int custom2;            public int custom3;            public int custom4;            public int custom5;            public int custom6;            public int custom7;            public int custom8;            public int custom9;            public int custom10;            public int custom11;            public int custom12;            public int custom13;            public int custom14;            public int custom15;            public int custom16;            public int custom17;            public int custom18;            public int custom19;            public int custom20;            public int custom21;            public int custom22;            public int custom23;            public int custom24;            public int custom25;            public int custom26;            public int custom27;            public int custom28;            public int custom29;            public int custom30;            public int custom31;            public int custom32;            public int custom33;            public int custom34;            public int custom35;            public int custom36;            public int custom37;            public int custom38;            public int custom39;            public int custom40;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMNG_F2        {            public IODBTLMNG_F2_data data1 = new IODBTLMNG_F2_data();            public IODBTLMNG_F2_data data2 = new IODBTLMNG_F2_data();            public IODBTLMNG_F2_data data3 = new IODBTLMNG_F2_data();            public IODBTLMNG_F2_data data4 = new IODBTLMNG_F2_data();            public IODBTLMNG_F2_data data5 = new IODBTLMNG_F2_data();        } /* In case that the number of group is 5 */        /* cnc_wrtool2:write of individual data of tool management data */        [StructLayout(LayoutKind.Explicit)]        public class IDBTLM_item        {            [FieldOffset(0)]            public sbyte data1;            [FieldOffset(0)]            public short data2;            [FieldOffset(0)]            public int data4;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBTLM        {            public short data_id;            public IDBTLM_item item = new IDBTLM_item();        }        /* cnc_regmagazine:new registration of magazine management data */        /* cnc_rdmagazine:lead of magazine management data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMAG_data        {            public short magazine;            public short pot;            public short tool_index;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMAG        {            public IODBTLMAG_data data1 = new IODBTLMAG_data();            public IODBTLMAG_data data2 = new IODBTLMAG_data();            public IODBTLMAG_data data3 = new IODBTLMAG_data();            public IODBTLMAG_data data4 = new IODBTLMAG_data();            public IODBTLMAG_data data5 = new IODBTLMAG_data();        } /* In case that the number of group is 5 */        /* cnc_delmagazine:deletion of magazine management data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMAG2_data        {            public short magazine;            public short pot;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLMAG2        {            public IODBTLMAG2_data data1 = new IODBTLMAG2_data();            public IODBTLMAG2_data data2 = new IODBTLMAG2_data();            public IODBTLMAG2_data data3 = new IODBTLMAG2_data();            public IODBTLMAG2_data data4 = new IODBTLMAG2_data();            public IODBTLMAG2_data data5 = new IODBTLMAG2_data();        } /* In case that the number of group is 5 */        /*-------------------------------------*/        /* CNC: Operation history data related */        /*-------------------------------------*/        /* cnc_rdophistry:read operation history data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_ALM        {            public short rec_type;   /* record type */            public short alm_grp;    /* alarm group */            public short alm_no;     /* alarm number */            public sbyte axis_no;    /* axis number */            public sbyte dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MDI        {            public short rec_type;   /* record type */            public byte key_code;   /* key code */            public byte pw_flag;    /* power on flag */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public sbyte[] dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_SGN        {            public short rec_type;   /* record type */            public sbyte sig_name;   /* signal name */            public byte sig_old;    /* old signal bit pattern */            public byte sig_new;    /* new signal bit pattern */            public sbyte dummy;            public short sig_no;     /* signal number */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_DATE        {            public short rec_type;   /* record type */            public sbyte year;       /* year */            public sbyte month;      /* month */            public sbyte day;        /* day */            public sbyte pw_flag;    /* power on flag */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public sbyte[] dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_TIME        {            public short rec_type;   /* record flag */            public sbyte hour;       /* hour */            public sbyte minute;     /* minute */            public sbyte second;     /* second */            public sbyte pw_flag;    /* power on flag */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public sbyte[] dummy;        }        [StructLayout(LayoutKind.Explicit, Size = 8)]        public class ODBHIS_data        {            // record type            [FieldOffset(0)]            public short rec_type;   /* record type */            // alarm record            [FieldOffset(0)]            public short alm_rec_type;   /* record type */            [FieldOffset(2)]            public short alm_alm_grp;    /* alarm group */            [FieldOffset(4)]            public short alm_alm_no;     /* alarm number */            [FieldOffset(6)]            public sbyte alm_axis_no;    /* axis number */            [FieldOffset(7)]            public sbyte alm_dummy;            // mdi record            [FieldOffset(0)]            public short mdi_rec_type;   /* record type */            [FieldOffset(2)]            public byte mdi_key_code;   /* key code */            [FieldOffset(3)]            public byte mdi_pw_flag;    /* power on flag */            [FieldOffset(4)]            public sbyte mdi_dummy1;            [FieldOffset(5)]            public sbyte mdi_dummy2;            [FieldOffset(6)]            public sbyte mdi_dummy3;            [FieldOffset(7)]            public sbyte mdi_dummy4;            // sign record            [FieldOffset(0)]            public short sgn_rec_type;   /* record type */            [FieldOffset(2)]            public sbyte sgn_sig_name;   /* signal name */            [FieldOffset(3)]            public byte sgn_sig_old;    /* old signal bit pattern */            [FieldOffset(4)]            public byte sgn_sig_new;    /* new signal bit pattern */            [FieldOffset(5)]            public sbyte sgn_dummy;            [FieldOffset(6)]            public short sgn_sig_no;     /* signal number */            // date record            [FieldOffset(0)]            public short date_rec_type;   /* record type */            [FieldOffset(2)]            public sbyte date_year;       /* year */            [FieldOffset(3)]            public sbyte date_month;      /* month */            [FieldOffset(4)]            public sbyte date_day;        /* day */            [FieldOffset(5)]            public sbyte date_pw_flag;    /* power on flag */            [FieldOffset(6)]            public sbyte date_dummy1;            [FieldOffset(7)]            public sbyte date_dummy2;            // time record            [FieldOffset(0)]            public short time_rec_type;   /* record flag */            [FieldOffset(2)]            public sbyte time_hour;       /* hour */            [FieldOffset(3)]            public sbyte time_minute;     /* minute */            [FieldOffset(4)]            public sbyte time_second;     /* second */            [FieldOffset(5)]            public sbyte time_pw_flag;    /* power on flag */            [FieldOffset(6)]            public sbyte time_dummy1;            [FieldOffset(7)]            public sbyte time_dummy2;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHIS1        {            public ODBHIS_data data1 = new ODBHIS_data();            public ODBHIS_data data2 = new ODBHIS_data();            public ODBHIS_data data3 = new ODBHIS_data();            public ODBHIS_data data4 = new ODBHIS_data();            public ODBHIS_data data5 = new ODBHIS_data();            public ODBHIS_data data6 = new ODBHIS_data();            public ODBHIS_data data7 = new ODBHIS_data();            public ODBHIS_data data8 = new ODBHIS_data();            public ODBHIS_data data9 = new ODBHIS_data();            public ODBHIS_data data10 = new ODBHIS_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHIS        {            public ushort s_no;   /* start number */            public short type;   /* dummy */            public ushort e_no;   /* end number */            public ODBHIS1 data = new ODBHIS1();        }        /* cnc_rdophistry2:read operation history data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MDI2        {            public byte key_code;   /* key code */            public byte pw_flag;    /* power on flag */            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MDI2_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_MDI2 data = new REC_MDI2();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_SGN2        {            public short sig_name;   /* signal name */            public short sig_no;     /* signal number */            public byte sig_old;    /* old signal bit pattern */            public byte sig_new;    /* new signal bit pattern */            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_SGN2_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_SGN2 data = new REC_SGN2();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_ALM2        {            public short alm_grp;    /* alarm group */            public short alm_no;     /* alarm number */            public short axis_no;    /* axis number */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_ALM2_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_ALM2 data = new REC_ALM2();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_DATE2        {            public short evnt_type;  /* event type */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_DATE2_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_DATE2 data = new REC_DATE2();        }        [StructLayout(LayoutKind.Explicit)]        public class ODBOPHIS        {            [FieldOffset(0)]            public REC_MDI2_data rec_mdi = new REC_MDI2_data();            [FieldOffset(0)]            public REC_SGN2_data rec_sgn = new REC_SGN2_data();            [FieldOffset(0)]            public REC_ALM2_data rec_alm = new REC_ALM2_data();            [FieldOffset(0)]            public REC_DATE2_data rec_date = new REC_DATE2_data();        }        /* cnc_rdophistry4:read operation history data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MDI4        {            public char key_code;   /* key code */            public char pw_flag;    /* power on flag */            public short pth_no;     /* path index */            public short ex_flag;    /* kxternal key flag */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MDI4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_MDI4 data = new REC_MDI4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_SGN4        {            public short sig_name;   /* signal name */            public short sig_no;     /* signal number */            public char sig_old;    /* old signal bit pattern */            public char sig_new;    /* new signal bit pattern */            public short pmc_no;     /* pmc index */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_SGN4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_SGN4 data = new REC_SGN4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_ALM4        {            public short alm_grp;    /* alarm group */            public short alm_no;     /* alarm number */            public short axis_no;    /* axis number */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short pth_no;     /* path index */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_ALM4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_ALM4 data = new REC_ALM4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_DATE4        {            public short evnt_type;  /* event type */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_DATE4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_DATE4 data = new REC_DATE4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_IAL4        {            public short alm_grp;    /* alarm group */            public short alm_no;     /* alarm number */            public short axis_no;    /* axis number */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short pth_no;     /* path index */            public short sys_alm;    /* sys alarm */            public short dsp_flg;    /* message dsp flag */            public short axis_num;   /* axis num */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] g_modal;    /* G code Modal */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public char[] g_dp;       /* #7:1 Block */            /* #6乣#0 dp*/            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] a_modal;    /* B,D,E,F,H,M,N,O,S,T code Modal */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public char[] a_dp;       /* #7:1 Block */            /* 6乣#0 dp*/            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public int[] abs_pos;    /* Abs pos */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public char[] abs_dp;     /* Abs dp  */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public int[] mcn_pos;    /* Mcn pos */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public char[] mcn_dp;     /* Mcn dp  */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_IAL4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_IAL4 data = new REC_IAL4();        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class REC_MAL4        {            public short alm_grp;    /* alarm group */            public short alm_no;     /* alarm number */            public short axis_no;    /* axis number */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short pth_no;     /* path index */            public short sys_alm;    /* sys alarm */            public short dsp_flg;    /* message dsp flag */            public short axis_num;   /* axis num */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]            public string alm_msg = new string(' ', 64);  /* alarm message */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] g_modal;    /* G code Modal */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public char[] g_dp;       /* #7:1 Block */            /* #6乣#0 dp*/            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] a_modal;    /* B,D,E,F,H,M,N,O,S,T code Modal */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public char[] a_dp;       /* #7:1 Block */            /* 6乣#0 dp*/            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public int[] abs_pos;    /* Abs pos */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public char[] abs_dp;     /* Abs dp  */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public int[] mcn_pos;    /* Mcn pos */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public char[] mcn_dp;     /* Mcn dp  */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MAL4_data        {            public short rec_len;     /* length */            public short rec_type;    /* record type */            public REC_MAL4 data = new REC_MAL4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_OPM4        {            public short dsp_flg;     /* Dysplay flag(ON/OFF) */            public short om_no;       /* message number */            public short year;        /* year */            public short month;       /* month */            public short day;         /* day */            public short hour;        /* Hour */            public short minute;      /* Minute */            public short second;      /* Second */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public string ope_msg = new string(' ', 256);  /* Messege */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_OPM4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_OPM4 data = new REC_OPM4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_OFS4        {            public short ofs_grp;    /* Tool offset group */            public short ofs_no;     /* Tool offset number */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short pth_no;     /* path index */            public int ofs_old;    /* old data */            public int ofs_new;    /* new data */            public short old_dp;     /* old data decimal point */            public short new_dp;     /* new data decimal point */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_OFS4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_OFS4 data = new REC_OFS4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_PRM4        {            public short prm_grp;    /* paramater group */            public short prm_num;    /* paramater number */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short prm_len;    /* paramater data length */            public int prm_no;     /* paramater no */            public int prm_old;    /* old data */            public int prm_new;    /* new data */            public short old_dp;     /* old data decimal point */            public short new_dp;     /* new data decimal point */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_PRM4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_PRM4 data = new REC_PRM4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_WOF4        {            public short ofs_grp;    /* Work offset group */            public short ofs_no;     /* Work offset number */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short pth_no;     /* path index */            public short axis_no;    /* path axis num $*/            public short dummy;            public int ofs_old;    /* old data */            public int ofs_new;    /* new data */            public short old_dp;     /* old data decimal point */            public short new_dp;     /* new data decimal point */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_WOF4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_WOF4 data = new REC_WOF4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MAC4        {            public short mac_no;     /* macro val number */            public short hour;       /* hour */            public short minute;     /* minute */            public short second;     /* second */            public short pth_no;     /* path index */            public int mac_old;    /* old data */            public int mac_new;    /* new data */            public short old_dp;     /* old data decimal point */            public short new_dp;     /* old data decimal point */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REC_MAC4_data        {            public short rec_len;    /* length */            public short rec_type;   /* record type */            public REC_MAC4 data = new REC_MAC4();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_1        {            public REC_MDI4_data rec_mdi1 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi2 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi3 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi4 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi5 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi6 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi7 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi8 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi9 = new REC_MDI4_data();            public REC_MDI4_data rec_mdi10 = new REC_MDI4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_2        {            public REC_SGN4_data rec_sgn1 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn2 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn3 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn4 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn5 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn6 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn7 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn8 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn9 = new REC_SGN4_data();            public REC_SGN4_data rec_sgn10 = new REC_SGN4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_3        {            public REC_ALM4_data rec_alm1 = new REC_ALM4_data();            public REC_ALM4_data rec_alm2 = new REC_ALM4_data();            public REC_ALM4_data rec_alm3 = new REC_ALM4_data();            public REC_ALM4_data rec_alm4 = new REC_ALM4_data();            public REC_ALM4_data rec_alm5 = new REC_ALM4_data();            public REC_ALM4_data rec_alm6 = new REC_ALM4_data();            public REC_ALM4_data rec_alm7 = new REC_ALM4_data();            public REC_ALM4_data rec_alm8 = new REC_ALM4_data();            public REC_ALM4_data rec_alm9 = new REC_ALM4_data();            public REC_ALM4_data rec_alm10 = new REC_ALM4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_4        {            public REC_DATE4_data rec_date1 = new REC_DATE4_data();            public REC_DATE4_data rec_date2 = new REC_DATE4_data();            public REC_DATE4_data rec_date3 = new REC_DATE4_data();            public REC_DATE4_data rec_date4 = new REC_DATE4_data();            public REC_DATE4_data rec_date5 = new REC_DATE4_data();            public REC_DATE4_data rec_date6 = new REC_DATE4_data();            public REC_DATE4_data rec_date7 = new REC_DATE4_data();            public REC_DATE4_data rec_date8 = new REC_DATE4_data();            public REC_DATE4_data rec_date9 = new REC_DATE4_data();            public REC_DATE4_data rec_date10 = new REC_DATE4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_5        {            public REC_IAL4_data rec_ial1 = new REC_IAL4_data();            public REC_IAL4_data rec_ial2 = new REC_IAL4_data();            public REC_IAL4_data rec_ial3 = new REC_IAL4_data();            public REC_IAL4_data rec_ial4 = new REC_IAL4_data();            public REC_IAL4_data rec_ial5 = new REC_IAL4_data();            public REC_IAL4_data rec_ial6 = new REC_IAL4_data();            public REC_IAL4_data rec_ial7 = new REC_IAL4_data();            public REC_IAL4_data rec_ial8 = new REC_IAL4_data();            public REC_IAL4_data rec_ial9 = new REC_IAL4_data();            public REC_IAL4_data rec_ial10 = new REC_IAL4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_6        {            public REC_MAL4_data rec_mal1 = new REC_MAL4_data();            public REC_MAL4_data rec_mal2 = new REC_MAL4_data();            public REC_MAL4_data rec_mal3 = new REC_MAL4_data();            public REC_MAL4_data rec_mal4 = new REC_MAL4_data();            public REC_MAL4_data rec_mal5 = new REC_MAL4_data();            public REC_MAL4_data rec_mal6 = new REC_MAL4_data();            public REC_MAL4_data rec_mal7 = new REC_MAL4_data();            public REC_MAL4_data rec_mal8 = new REC_MAL4_data();            public REC_MAL4_data rec_mal9 = new REC_MAL4_data();            public REC_MAL4_data rec_mal10 = new REC_MAL4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_7        {            public REC_OPM4_data rec_opm1 = new REC_OPM4_data();            public REC_OPM4_data rec_opm2 = new REC_OPM4_data();            public REC_OPM4_data rec_opm3 = new REC_OPM4_data();            public REC_OPM4_data rec_opm4 = new REC_OPM4_data();            public REC_OPM4_data rec_opm5 = new REC_OPM4_data();            public REC_OPM4_data rec_opm6 = new REC_OPM4_data();            public REC_OPM4_data rec_opm7 = new REC_OPM4_data();            public REC_OPM4_data rec_opm8 = new REC_OPM4_data();            public REC_OPM4_data rec_opm9 = new REC_OPM4_data();            public REC_OPM4_data rec_opm10 = new REC_OPM4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_8        {            public REC_OFS4_data rec_ofs1 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs2 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs3 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs4 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs5 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs6 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs7 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs8 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs9 = new REC_OFS4_data();            public REC_OFS4_data rec_ofs10 = new REC_OFS4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_9        {            public REC_PRM4_data rec_prm1 = new REC_PRM4_data();            public REC_PRM4_data rec_prm2 = new REC_PRM4_data();            public REC_PRM4_data rec_prm3 = new REC_PRM4_data();            public REC_PRM4_data rec_prm4 = new REC_PRM4_data();            public REC_PRM4_data rec_prm5 = new REC_PRM4_data();            public REC_PRM4_data rec_prm6 = new REC_PRM4_data();            public REC_PRM4_data rec_prm7 = new REC_PRM4_data();            public REC_PRM4_data rec_prm8 = new REC_PRM4_data();            public REC_PRM4_data rec_prm9 = new REC_PRM4_data();            public REC_PRM4_data rec_prm10 = new REC_PRM4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_10        {            public REC_WOF4_data rec_wof1 = new REC_WOF4_data();            public REC_WOF4_data rec_wof2 = new REC_WOF4_data();            public REC_WOF4_data rec_wof3 = new REC_WOF4_data();            public REC_WOF4_data rec_wof4 = new REC_WOF4_data();            public REC_WOF4_data rec_wof5 = new REC_WOF4_data();            public REC_WOF4_data rec_wof6 = new REC_WOF4_data();            public REC_WOF4_data rec_wof7 = new REC_WOF4_data();            public REC_WOF4_data rec_wof8 = new REC_WOF4_data();            public REC_WOF4_data rec_wof9 = new REC_WOF4_data();            public REC_WOF4_data rec_wof10 = new REC_WOF4_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOPHIS4_11        {            public REC_MAC4_data rec_mac1 = new REC_MAC4_data();            public REC_MAC4_data rec_mac2 = new REC_MAC4_data();            public REC_MAC4_data rec_mac3 = new REC_MAC4_data();            public REC_MAC4_data rec_mac4 = new REC_MAC4_data();            public REC_MAC4_data rec_mac5 = new REC_MAC4_data();            public REC_MAC4_data rec_mac6 = new REC_MAC4_data();            public REC_MAC4_data rec_mac7 = new REC_MAC4_data();            public REC_MAC4_data rec_mac8 = new REC_MAC4_data();            public REC_MAC4_data rec_mac9 = new REC_MAC4_data();            public REC_MAC4_data rec_mac10 = new REC_MAC4_data();        } /* In case that the number of data is 10 */        /* cnc_rdalmhistry:read alarm history data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ALM_HIS_data        {            public short dummy;            public short alm_grp;        /* alarm group */            public short alm_no;         /* alarm number */            public byte axis_no;        /* axis number */            public byte year;           /* year */            public byte month;          /* month */            public byte day;            /* day */            public byte hour;           /* hour */            public byte minute;         /* minute */            public byte second;         /* second */            public byte dummy2;            public short len_msg;        /* alarm message length */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string alm_msg = new string(' ', 32);  /* alarm message */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALM_HIS1        {            public ALM_HIS_data data1 = new ALM_HIS_data();            public ALM_HIS_data data2 = new ALM_HIS_data();            public ALM_HIS_data data3 = new ALM_HIS_data();            public ALM_HIS_data data4 = new ALM_HIS_data();            public ALM_HIS_data data5 = new ALM_HIS_data();            public ALM_HIS_data data6 = new ALM_HIS_data();            public ALM_HIS_data data7 = new ALM_HIS_data();            public ALM_HIS_data data8 = new ALM_HIS_data();            public ALM_HIS_data data9 = new ALM_HIS_data();            public ALM_HIS_data data10 = new ALM_HIS_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAHIS        {            public ushort s_no;   /* start number */            public short type;   /* dummy */            public ushort e_no;   /* end number */            public ALM_HIS1 alm_his = new ALM_HIS1();        }        /* cnc_rdalmhistry2:read alarm history data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ALM_HIS2_data        {            public short alm_grp;        /* alarm group */            public short alm_no;         /* alarm number */            public short axis_no;        /* axis number */            public short year;           /* year */            public short month;          /* month */            public short day;            /* day */            public short hour;           /* hour */            public short minute;         /* minute */            public short second;         /* second */            public short len_msg;        /* alarm message length */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string alm_msg = new string(' ', 32);  /* alarm message */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALM_HIS2        {            public ALM_HIS2_data data1 = new ALM_HIS2_data();            public ALM_HIS2_data data2 = new ALM_HIS2_data();            public ALM_HIS2_data data3 = new ALM_HIS2_data();            public ALM_HIS2_data data4 = new ALM_HIS2_data();            public ALM_HIS2_data data5 = new ALM_HIS2_data();            public ALM_HIS2_data data6 = new ALM_HIS2_data();            public ALM_HIS2_data data7 = new ALM_HIS2_data();            public ALM_HIS2_data data8 = new ALM_HIS2_data();            public ALM_HIS2_data data9 = new ALM_HIS2_data();            public ALM_HIS2_data data10 = new ALM_HIS2_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAHIS2        {            public ushort s_no;   /* start number */            public ushort e_no;   /* end number */            public ALM_HIS2 alm_his = new ALM_HIS2();        }        /* cnc_rdalmhistry3:read alarm history data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ALM_HIS3_data        {            public short alm_grp;        /* alarm group */            public short alm_no;         /* alarm number */            public short axis_no;        /* axis number */            public short year;           /* year */            public short month;          /* month */            public short day;            /* day */            public short hour;           /* hour */            public short minute;         /* minute */            public short second;         /* second */            public short len_msg;        /* alarm message length */            public short pth_no;         /* path index */            public short dummy;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string alm_msg = new string(' ', 32);  /* alarm message */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALM_HIS3        {            public ALM_HIS3_data data1 = new ALM_HIS3_data();            public ALM_HIS3_data data2 = new ALM_HIS3_data();            public ALM_HIS3_data data3 = new ALM_HIS3_data();            public ALM_HIS3_data data4 = new ALM_HIS3_data();            public ALM_HIS3_data data5 = new ALM_HIS3_data();            public ALM_HIS3_data data6 = new ALM_HIS3_data();            public ALM_HIS3_data data7 = new ALM_HIS3_data();            public ALM_HIS3_data data8 = new ALM_HIS3_data();            public ALM_HIS3_data data9 = new ALM_HIS3_data();            public ALM_HIS3_data data10 = new ALM_HIS3_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAHIS3        {            public ushort s_no;   /* start number */            public ushort e_no;   /* end number */            public ALM_HIS3 alm_his = new ALM_HIS3();        }        /* cnc_rdalmhistry5:read alarm history data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ALM_HIS5_data        {            public short alm_grp;        /* alarm group */            public short alm_no;         /* alarm number */            public short axis_no;        /* axis number */            public short year;           /* year */            public short month;          /* month */            public short day;            /* day */            public short hour;           /* hour */            public short minute;         /* minute */            public short second;         /* second */            public short len_msg;        /* alarm message length */            public short pth_no;         /* path index */            public short dummy;          /* dummy */            public short dsp_flg;        /* Flag for displaying  */            public short axis_num;       /* Total axis number */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]            public string alm_msg = new string(' ', 64);  /* alarm message */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] g_modal;        /* G code Modal */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public byte[] g_dp;           /* #7:1 Block  #6乣#0 dp */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public int[] a_modal;        /* B,D,E,F,H,M,N,O,S,T code Modal */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public byte[] a_dp;           /* #7:1 Block  #6乣#0 dp */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public int[] abs_pos;        /* Abs pos */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public byte[] abs_dp;         /* Abs dp */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public int[] mcn_pos;        /* Mcn pos */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public byte[] mcn_dp;         /* Mcn dp */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALM_HIS5        {            public ALM_HIS5_data data1 = new ALM_HIS5_data();            public ALM_HIS5_data data2 = new ALM_HIS5_data();            public ALM_HIS5_data data3 = new ALM_HIS5_data();            public ALM_HIS5_data data4 = new ALM_HIS5_data();            public ALM_HIS5_data data5 = new ALM_HIS5_data();            public ALM_HIS5_data data6 = new ALM_HIS5_data();            public ALM_HIS5_data data7 = new ALM_HIS5_data();            public ALM_HIS5_data data8 = new ALM_HIS5_data();            public ALM_HIS5_data data9 = new ALM_HIS5_data();            public ALM_HIS5_data data10 = new ALM_HIS5_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAHIS5        {            public ushort s_no;   /* start number */            public ushort e_no;   /* end number */            public ALM_HIS5 alm_his = new ALM_HIS5();        }        /* cnc_rdomhistry2:read operater message history data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBOMHIS2_data        {            public short dsp_flg;     /* Dysplay flag(ON/OFF) */            public short om_no;       /* operater message number */            public short year;        /* year */            public short month;       /* month */            public short day;         /* day */            public short hour;        /* Hour */            public short minute;      /* Minute */            public short second;      /* Second */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public string alm_msg = new string(' ', 256);  /* alarm message */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OPM_HIS        {            public ODBOMHIS2_data data1 = new ODBOMHIS2_data();            public ODBOMHIS2_data data2 = new ODBOMHIS2_data();            public ODBOMHIS2_data data3 = new ODBOMHIS2_data();            public ODBOMHIS2_data data4 = new ODBOMHIS2_data();            public ODBOMHIS2_data data5 = new ODBOMHIS2_data();            public ODBOMHIS2_data data6 = new ODBOMHIS2_data();            public ODBOMHIS2_data data7 = new ODBOMHIS2_data();            public ODBOMHIS2_data data8 = new ODBOMHIS2_data();            public ODBOMHIS2_data data9 = new ODBOMHIS2_data();            public ODBOMHIS2_data data10 = new ODBOMHIS2_data();        }  /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOMHIS2        {            public ushort s_no;   /* start number */            public ushort e_no;   /* end number */            public OPM_HIS opm_his = new OPM_HIS();        }        /* cnc_rdhissgnl:read signals related operation history */        /* cnc_wrhissgnl:write signals related operation history */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IODBSIG_data        {            public short ent_no;     /* entry number */            public short sig_no;     /* signal number */            public byte sig_name;   /* signal name */            public byte mask_pat;   /* signal mask pattern */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIG1        {            public IODBSIG_data data1 = new IODBSIG_data();            public IODBSIG_data data2 = new IODBSIG_data();            public IODBSIG_data data3 = new IODBSIG_data();            public IODBSIG_data data4 = new IODBSIG_data();            public IODBSIG_data data5 = new IODBSIG_data();            public IODBSIG_data data6 = new IODBSIG_data();            public IODBSIG_data data7 = new IODBSIG_data();            public IODBSIG_data data8 = new IODBSIG_data();            public IODBSIG_data data9 = new IODBSIG_data();            public IODBSIG_data data10 = new IODBSIG_data();            public IODBSIG_data data11 = new IODBSIG_data();            public IODBSIG_data data12 = new IODBSIG_data();            public IODBSIG_data data13 = new IODBSIG_data();            public IODBSIG_data data14 = new IODBSIG_data();            public IODBSIG_data data15 = new IODBSIG_data();            public IODBSIG_data data16 = new IODBSIG_data();            public IODBSIG_data data17 = new IODBSIG_data();            public IODBSIG_data data18 = new IODBSIG_data();            public IODBSIG_data data19 = new IODBSIG_data();            public IODBSIG_data data20 = new IODBSIG_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIG        {            public short datano; /* dummy */            public short type;   /* dummy */            public IODBSIG1 data = new IODBSIG1();        }        /* cnc_rdhissgnl2:read signals related operation history 2 */        /* cnc_wrhissgnl2:write signals related operation history 2 */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class _IODBSIG2_data        {            public short ent_no;     /* entry number */            public short sig_no;     /* signal number */            public byte sig_name;   /* signal name */            public byte mask_pat;   /* signal mask pattern */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIG2_data        {            public _IODBSIG2_data data1 = new _IODBSIG2_data();            public _IODBSIG2_data data2 = new _IODBSIG2_data();            public _IODBSIG2_data data3 = new _IODBSIG2_data();            public _IODBSIG2_data data4 = new _IODBSIG2_data();            public _IODBSIG2_data data5 = new _IODBSIG2_data();            public _IODBSIG2_data data6 = new _IODBSIG2_data();            public _IODBSIG2_data data7 = new _IODBSIG2_data();            public _IODBSIG2_data data8 = new _IODBSIG2_data();            public _IODBSIG2_data data9 = new _IODBSIG2_data();            public _IODBSIG2_data data10 = new _IODBSIG2_data();            public _IODBSIG2_data data11 = new _IODBSIG2_data();            public _IODBSIG2_data data12 = new _IODBSIG2_data();            public _IODBSIG2_data data13 = new _IODBSIG2_data();            public _IODBSIG2_data data14 = new _IODBSIG2_data();            public _IODBSIG2_data data15 = new _IODBSIG2_data();            public _IODBSIG2_data data16 = new _IODBSIG2_data();            public _IODBSIG2_data data17 = new _IODBSIG2_data();            public _IODBSIG2_data data18 = new _IODBSIG2_data();            public _IODBSIG2_data data19 = new _IODBSIG2_data();            public _IODBSIG2_data data20 = new _IODBSIG2_data();            public _IODBSIG2_data data31 = new _IODBSIG2_data();            public _IODBSIG2_data data32 = new _IODBSIG2_data();            public _IODBSIG2_data data33 = new _IODBSIG2_data();            public _IODBSIG2_data data34 = new _IODBSIG2_data();            public _IODBSIG2_data data35 = new _IODBSIG2_data();            public _IODBSIG2_data data36 = new _IODBSIG2_data();            public _IODBSIG2_data data37 = new _IODBSIG2_data();            public _IODBSIG2_data data38 = new _IODBSIG2_data();            public _IODBSIG2_data data39 = new _IODBSIG2_data();            public _IODBSIG2_data data40 = new _IODBSIG2_data();            public _IODBSIG2_data data41 = new _IODBSIG2_data();            public _IODBSIG2_data data42 = new _IODBSIG2_data();            public _IODBSIG2_data data43 = new _IODBSIG2_data();            public _IODBSIG2_data data44 = new _IODBSIG2_data();            public _IODBSIG2_data data45 = new _IODBSIG2_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIG2        {            public short datano; /* dummy */            public short type;   /* dummy */            public IODBSIG2_data data = new IODBSIG2_data();        }        /* cnc_rdhissgnl3:read signals related operation history */        /* cnc_wrhissgnl3:write signals related operation history */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class _IODBSIG3_data        {            public short ent_no;     /* entry number */            public short pmc_no;     /* pmc number */            public short sig_no;     /* signal number */            public byte sig_name;   /* signal name */            public byte mask_pat;   /* signal mask pattern */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIG3_data        {            public _IODBSIG3_data data1 = new _IODBSIG3_data();            public _IODBSIG3_data data2 = new _IODBSIG3_data();            public _IODBSIG3_data data3 = new _IODBSIG3_data();            public _IODBSIG3_data data4 = new _IODBSIG3_data();            public _IODBSIG3_data data5 = new _IODBSIG3_data();            public _IODBSIG3_data data6 = new _IODBSIG3_data();            public _IODBSIG3_data data7 = new _IODBSIG3_data();            public _IODBSIG3_data data8 = new _IODBSIG3_data();            public _IODBSIG3_data data9 = new _IODBSIG3_data();            public _IODBSIG3_data data10 = new _IODBSIG3_data();            public _IODBSIG3_data data11 = new _IODBSIG3_data();            public _IODBSIG3_data data12 = new _IODBSIG3_data();            public _IODBSIG3_data data13 = new _IODBSIG3_data();            public _IODBSIG3_data data14 = new _IODBSIG3_data();            public _IODBSIG3_data data15 = new _IODBSIG3_data();            public _IODBSIG3_data data16 = new _IODBSIG3_data();            public _IODBSIG3_data data17 = new _IODBSIG3_data();            public _IODBSIG3_data data18 = new _IODBSIG3_data();            public _IODBSIG3_data data19 = new _IODBSIG3_data();            public _IODBSIG3_data data20 = new _IODBSIG3_data();            public _IODBSIG3_data data21 = new _IODBSIG3_data();            public _IODBSIG3_data data22 = new _IODBSIG3_data();            public _IODBSIG3_data data23 = new _IODBSIG3_data();            public _IODBSIG3_data data24 = new _IODBSIG3_data();            public _IODBSIG3_data data25 = new _IODBSIG3_data();            public _IODBSIG3_data data26 = new _IODBSIG3_data();            public _IODBSIG3_data data27 = new _IODBSIG3_data();            public _IODBSIG3_data data28 = new _IODBSIG3_data();            public _IODBSIG3_data data29 = new _IODBSIG3_data();            public _IODBSIG3_data data30 = new _IODBSIG3_data();            public _IODBSIG3_data data31 = new _IODBSIG3_data();            public _IODBSIG3_data data32 = new _IODBSIG3_data();            public _IODBSIG3_data data33 = new _IODBSIG3_data();            public _IODBSIG3_data data34 = new _IODBSIG3_data();            public _IODBSIG3_data data35 = new _IODBSIG3_data();            public _IODBSIG3_data data36 = new _IODBSIG3_data();            public _IODBSIG3_data data37 = new _IODBSIG3_data();            public _IODBSIG3_data data38 = new _IODBSIG3_data();            public _IODBSIG3_data data39 = new _IODBSIG3_data();            public _IODBSIG3_data data40 = new _IODBSIG3_data();            public _IODBSIG3_data data41 = new _IODBSIG3_data();            public _IODBSIG3_data data42 = new _IODBSIG3_data();            public _IODBSIG3_data data43 = new _IODBSIG3_data();            public _IODBSIG3_data data44 = new _IODBSIG3_data();            public _IODBSIG3_data data45 = new _IODBSIG3_data();            public _IODBSIG3_data data46 = new _IODBSIG3_data();            public _IODBSIG3_data data47 = new _IODBSIG3_data();            public _IODBSIG3_data data48 = new _IODBSIG3_data();            public _IODBSIG3_data data49 = new _IODBSIG3_data();            public _IODBSIG3_data data50 = new _IODBSIG3_data();            public _IODBSIG3_data data51 = new _IODBSIG3_data();            public _IODBSIG3_data data52 = new _IODBSIG3_data();            public _IODBSIG3_data data53 = new _IODBSIG3_data();            public _IODBSIG3_data data54 = new _IODBSIG3_data();            public _IODBSIG3_data data55 = new _IODBSIG3_data();            public _IODBSIG3_data data56 = new _IODBSIG3_data();            public _IODBSIG3_data data57 = new _IODBSIG3_data();            public _IODBSIG3_data data58 = new _IODBSIG3_data();            public _IODBSIG3_data data59 = new _IODBSIG3_data();            public _IODBSIG3_data data60 = new _IODBSIG3_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIG3        {            public short datano; /* dummy */            public short type;   /* dummy */            public IODBSIG3_data data = new IODBSIG3_data();        }        /*-------------*/        /* CNC: Others */        /*-------------*/        /* cnc_sysinfo:read CNC system information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYS        {            public short addinfo;            public short max_axis;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public char[] cnc_type;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public char[] mt_type;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public char[] series;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public char[] version;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public char[] axes;        }#if FS15D    /* cnc_statinfo:read CNC status information */    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBST    {        [MarshalAs(UnmanagedType.ByValArray,SizeConst=2)]        public short[] dummy;      /* dummy                    */        public short   aut;        /* selected automatic mode  */        public short   manual;     /* selected manual mode     */        public short   run;        /* running status           */        public short   edit;       /* editting status          */        public short   motion;     /* axis, dwell status       */        public short   mstb;       /* m, s, t, b status        */        public short   emergency;  /* emergency stop status    */        public short   write;      /* writting status          */        public short   labelskip;  /* label skip status        */        public short   alarm;      /* alarm status             */        public short   warning;    /* warning status           */        public short   battery;    /* battery status           */    }#else        /* cnc_statinfo:read CNC status information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBST        {            public short dummy;     /* dummy */            public short tmmode;    /* T/M mode */            public short aut;       /* selected automatic mode */            public short run;       /* running status */            public short motion;    /* axis, dwell status */            public short mstb;      /* m, s, t, b status */            public short emergency; /* emergency stop status */            public short alarm;     /* alarm status */            public short edit;      /* editting status */        }#endif        /* cnc_alarm:read alarm status */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBALM        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] dummy = { 0, 0 };            public ushort data = 0;        }        /* cnc_rdalminfo:read alarm information */#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ALMINFO1_data    {        public int     axis;        public short   alm_no;    }        [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi,Pack=4)]    public class ALMINFO2_data    {        public int     axis=0 ;        public short   alm_no=0 ;        public short   msg_len=0 ;        [MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]        public string  alm_msg= new string(' ',32) ;    }#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALMINFO1_data        {            public short axis;            public short alm_no;        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ALMINFO2_data        {            public short axis = 0;            public short alm_no = 0;            public short msg_len = 0;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string alm_msg = new string(' ', 32);        }#endif        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALMINFO_1        {            public ALMINFO1_data msg1 = new ALMINFO1_data();            public ALMINFO1_data msg2 = new ALMINFO1_data();            public ALMINFO1_data msg3 = new ALMINFO1_data();            public ALMINFO1_data msg4 = new ALMINFO1_data();            public ALMINFO1_data msg5 = new ALMINFO1_data();            public short data_end;        } /* In case that the number of alarm is 5 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ALMINFO_2        {            public ALMINFO2_data msg1 = new ALMINFO2_data();            public ALMINFO2_data msg2 = new ALMINFO2_data();            public ALMINFO2_data msg3 = new ALMINFO2_data();            public ALMINFO2_data msg4 = new ALMINFO2_data();            public ALMINFO2_data msg5 = new ALMINFO2_data();            public short dataend = 0;        } /* In case that the number of alarm is 5 */        /* cnc_rdalmmsg:read alarm messages */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBALMMSG_data        {            public int alm_no;            public short type;            public short axis;            public short dummy;            public short msg_len;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string alm_msg = new string(' ', 32);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBALMMSG        {            public ODBALMMSG_data msg1 = new ODBALMMSG_data();            public ODBALMMSG_data msg2 = new ODBALMMSG_data();            public ODBALMMSG_data msg3 = new ODBALMMSG_data();            public ODBALMMSG_data msg4 = new ODBALMMSG_data();            public ODBALMMSG_data msg5 = new ODBALMMSG_data();            public ODBALMMSG_data msg6 = new ODBALMMSG_data();            public ODBALMMSG_data msg7 = new ODBALMMSG_data();            public ODBALMMSG_data msg8 = new ODBALMMSG_data();            public ODBALMMSG_data msg9 = new ODBALMMSG_data();            public ODBALMMSG_data msg10 = new ODBALMMSG_data();        } /* In case that the number of alarm is 10 */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBALMMSG2_data        {            public int alm_no;            public short type;            public short axis;            public short dummy;            public short msg_len;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]            public string alm_msg = new string(' ', 64);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBALMMSG2        {            public ODBALMMSG2_data msg1 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg2 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg3 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg4 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg5 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg6 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg7 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg8 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg9 = new ODBALMMSG2_data();            public ODBALMMSG2_data msg10 = new ODBALMMSG2_data();        } /* In case that the number of alarm is 10 */        /* cnc_modal:read modal data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class MODAL_AUX_data        {            public int aux_data;            public byte flag1;            public byte flag2;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class MODAL_RAUX1_data        {            public MODAL_AUX_data data1 = new MODAL_AUX_data();            public MODAL_AUX_data data2 = new MODAL_AUX_data();            public MODAL_AUX_data data3 = new MODAL_AUX_data();            public MODAL_AUX_data data4 = new MODAL_AUX_data();            public MODAL_AUX_data data5 = new MODAL_AUX_data();            public MODAL_AUX_data data6 = new MODAL_AUX_data();            public MODAL_AUX_data data7 = new MODAL_AUX_data();            public MODAL_AUX_data data8 = new MODAL_AUX_data();            public MODAL_AUX_data data9 = new MODAL_AUX_data();            public MODAL_AUX_data data10 = new MODAL_AUX_data();            public MODAL_AUX_data data11 = new MODAL_AUX_data();            public MODAL_AUX_data data12 = new MODAL_AUX_data();            public MODAL_AUX_data data13 = new MODAL_AUX_data();            public MODAL_AUX_data data14 = new MODAL_AUX_data();            public MODAL_AUX_data data15 = new MODAL_AUX_data();            public MODAL_AUX_data data16 = new MODAL_AUX_data();            public MODAL_AUX_data data17 = new MODAL_AUX_data();            public MODAL_AUX_data data18 = new MODAL_AUX_data();            public MODAL_AUX_data data19 = new MODAL_AUX_data();            public MODAL_AUX_data data20 = new MODAL_AUX_data();            public MODAL_AUX_data data21 = new MODAL_AUX_data();            public MODAL_AUX_data data22 = new MODAL_AUX_data();            public MODAL_AUX_data data23 = new MODAL_AUX_data();            public MODAL_AUX_data data24 = new MODAL_AUX_data();            public MODAL_AUX_data data25 = new MODAL_AUX_data();            public MODAL_AUX_data data26 = new MODAL_AUX_data();            public MODAL_AUX_data data27 = new MODAL_AUX_data();        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class MODAL_RAUX2_data    {        public MODAL_AUX_data data1 = new MODAL_AUX_data();        public MODAL_AUX_data data2 = new MODAL_AUX_data();        public MODAL_AUX_data data3 = new MODAL_AUX_data();        public MODAL_AUX_data data4 = new MODAL_AUX_data();        public MODAL_AUX_data data5 = new MODAL_AUX_data();        public MODAL_AUX_data data6 = new MODAL_AUX_data();        public MODAL_AUX_data data7 = new MODAL_AUX_data();        public MODAL_AUX_data data8 = new MODAL_AUX_data();        public MODAL_AUX_data data9 = new MODAL_AUX_data();        public MODAL_AUX_data data10= new MODAL_AUX_data();        public MODAL_AUX_data data11= new MODAL_AUX_data();        public MODAL_AUX_data data12= new MODAL_AUX_data();        public MODAL_AUX_data data13= new MODAL_AUX_data();        public MODAL_AUX_data data14= new MODAL_AUX_data();        public MODAL_AUX_data data15= new MODAL_AUX_data();        public MODAL_AUX_data data16= new MODAL_AUX_data();        public MODAL_AUX_data data17= new MODAL_AUX_data();        public MODAL_AUX_data data18= new MODAL_AUX_data();        public MODAL_AUX_data data19= new MODAL_AUX_data();        public MODAL_AUX_data data20= new MODAL_AUX_data();        public MODAL_AUX_data data21= new MODAL_AUX_data();        public MODAL_AUX_data data22= new MODAL_AUX_data();        public MODAL_AUX_data data23= new MODAL_AUX_data();        public MODAL_AUX_data data24= new MODAL_AUX_data();    }#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class MODAL_RAUX2_data    {        public MODAL_AUX_data data1 = new MODAL_AUX_data();        public MODAL_AUX_data data2 = new MODAL_AUX_data();        public MODAL_AUX_data data3 = new MODAL_AUX_data();        public MODAL_AUX_data data4 = new MODAL_AUX_data();        public MODAL_AUX_data data5 = new MODAL_AUX_data();        public MODAL_AUX_data data6 = new MODAL_AUX_data();        public MODAL_AUX_data data7 = new MODAL_AUX_data();        public MODAL_AUX_data data8 = new MODAL_AUX_data();        public MODAL_AUX_data data9 = new MODAL_AUX_data();        public MODAL_AUX_data data10= new MODAL_AUX_data();    }#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class MODAL_RAUX2_data        {            public MODAL_AUX_data data1 = new MODAL_AUX_data();            public MODAL_AUX_data data2 = new MODAL_AUX_data();            public MODAL_AUX_data data3 = new MODAL_AUX_data();            public MODAL_AUX_data data4 = new MODAL_AUX_data();            public MODAL_AUX_data data5 = new MODAL_AUX_data();            public MODAL_AUX_data data6 = new MODAL_AUX_data();            public MODAL_AUX_data data7 = new MODAL_AUX_data();            public MODAL_AUX_data data8 = new MODAL_AUX_data();        }#endif        [StructLayout(LayoutKind.Explicit)]        public class ODBMDL_1        {            [FieldOffset(0)]            public short datano;            [FieldOffset(2)]            public short type;            [FieldOffset(4)]            public byte g_data;        }        [StructLayout(LayoutKind.Explicit)]        public class ODBMDL_2        {            [FieldOffset(0)]            public short datano;            [FieldOffset(2)]            public short type;            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public byte[] g_1shot = new byte[4];            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 35)]            public byte[] g_rdata = new byte[35];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMDL_3        {            public short datano;            public short type;            public MODAL_AUX_data aux = new MODAL_AUX_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMDL_4        {            public short datano;            public short type;            public MODAL_RAUX1_data raux1 = new MODAL_RAUX1_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMDL_5        {            public short datano;            public short type;            public MODAL_RAUX2_data raux2 = new MODAL_RAUX2_data();        }        /* cnc_rdgcode: read G code */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBGCD_data        {            public short group;            public short flag;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]            public string code = new string(' ', 8);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBGCD        {            public ODBGCD_data gcd0 = new ODBGCD_data();            public ODBGCD_data gcd1 = new ODBGCD_data();            public ODBGCD_data gcd2 = new ODBGCD_data();            public ODBGCD_data gcd3 = new ODBGCD_data();            public ODBGCD_data gcd4 = new ODBGCD_data();            public ODBGCD_data gcd5 = new ODBGCD_data();            public ODBGCD_data gcd6 = new ODBGCD_data();            public ODBGCD_data gcd7 = new ODBGCD_data();            public ODBGCD_data gcd8 = new ODBGCD_data();            public ODBGCD_data gcd9 = new ODBGCD_data();            public ODBGCD_data gcd10 = new ODBGCD_data();            public ODBGCD_data gcd11 = new ODBGCD_data();            public ODBGCD_data gcd12 = new ODBGCD_data();            public ODBGCD_data gcd13 = new ODBGCD_data();            public ODBGCD_data gcd14 = new ODBGCD_data();            public ODBGCD_data gcd15 = new ODBGCD_data();            public ODBGCD_data gcd16 = new ODBGCD_data();            public ODBGCD_data gcd17 = new ODBGCD_data();            public ODBGCD_data gcd18 = new ODBGCD_data();            public ODBGCD_data gcd19 = new ODBGCD_data();            public ODBGCD_data gcd20 = new ODBGCD_data();            public ODBGCD_data gcd21 = new ODBGCD_data();            public ODBGCD_data gcd22 = new ODBGCD_data();            public ODBGCD_data gcd23 = new ODBGCD_data();            public ODBGCD_data gcd24 = new ODBGCD_data();            public ODBGCD_data gcd25 = new ODBGCD_data();            public ODBGCD_data gcd26 = new ODBGCD_data();            public ODBGCD_data gcd27 = new ODBGCD_data();        }        /* cnc_rdcommand: read command value */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBCMD_data        {            public byte adrs;            public byte num;            public short flag;            public int cmd_val;            public int dec_val;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBCMD        {            public ODBCMD_data cmd0 = new ODBCMD_data();            public ODBCMD_data cmd1 = new ODBCMD_data();            public ODBCMD_data cmd2 = new ODBCMD_data();            public ODBCMD_data cmd3 = new ODBCMD_data();            public ODBCMD_data cmd4 = new ODBCMD_data();            public ODBCMD_data cmd5 = new ODBCMD_data();            public ODBCMD_data cmd6 = new ODBCMD_data();            public ODBCMD_data cmd7 = new ODBCMD_data();            public ODBCMD_data cmd8 = new ODBCMD_data();            public ODBCMD_data cmd9 = new ODBCMD_data();            public ODBCMD_data cmd10 = new ODBCMD_data();            public ODBCMD_data cmd11 = new ODBCMD_data();            public ODBCMD_data cmd12 = new ODBCMD_data();            public ODBCMD_data cmd13 = new ODBCMD_data();            public ODBCMD_data cmd14 = new ODBCMD_data();            public ODBCMD_data cmd15 = new ODBCMD_data();            public ODBCMD_data cmd16 = new ODBCMD_data();            public ODBCMD_data cmd17 = new ODBCMD_data();            public ODBCMD_data cmd18 = new ODBCMD_data();            public ODBCMD_data cmd19 = new ODBCMD_data();            public ODBCMD_data cmd20 = new ODBCMD_data();            public ODBCMD_data cmd21 = new ODBCMD_data();            public ODBCMD_data cmd22 = new ODBCMD_data();            public ODBCMD_data cmd23 = new ODBCMD_data();            public ODBCMD_data cmd24 = new ODBCMD_data();            public ODBCMD_data cmd25 = new ODBCMD_data();            public ODBCMD_data cmd26 = new ODBCMD_data();            public ODBCMD_data cmd27 = new ODBCMD_data();            public ODBCMD_data cmd28 = new ODBCMD_data();            public ODBCMD_data cmd29 = new ODBCMD_data();        }        /* cnc_diagnoss:read diagnosis data */        /* cnc_diagnosr:read diagnosis data(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REALDGN        {            public int dgn_val;     /* data of real diagnoss */            public int dec_val;     /* decimal point of real diagnoss */        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class REALDGNS    {        public REALDGN rdata1=new REALDGN();        public REALDGN rdata2=new REALDGN();        public REALDGN rdata3=new REALDGN();        public REALDGN rdata4=new REALDGN();        public REALDGN rdata5=new REALDGN();        public REALDGN rdata6=new REALDGN();        public REALDGN rdata7=new REALDGN();        public REALDGN rdata8=new REALDGN();        public REALDGN rdata9=new REALDGN();        public REALDGN rdata10=new REALDGN();        public REALDGN rdata11=new REALDGN();        public REALDGN rdata12=new REALDGN();        public REALDGN rdata13=new REALDGN();        public REALDGN rdata14=new REALDGN();        public REALDGN rdata15=new REALDGN();        public REALDGN rdata16=new REALDGN();        public REALDGN rdata17=new REALDGN();        public REALDGN rdata18=new REALDGN();        public REALDGN rdata19=new REALDGN();        public REALDGN rdata20=new REALDGN();        public REALDGN rdata21=new REALDGN();        public REALDGN rdata22=new REALDGN();        public REALDGN rdata23=new REALDGN();        public REALDGN rdata24=new REALDGN();    } /* In case that the number of alarm is 24 */#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class REALDGNS    {        public REALDGN rdata1=new REALDGN();        public REALDGN rdata2=new REALDGN();        public REALDGN rdata3=new REALDGN();        public REALDGN rdata4=new REALDGN();        public REALDGN rdata5=new REALDGN();        public REALDGN rdata6=new REALDGN();        public REALDGN rdata7=new REALDGN();        public REALDGN rdata8=new REALDGN();        public REALDGN rdata9=new REALDGN();        public REALDGN rdata10=new REALDGN();    } /* In case that the number of alarm is 10 */#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class REALDGNS        {            public REALDGN rdata1 = new REALDGN();            public REALDGN rdata2 = new REALDGN();            public REALDGN rdata3 = new REALDGN();            public REALDGN rdata4 = new REALDGN();            public REALDGN rdata5 = new REALDGN();            public REALDGN rdata6 = new REALDGN();            public REALDGN rdata7 = new REALDGN();            public REALDGN rdata8 = new REALDGN();        } /* In case that the number of alarm is 8 */#endif        [StructLayout(LayoutKind.Explicit)]        public class ODBDGN_1        {            [FieldOffset(0)]            public short datano;    /* data number */            [FieldOffset(2)]            public short type;      /* axis number */            [FieldOffset(4)]            public byte cdata;     /* parameter / setting data */            [FieldOffset(4)]            public short idata;            [FieldOffset(4)]            public int ldata;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDGN_2        {            public short datano;    /* data number */            public short type;      /* axis number */            public REALDGN rdata = new REALDGN();        }        [StructLayout(LayoutKind.Explicit)]        public class ODBDGN_3        {            [FieldOffset(0)]            public short datano;    /* data number */            [FieldOffset(2)]            public short type;      /* axis number */            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public byte[] cdatas;            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public short[] idatas;            [FieldOffset(4),            MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ldatas;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDGN_4        {            public short datano;    /* data number */            public short type;      /* axis number */            public REALDGNS rdatas = new REALDGNS();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDGN_A        {            public ODBDGN_1 data1 = new ODBDGN_1();            public ODBDGN_1 data2 = new ODBDGN_1();            public ODBDGN_1 data3 = new ODBDGN_1();            public ODBDGN_1 data4 = new ODBDGN_1();            public ODBDGN_1 data5 = new ODBDGN_1();            public ODBDGN_1 data6 = new ODBDGN_1();            public ODBDGN_1 data7 = new ODBDGN_1();        } /* (sample) must be modified */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDGN_B        {            public ODBDGN_2 data1 = new ODBDGN_2();            public ODBDGN_2 data2 = new ODBDGN_2();            public ODBDGN_2 data3 = new ODBDGN_2();            public ODBDGN_2 data4 = new ODBDGN_2();            public ODBDGN_2 data5 = new ODBDGN_2();            public ODBDGN_2 data6 = new ODBDGN_2();            public ODBDGN_2 data7 = new ODBDGN_2();        } /* (sample) must be modified */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDGN_C        {            public ODBDGN_3 data1 = new ODBDGN_3();            public ODBDGN_3 data2 = new ODBDGN_3();            public ODBDGN_3 data3 = new ODBDGN_3();            public ODBDGN_3 data4 = new ODBDGN_3();            public ODBDGN_3 data5 = new ODBDGN_3();            public ODBDGN_3 data6 = new ODBDGN_3();            public ODBDGN_3 data7 = new ODBDGN_3();        } /* (sample) must be modified */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDGN_D        {            public ODBDGN_4 data1 = new ODBDGN_4();            public ODBDGN_4 data2 = new ODBDGN_4();            public ODBDGN_4 data3 = new ODBDGN_4();            public ODBDGN_4 data4 = new ODBDGN_4();            public ODBDGN_4 data5 = new ODBDGN_4();            public ODBDGN_4 data6 = new ODBDGN_4();            public ODBDGN_4 data7 = new ODBDGN_4();        } /* (sample) must be modified */        /* cnc_adcnv:read A/D conversion data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAD        {            public short datano;    /* input analog voltage type */            public short type;      /* analog voltage type */            public short data;      /* digital voltage data */        }#if FS15D    /* cnc_rdopmsg:read operator's message */    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi,Pack=4)]    public class OPMSG_data    {        public short datano ;     /* operator's message number */        public short type ;       /* operator's message type   */        public short char_num ;   /* message string length   */        [MarshalAs(UnmanagedType.ByValTStr,SizeConst=129)]        public string  data= new string(' ',129) ;  /* operator's message string */    } /* In case that the data length is 129 */#else        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class OPMSG_data        {            public short datano;     /* operator's message number */            public short type;       /* operator's message type   */            public short char_num;   /* message string length   */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public string data = new string(' ', 256);  /* operator's message string */        } /* In case that the data length is 256 */#endif        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OPMSG        {            public OPMSG_data msg1 = new OPMSG_data();            public OPMSG_data msg2 = new OPMSG_data();            public OPMSG_data msg3 = new OPMSG_data();            public OPMSG_data msg4 = new OPMSG_data();            public OPMSG_data msg5 = new OPMSG_data();        }        /* cnc_rdopmsg2:read operator's message */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class OPMSG2_data        {            public short datano;    /* operator's message number */            public short type;      /* operator's message type */            public short char_num;  /* message string length */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]            public string data = new string(' ', 64);  /* operator's message string */        } /* In case that the data length is 64 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OPMSG2        {            public OPMSG2_data msg1 = new OPMSG2_data();            public OPMSG2_data msg2 = new OPMSG2_data();            public OPMSG2_data msg3 = new OPMSG2_data();            public OPMSG2_data msg4 = new OPMSG2_data();            public OPMSG2_data msg5 = new OPMSG2_data();        }        /* cnc_rdopmsg3:read operator's message */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class OPMSG3_data        {            public short datano;    /* operator's message number */            public short type;      /* operator's message type */            public short char_num;  /* message string length */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public string data = new string(' ', 256);  /* operator's message string */        } /* In case that the data length is 256 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class OPMSG3        {            public OPMSG3_data msg1 = new OPMSG3_data();            public OPMSG3_data msg2 = new OPMSG3_data();            public OPMSG3_data msg3 = new OPMSG3_data();            public OPMSG3_data msg4 = new OPMSG3_data();            public OPMSG3_data msg5 = new OPMSG3_data();        }        /* cnc_sysconfig:read CNC configuration information */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBSYSC        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] slot_no_p;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] slot_no_l;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] mod_id;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] soft_id;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series1 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series2 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series3 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series4 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series5 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series6 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series7 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series8 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series9 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series10 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series11 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series12 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series13 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series14 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series15 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_series16 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version1 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version2 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version3 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version4 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version5 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version6 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version7 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version8 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version9 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version10 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version11 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version12 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version13 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version14 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version15 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string s_version16 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] dummy;            public short m_rom;            public short s_rom;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public char[] svo_soft;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public char[] pmc_soft;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public char[] lad_soft;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public char[] mcr_soft;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public char[] spl1_soft;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public char[] spl2_soft;            public short frmmin;            public short drmmin;            public short srmmin;            public short pmcmin;            public short crtmin;            public short sv1min;            public short sv3min;            public short sicmin;            public short posmin;            public short drmmrc;            public short drmarc;            public short pmcmrc;            public short dmaarc;            public short iopt;            public short hdiio;            public short frmsub;            public short drmsub;            public short srmsub;            public short sv5sub;            public short sv7sub;            public short sicsub;            public short possub;            public short hamsub;            public short gm2gr1;            public short crtgr2;            public short gm1gr2;            public short gm2gr2;            public short cmmrb;            public short sv5axs;            public short sv7axs;            public short sicaxs;            public short posaxs;            public short hanaxs;            public short romr64;            public short srmr64;            public short dr1r64;            public short dr2r64;            public short iopio2;            public short hdiio2;            public short cmmrb2;            public short romfap;            public short srmfap;            public short drmfap;        }        /* cnc_rdprstrinfo:read program restart information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPRS        {            public short datano;         /* dummy */            public short type;           /* dummy */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] data_info;      /* data setting information */            public int rstr_bc;        /* block counter */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 35)]            public int[] rstr_m;         /* M code value */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] rstr_t;         /* T code value */            public int rstr_s;         /* S code value */            public int rstr_b;         /* B code value */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] dest;           /* program re-start position */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] dist;           /* program re-start distance */        }#if FS15D    /* cnc_rdopnlsgnl:read output signal image of software operator's panel */    /* cnc_wropnlsgnl:write output signal of software operator's panel */    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class IODBSGNL    {        public short   datano;     /* dummy */        public short   type;       /* data select flag */        public short   mode;       /* mode signal */        public short   hndl_ax;    /* Manual handle feed axis selection signal */        public short   hndl_mv;    /* Manual handle feed travel distance selection signal */        public short   rpd_ovrd;   /* rapid traverse override signal */        public short   jog_ovrd;   /* manual feedrate override signal */        public short   feed_ovrd;  /* feedrate override signal */        public short   spdl_ovrd;  /* spindle override signal */        public short   blck_del;   /* optional block skip signal */        public short   sngl_blck;  /* single block signal */        public short   machn_lock; /* machine lock signal */        public short   dry_run;    /* dry run signal */        public short   mem_prtct;  /* memory protection signal */        public short   feed_hold;  /* automatic operation halt signal */        public short   manual_rpd; /* (not used) */        [MarshalAs(UnmanagedType.ByValArray,SizeConst=2)]        public short[] dummy;      /* (not used) */    }#else        /* cnc_rdopnlsgnl:read output signal image of software operator's panel */        /* cnc_wropnlsgnl:write output signal of software operator's panel */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSGNL        {            public short datano;     /* dummy */            public short type;       /* data select flag */            public short mode;       /* mode signal */            public short hndl_ax;    /* Manual handle feed axis selection signal */            public short hndl_mv;    /* Manual handle feed travel distance selection signal */            public short rpd_ovrd;   /* rapid traverse override signal */            public short jog_ovrd;   /* manual feedrate override signal */            public short feed_ovrd;  /* feedrate override signal */            public short spdl_ovrd;  /* (not used) */            public short blck_del;   /* optional block skip signal */            public short sngl_blck;  /* single block signal */            public short machn_lock; /* machine lock signal */            public short dry_run;    /* dry run signal */            public short mem_prtct;  /* memory protection signal */            public short feed_hold;  /* automatic operation halt signal */        }#endif        /* cnc_rdopnlgnrl:read general signal image of software operator's panel */        /* cnc_wropnlgnrl:write general signal image of software operator's panel */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBGNRL        {            public short datano; /* dummy */            public short type;   /* data select flag */            public byte sgnal;  /* general signal */        }        /* cnc_rdopnlgsname:read general signal name of software operator's panel */        /* cnc_wropnlgsname:write general signal name of software operator's panel*/        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IODBRDNA        {            public short datano;         /* dummy */            public short type;           /* data select flag */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl1_name = new string(' ', 9);  /* general signal 1 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl2_name = new string(' ', 9);  /* general signal 2 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl3_name = new string(' ', 9);  /* general signal 3 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl4_name = new string(' ', 9);  /* general signal 4 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl5_name = new string(' ', 9);  /* general signal 5 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl6_name = new string(' ', 9);  /* general signal 6 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl7_name = new string(' ', 9);  /* general signal 7 name */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]            public string sgnl8_name = new string(' ', 9);  /* general signal 8 name */        }        /* cnc_getdtailerr:get detail error */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBERR        {            public short err_no;            public short err_dtno;        }        /* cnc_rdparainfo:read informations of CNC parameter */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPARAIF_info        {            public short prm_no;            public short prm_type;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPARAIF1        {            public ODBPARAIF_info info1 = new ODBPARAIF_info();            public ODBPARAIF_info info2 = new ODBPARAIF_info();            public ODBPARAIF_info info3 = new ODBPARAIF_info();            public ODBPARAIF_info info4 = new ODBPARAIF_info();            public ODBPARAIF_info info5 = new ODBPARAIF_info();            public ODBPARAIF_info info6 = new ODBPARAIF_info();            public ODBPARAIF_info info7 = new ODBPARAIF_info();            public ODBPARAIF_info info8 = new ODBPARAIF_info();            public ODBPARAIF_info info9 = new ODBPARAIF_info();            public ODBPARAIF_info info10 = new ODBPARAIF_info();        }  /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPARAIF        {            public ushort info_no;            public short prev_no;            public short next_no;            public ODBPARAIF1 info = new ODBPARAIF1();        }        /* cnc_rdsetinfo:read informations of CNC setting data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSETIF_info        {            public short set_no;            public short set_type;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSETIF1        {            public ODBSETIF_info info1 = new ODBSETIF_info();            public ODBSETIF_info info2 = new ODBSETIF_info();            public ODBSETIF_info info3 = new ODBSETIF_info();            public ODBSETIF_info info4 = new ODBSETIF_info();            public ODBSETIF_info info5 = new ODBSETIF_info();            public ODBSETIF_info info6 = new ODBSETIF_info();            public ODBSETIF_info info7 = new ODBSETIF_info();            public ODBSETIF_info info8 = new ODBSETIF_info();            public ODBSETIF_info info9 = new ODBSETIF_info();            public ODBSETIF_info info10 = new ODBSETIF_info();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSETIF        {            public ushort info_no;            public short prev_no;            public short next_no;            public ODBSETIF1 info = new ODBSETIF1();        }        /* cnc_rddiaginfo:read informations of CNC diagnose data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDIAGIF_info        {            public short diag_no;            public short diag_type;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDIAGIF1        {            public ODBDIAGIF_info info1 = new ODBDIAGIF_info();            public ODBDIAGIF_info info2 = new ODBDIAGIF_info();            public ODBDIAGIF_info info3 = new ODBDIAGIF_info();            public ODBDIAGIF_info info4 = new ODBDIAGIF_info();            public ODBDIAGIF_info info5 = new ODBDIAGIF_info();            public ODBDIAGIF_info info6 = new ODBDIAGIF_info();            public ODBDIAGIF_info info7 = new ODBDIAGIF_info();            public ODBDIAGIF_info info8 = new ODBDIAGIF_info();            public ODBDIAGIF_info info9 = new ODBDIAGIF_info();            public ODBDIAGIF_info info10 = new ODBDIAGIF_info();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDIAGIF        {            public ushort info_no;            public short prev_no;            public short next_no;            public ODBDIAGIF1 info = new ODBDIAGIF1();        }        /* cnc_rdparanum:read maximum, minimum and total number of CNC parameter */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPARANUM        {            public ushort para_min;            public ushort para_max;            public ushort total_no;        }        /* cnc_rdsetnum:read maximum, minimum and total number of CNC setting data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSETNUM        {            public ushort set_min;            public ushort set_max;            public ushort total_no;        }        /* cnc_rddiagnum:read maximum, minimum and total number of CNC diagnose data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDIAGNUM        {            public ushort diag_min;            public ushort diag_max;            public ushort total_no;        }        /* cnc_rdfrominfo:read F-ROM information on CNC  */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBFINFO_info        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string sysname = new string(' ', 12);  /* F-ROM SYSTEM data Name */            public int fromsize;      /* F-ROM Size */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBFINFO1        {            public ODBFINFO_info info1 = new ODBFINFO_info();            public ODBFINFO_info info2 = new ODBFINFO_info();            public ODBFINFO_info info3 = new ODBFINFO_info();            public ODBFINFO_info info4 = new ODBFINFO_info();            public ODBFINFO_info info5 = new ODBFINFO_info();            public ODBFINFO_info info6 = new ODBFINFO_info();            public ODBFINFO_info info7 = new ODBFINFO_info();            public ODBFINFO_info info8 = new ODBFINFO_info();            public ODBFINFO_info info9 = new ODBFINFO_info();            public ODBFINFO_info info10 = new ODBFINFO_info();            public ODBFINFO_info info11 = new ODBFINFO_info();            public ODBFINFO_info info12 = new ODBFINFO_info();            public ODBFINFO_info info13 = new ODBFINFO_info();            public ODBFINFO_info info14 = new ODBFINFO_info();            public ODBFINFO_info info15 = new ODBFINFO_info();            public ODBFINFO_info info16 = new ODBFINFO_info();            public ODBFINFO_info info17 = new ODBFINFO_info();            public ODBFINFO_info info18 = new ODBFINFO_info();            public ODBFINFO_info info19 = new ODBFINFO_info();            public ODBFINFO_info info20 = new ODBFINFO_info();            public ODBFINFO_info info21 = new ODBFINFO_info();            public ODBFINFO_info info22 = new ODBFINFO_info();            public ODBFINFO_info info23 = new ODBFINFO_info();            public ODBFINFO_info info24 = new ODBFINFO_info();            public ODBFINFO_info info25 = new ODBFINFO_info();            public ODBFINFO_info info26 = new ODBFINFO_info();            public ODBFINFO_info info27 = new ODBFINFO_info();            public ODBFINFO_info info28 = new ODBFINFO_info();            public ODBFINFO_info info29 = new ODBFINFO_info();            public ODBFINFO_info info30 = new ODBFINFO_info();            public ODBFINFO_info info31 = new ODBFINFO_info();            public ODBFINFO_info info32 = new ODBFINFO_info();        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBFINFO        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string slotname = new string(' ', 12);  /* Slot Name */            public int fromnum;           /* Number of F-ROM SYSTEM data */            public ODBFINFO1 info = new ODBFINFO1();        }        /* cnc_getfrominfo:read F-ROM information on CNC  */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBFINFORM_info        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string sysname = new string(' ', 12);  /* F-ROM SYSTEM data Name */            public int fromsize;      /* F-ROM Size */            public int fromattrib;    /* F-ROM data attribute */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBFINFORM1        {            public ODBFINFORM_info info1 = new ODBFINFORM_info();            public ODBFINFORM_info info2 = new ODBFINFORM_info();            public ODBFINFORM_info info3 = new ODBFINFORM_info();            public ODBFINFORM_info info4 = new ODBFINFORM_info();            public ODBFINFORM_info info5 = new ODBFINFORM_info();            public ODBFINFORM_info info6 = new ODBFINFORM_info();            public ODBFINFORM_info info7 = new ODBFINFORM_info();            public ODBFINFORM_info info8 = new ODBFINFORM_info();            public ODBFINFORM_info info9 = new ODBFINFORM_info();            public ODBFINFORM_info info10 = new ODBFINFORM_info();            public ODBFINFORM_info info11 = new ODBFINFORM_info();            public ODBFINFORM_info info12 = new ODBFINFORM_info();            public ODBFINFORM_info info13 = new ODBFINFORM_info();            public ODBFINFORM_info info14 = new ODBFINFORM_info();            public ODBFINFORM_info info15 = new ODBFINFORM_info();            public ODBFINFORM_info info16 = new ODBFINFORM_info();            public ODBFINFORM_info info17 = new ODBFINFORM_info();            public ODBFINFORM_info info18 = new ODBFINFORM_info();            public ODBFINFORM_info info19 = new ODBFINFORM_info();            public ODBFINFORM_info info20 = new ODBFINFORM_info();            public ODBFINFORM_info info21 = new ODBFINFORM_info();            public ODBFINFORM_info info22 = new ODBFINFORM_info();            public ODBFINFORM_info info23 = new ODBFINFORM_info();            public ODBFINFORM_info info24 = new ODBFINFORM_info();            public ODBFINFORM_info info25 = new ODBFINFORM_info();            public ODBFINFORM_info info26 = new ODBFINFORM_info();            public ODBFINFORM_info info27 = new ODBFINFORM_info();            public ODBFINFORM_info info28 = new ODBFINFORM_info();            public ODBFINFORM_info info29 = new ODBFINFORM_info();            public ODBFINFORM_info info30 = new ODBFINFORM_info();            public ODBFINFORM_info info31 = new ODBFINFORM_info();            public ODBFINFORM_info info32 = new ODBFINFORM_info();        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBFINFORM        {            public int slotno;            /* Slot Number */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string slotname = new string(' ', 12);  /* Slot Name */            public int fromnum;           /* Number of F-ROM SYSTEM data */            public ODBFINFORM1 info = new ODBFINFORM1();        }        /* cnc_rdsraminfo:read S-RAM information on CNC */        /* cnc_getsraminfo:read S-RAM information on CNC */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBSINFO_info        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string sramname = new string(' ', 12); /* S-RAM data Name */            public int sramsize;     /* S-RAM data Size */            public short divnumber;    /* Division number of S-RAM file */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string fname1 = new string(' ', 16);    /* S-RAM data Name1 */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string fname2 = new string(' ', 16);    /* S-RAM data Name2 */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string fname3 = new string(' ', 16);    /* S-RAM data Name3 */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string fname4 = new string(' ', 16);    /* S-RAM data Name4 */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string fname5 = new string(' ', 16);    /* S-RAM data Name5 */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string fname6 = new string(' ', 16);    /* S-RAM data Name6 */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSINFO1        {            public ODBSINFO_info info1 = new ODBSINFO_info();            public ODBSINFO_info info2 = new ODBSINFO_info();            public ODBSINFO_info info3 = new ODBSINFO_info();            public ODBSINFO_info info4 = new ODBSINFO_info();            public ODBSINFO_info info5 = new ODBSINFO_info();            public ODBSINFO_info info6 = new ODBSINFO_info();            public ODBSINFO_info info7 = new ODBSINFO_info();            public ODBSINFO_info info8 = new ODBSINFO_info();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSINFO        {            public int sramnum;          /* Number of S-RAM data */            public ODBSINFO1 info = new ODBSINFO1();        }        /* cnc_rdsramaddr:read S-RAM address on CNC */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class SRAMADDR        {            public short type;          /* SRAM data type */            public int size;          /* SRAM data size */            public int offset;        /* offset from top address of SRAM */        }        /* cnc_dtsvrdpgdir:read file directory in Data Server */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBDSDIR_data        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string file_name = new string(' ', 16);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]            public string comment = new string(' ', 64);            public int size;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string date = new string(' ', 16);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDSDIR1        {            public ODBDSDIR_data data1 = new ODBDSDIR_data();            public ODBDSDIR_data data2 = new ODBDSDIR_data();            public ODBDSDIR_data data3 = new ODBDSDIR_data();            public ODBDSDIR_data data4 = new ODBDSDIR_data();            public ODBDSDIR_data data5 = new ODBDSDIR_data();            public ODBDSDIR_data data6 = new ODBDSDIR_data();            public ODBDSDIR_data data7 = new ODBDSDIR_data();            public ODBDSDIR_data data8 = new ODBDSDIR_data();            public ODBDSDIR_data data9 = new ODBDSDIR_data();            public ODBDSDIR_data data10 = new ODBDSDIR_data();            public ODBDSDIR_data data11 = new ODBDSDIR_data();            public ODBDSDIR_data data12 = new ODBDSDIR_data();            public ODBDSDIR_data data13 = new ODBDSDIR_data();            public ODBDSDIR_data data14 = new ODBDSDIR_data();            public ODBDSDIR_data data15 = new ODBDSDIR_data();            public ODBDSDIR_data data16 = new ODBDSDIR_data();            public ODBDSDIR_data data17 = new ODBDSDIR_data();            public ODBDSDIR_data data18 = new ODBDSDIR_data();            public ODBDSDIR_data data19 = new ODBDSDIR_data();            public ODBDSDIR_data data20 = new ODBDSDIR_data();            public ODBDSDIR_data data21 = new ODBDSDIR_data();            public ODBDSDIR_data data22 = new ODBDSDIR_data();            public ODBDSDIR_data data23 = new ODBDSDIR_data();            public ODBDSDIR_data data24 = new ODBDSDIR_data();            public ODBDSDIR_data data25 = new ODBDSDIR_data();            public ODBDSDIR_data data26 = new ODBDSDIR_data();            public ODBDSDIR_data data27 = new ODBDSDIR_data();            public ODBDSDIR_data data28 = new ODBDSDIR_data();            public ODBDSDIR_data data29 = new ODBDSDIR_data();            public ODBDSDIR_data data30 = new ODBDSDIR_data();            public ODBDSDIR_data data31 = new ODBDSDIR_data();            public ODBDSDIR_data data32 = new ODBDSDIR_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDSDIR        {            public int file_num;            public int remainder;            public short data_num;            public ODBDSDIR1 data = new ODBDSDIR1();        }        /* cnc_dtsvrdset:read setting data for Data Server */        /* cnc_dtsvwrset:write setting data for Data Server */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IODBDSSET        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string host_ip = new string(' ', 16);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string host_uname = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string host_passwd = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]            public string host_dir = new string(' ', 128);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]            public string dtsv_mac = new string(' ', 13);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string dtsv_ip = new string(' ', 16);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string dtsv_mask = new string(' ', 16);        }        /* cnc_dtsvmntinfo:read maintenance information for Data Server */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDSMNT        {            public int empty_cnt;            public int total_size;            public int read_ptr;            public int write_ptr;        }        /* cnc_rdposerrs2:read the position deviation S1 and S2 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPSER        {            public int poserr1;            public int poserr2;        }        /* cnc_rdctrldi:read the control input signal */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPDI_data        {            public byte sgnl1;            public byte sgnl2;            public byte sgnl3;            public byte sgnl4;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPDI        {            public ODBSPDI_data di1 = new ODBSPDI_data();            public ODBSPDI_data di2 = new ODBSPDI_data();            public ODBSPDI_data di3 = new ODBSPDI_data();            public ODBSPDI_data di4 = new ODBSPDI_data();        }        /* cnc_rdctrldo:read the control output signal */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPDO_data        {            public byte sgnl1;            public byte sgnl2;            public byte sgnl3;            public byte sgnl4;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPDO        {            public ODBSPDO_data do1 = new ODBSPDO_data();            public ODBSPDO_data do2 = new ODBSPDO_data();            public ODBSPDO_data do3 = new ODBSPDO_data();            public ODBSPDO_data do4 = new ODBSPDO_data();        }        /* cnc_rdwaveprm:read the parameter of wave diagnosis */        /* cnc_wrwaveprm:write the parameter of wave diagnosis */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWAVE_io        {            public byte adr;            public byte bit;            public short no;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWAVE_axis        {            public short axis;        }        [StructLayout(LayoutKind.Explicit)]        public class IODBWAVE_u        {            [FieldOffset(0)]            public IODBWAVE_io io = new IODBWAVE_io();            [FieldOffset(0)]            public IODBWAVE_axis axis = new IODBWAVE_axis();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWAVE_ch_data        {            public short kind;            public IODBWAVE_u u = new IODBWAVE_u();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWAVE_ch        {            public IODBWAVE_ch_data ch1 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch2 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch3 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch4 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch5 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch6 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch7 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch8 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch9 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch10 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch11 = new IODBWAVE_ch_data();            public IODBWAVE_ch_data ch12 = new IODBWAVE_ch_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWAVE        {            public short condition;            public char trg_adr;            public byte trg_bit;            public short trg_no;            public short delay;            public short t_range;            public IODBWAVE_ch ch = new IODBWAVE_ch();        }        /* cnc_rdwaveprm2:read the parameter of wave diagnosis 2 */        /* cnc_wrwaveprm2:write the parameter of wave diagnosis 2 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWVPRM_io        {            public byte adr;            public byte bit;            public short no;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWVPRM_axis        {            public short axis;        }        [StructLayout(LayoutKind.Explicit)]        public class IODBWVPRM_u        {            [FieldOffset(0)]            public IODBWVPRM_io io = new IODBWVPRM_io();            [FieldOffset(0)]            public IODBWVPRM_axis axis = new IODBWVPRM_axis();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWVPRM_ch_data        {            public short kind;            public IODBWVPRM_u u = new IODBWVPRM_u();            public int reserve2;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWVPRM_ch        {            public IODBWVPRM_ch_data ch1 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch2 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch3 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch4 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch5 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch6 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch7 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch8 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch9 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch10 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch11 = new IODBWVPRM_ch_data();            public IODBWVPRM_ch_data ch12 = new IODBWVPRM_ch_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWVPRM        {            public short condition;            public byte trg_adr;            public byte trg_bit;            public short trg_no;            public short reserve1;            public int delay;            public int t_range;            public IODBWVPRM_ch ch = new IODBWVPRM_ch();        }        /* cnc_rdwavedata:read the data of wave diagnosis */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBWVDT_io        {            public byte adr;            public byte bit;            public short no;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBWVDT_axis        {            public short axis;        }        [StructLayout(LayoutKind.Explicit)]        public class ODBWVDT_u        {            [FieldOffset(0)]            public ODBWVDT_io io = new ODBWVDT_io();            [FieldOffset(0)]            public ODBWVDT_axis axis = new ODBWVDT_axis();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBWVDT        {            public short channel;            public short kind;            public ODBWVDT_u u = new ODBWVDT_u();            public byte year;            public byte month;            public byte day;            public byte hour;            public byte minute;            public byte second;            public short t_cycle;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8192)]            public short[] data;        }        /* cnc_rdrmtwaveprm:read the parameter of wave diagnosis for remort diagnosis */        /* cnc_wrrmtwaveprm:write the parameter of wave diagnosis for remort diagnosis */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBRMTPRM_alm        {            public short no;            public sbyte axis;            public byte type;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBRMTPRM_io        {            public char adr;            public byte bit;            public short no;        }        [StructLayout(LayoutKind.Explicit)]        public class IODBRMTPRM_trg        {            [FieldOffset(0)]            public IODBRMTPRM_alm alm = new IODBRMTPRM_alm();            [FieldOffset(0)]            public IODBRMTPRM_io io = new IODBRMTPRM_io();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBRMTPRM_smpl        {            public char adr;            public byte bit;            public short no;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBRMTPRM1        {            public IODBRMTPRM_smpl ampl1 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl2 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl3 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl4 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl5 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl6 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl7 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl8 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl9 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl10 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl11 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl12 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl13 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl14 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl15 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl16 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl17 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl18 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl19 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl20 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl21 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl22 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl23 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl24 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl25 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl26 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl27 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl28 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl29 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl30 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl31 = new IODBRMTPRM_smpl();            public IODBRMTPRM_smpl ampl32 = new IODBRMTPRM_smpl();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBRMTPRM        {            public short condition;            public short reserve;            public IODBRMTPRM_trg trg = new IODBRMTPRM_trg();            public int delay;            public short wv_intrvl;            public short io_intrvl;            public short kind1;            public short kind2;            public IODBRMTPRM1 ampl = new IODBRMTPRM1();        }        /* cnc_rdrmtwavedt:read the data of wave diagnosis for remort diagnosis */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBRMTDT        {            public short channel;            public short kind;            public byte year;            public byte month;            public byte day;            public byte hour;            public byte minute;            public byte second;            public short t_intrvl;            public short trg_data;            public int ins_ptr;            public short t_delta;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1917)]            public short[] data;        }        /* cnc_rdsavsigadr:read of address for PMC signal batch save */        /* cnc_wrsavsigadr:write of address for PMC signal batch save */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSIGAD        {            public byte adr;            public byte reserve;            public short no;            public short size;        }        /* cnc_rdmgrpdata:read M-code group data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBMGRP_data        {            public int m_code;            public short grp_no;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]            public string m_name = new string(' ', 21);            public byte dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMGRP        {            public ODBMGRP_data mgrp1 = new ODBMGRP_data();            public ODBMGRP_data mgrp2 = new ODBMGRP_data();            public ODBMGRP_data mgrp3 = new ODBMGRP_data();            public ODBMGRP_data mgrp4 = new ODBMGRP_data();            public ODBMGRP_data mgrp5 = new ODBMGRP_data();            public ODBMGRP_data mgrp6 = new ODBMGRP_data();            public ODBMGRP_data mgrp7 = new ODBMGRP_data();            public ODBMGRP_data mgrp8 = new ODBMGRP_data();            public ODBMGRP_data mgrp9 = new ODBMGRP_data();            public ODBMGRP_data mgrp10 = new ODBMGRP_data();        }        /* cnc_wrmgrpdata:write M-code group data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBMGRP        {            public short s_no;            public short dummy;            public short num;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 500)]            public short[] group = new short[500];        }        /* cnc_rdexecmcode:read executing M-code group data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBEXEM_data        {            public int no;            public short flag;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBEXEM1        {            public ODBEXEM_data m_code1 = new ODBEXEM_data();            public ODBEXEM_data m_code2 = new ODBEXEM_data();            public ODBEXEM_data m_code3 = new ODBEXEM_data();            public ODBEXEM_data m_code4 = new ODBEXEM_data();            public ODBEXEM_data m_code5 = new ODBEXEM_data();        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBEXEM        {            public short grp_no;            public short mem_no;            public ODBEXEM1 m_code = new ODBEXEM1();            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]            public string m_name = new string(' ', 21);            public byte dummy;        }        /* cnc_rdrstrmcode:read program restart M-code group data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class M_CODE_data        {            public int no;            public short flag;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class M_CODE1        {            public M_CODE_data m_code1 = new M_CODE_data();            public M_CODE_data m_code2 = new M_CODE_data();            public M_CODE_data m_code3 = new M_CODE_data();            public M_CODE_data m_code4 = new M_CODE_data();            public M_CODE_data m_code5 = new M_CODE_data();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBRSTRM        {            public short grp_no;            public short mem_no;            public M_CODE1 m_code = new M_CODE1();        }        /* cnc_rdproctime:read processing time stamp data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPTIME_data        {            public int prg_no;            public short hour;            public byte minute;            public byte second;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPTIME1        {            public ODBPTIME_data data1 = new ODBPTIME_data();            public ODBPTIME_data data2 = new ODBPTIME_data();            public ODBPTIME_data data3 = new ODBPTIME_data();            public ODBPTIME_data data4 = new ODBPTIME_data();            public ODBPTIME_data data5 = new ODBPTIME_data();            public ODBPTIME_data data6 = new ODBPTIME_data();            public ODBPTIME_data data7 = new ODBPTIME_data();            public ODBPTIME_data data8 = new ODBPTIME_data();            public ODBPTIME_data data9 = new ODBPTIME_data();            public ODBPTIME_data data10 = new ODBPTIME_data();        } /* In case that the number of data is 10 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPTIME        {            public short num;            public ODBPTIME1 data = new ODBPTIME1();        }        /* cnc_rdprgdirtime:read program directory for processing time data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIRTM_data        {            public int prg_no;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 51)]            public string comment = new string(' ', 51);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]            public string cuttime = new string(' ', 13);        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIRTM        {            public PRGDIRTM_data data1 = new PRGDIRTM_data();            public PRGDIRTM_data data2 = new PRGDIRTM_data();            public PRGDIRTM_data data3 = new PRGDIRTM_data();            public PRGDIRTM_data data4 = new PRGDIRTM_data();            public PRGDIRTM_data data5 = new PRGDIRTM_data();            public PRGDIRTM_data data6 = new PRGDIRTM_data();            public PRGDIRTM_data data7 = new PRGDIRTM_data();            public PRGDIRTM_data data8 = new PRGDIRTM_data();            public PRGDIRTM_data data9 = new PRGDIRTM_data();            public PRGDIRTM_data data10 = new PRGDIRTM_data();        } /* In case that the number of data is 10 */        /* cnc_rdprogdir2:read program directory 2 */#if (!ONO8D)        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIR2_data        {            public short number;            public int length;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 51)]            public string comment = new string(' ', 51);            public byte dummy;        }#else    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi,Pack=4)]    public class PRGDIR2_data    {        public int     number ;        public int     length ;        [MarshalAs(UnmanagedType.ByValTStr,SizeConst=51)]        public string  comment= new string(' ',51) ;        public byte    dummy ;    }#endif        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIR2        {            public PRGDIR2_data dir1 = new PRGDIR2_data();            public PRGDIR2_data dir2 = new PRGDIR2_data();            public PRGDIR2_data dir3 = new PRGDIR2_data();            public PRGDIR2_data dir4 = new PRGDIR2_data();            public PRGDIR2_data dir5 = new PRGDIR2_data();            public PRGDIR2_data dir6 = new PRGDIR2_data();            public PRGDIR2_data dir7 = new PRGDIR2_data();            public PRGDIR2_data dir8 = new PRGDIR2_data();            public PRGDIR2_data dir9 = new PRGDIR2_data();            public PRGDIR2_data dir10 = new PRGDIR2_data();        } /* In case that the number of data is 10 */        /* cnc_rdprogdir3:read program directory 3 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class DIR3_MDATE        {            public short year;            public short month;            public short day;            public short hour;            public short minute;            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class DIR3_CDATE        {            public short year;            public short month;            public short day;            public short hour;            public short minute;            public short dummy;        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIR3_data        {            public int number;            public int length;            public int page;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 52)]            public string comment = new string(' ', 52);            public DIR3_MDATE mdate = new DIR3_MDATE();            public DIR3_CDATE cdate = new DIR3_CDATE();        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIR3        {            public PRGDIR3_data dir1 = new PRGDIR3_data();            public PRGDIR3_data dir2 = new PRGDIR3_data();            public PRGDIR3_data dir3 = new PRGDIR3_data();            public PRGDIR3_data dir4 = new PRGDIR3_data();            public PRGDIR3_data dir5 = new PRGDIR3_data();            public PRGDIR3_data dir6 = new PRGDIR3_data();            public PRGDIR3_data dir7 = new PRGDIR3_data();            public PRGDIR3_data dir8 = new PRGDIR3_data();            public PRGDIR3_data dir9 = new PRGDIR3_data();            public PRGDIR3_data dir10 = new PRGDIR3_data();        } /* In case that the number of data is 10 */        /* cnc_rdprogdir4:read program directory 4 */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class DIR4_MDATE        {            public short year;            public short month;            public short day;            public short hour;            public short minute;            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class DIR4_CDATE        {            public short year;            public short month;            public short day;            public short hour;            public short minute;            public short dummy;        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIR4_data        {            public int number;            public int length;            public int page;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 52)]            public string comment = new string(' ', 52);            public DIR4_MDATE mdate = new DIR4_MDATE();            public DIR4_CDATE cdate = new DIR4_CDATE();        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class PRGDIR4        {            public PRGDIR4_data dir1 = new PRGDIR4_data();            public PRGDIR4_data dir2 = new PRGDIR4_data();            public PRGDIR4_data dir3 = new PRGDIR4_data();            public PRGDIR4_data dir4 = new PRGDIR4_data();            public PRGDIR4_data dir5 = new PRGDIR4_data();            public PRGDIR4_data dir6 = new PRGDIR4_data();            public PRGDIR4_data dir7 = new PRGDIR4_data();            public PRGDIR4_data dir8 = new PRGDIR4_data();            public PRGDIR4_data dir9 = new PRGDIR4_data();            public PRGDIR4_data dir10 = new PRGDIR4_data();        } /* In case that the number of data is 10 */        /* cnc_rdcomparam:read communication parameter for DNC1, DNC2, OSI-Ethernet */        /* cnc_wrcomparam:write communication parameter for DNC1, DNC2, OSI-Ethernet */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IODBCPRM        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)]            public string NcApli = new string(' ', 65);            public byte Dummy1;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)]            public string HostApli = new string(' ', 65);            public byte Dummy2;            public uint StatPstv;            public uint StatNgtv;            public uint Statmask;            public uint AlarmStat;            public uint PsclHaddr;            public uint PsclLaddr;            public ushort SvcMode1;            public ushort SvcMode2;            public int FileTout;            public int RemTout;        }        /* cnc_rdintchk:read interference check */        /* cnc_wrintchk:write interference check */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBINT        {            public short datano_s;   /* start offset No. */            public short type;       /* kind of position */            public short datano_e;   /* end offset No. */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 3)]            public int[] data = new int[8 * 3];       /* position value of area for not attach */        }        /* cnc_rdwkcdshft:read work coordinate shift */        /* cnc_wrwkcdshft:write work coordinate shift */        /* cnc_rdwkcdsfms:read work coordinate shift measure */        /* cnc_wrwkcdsfms:write work coordinate shift measure */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBWCSF        {            public short datano;    /* datano           */            public short type;      /* axis number      */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] data = new int[MAX_AXIS];       /* data             */        }        /* cnc_rdomhisinfo:read operator message history information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOMIF        {            public ushort om_max;   /* maximum operator message history */            public ushort om_sum;   /* actually operator message history */            public ushort om_char;  /* maximum character (include NULL) */        }        /* cnc_rdomhistry:read operator message history */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBOMHIS_data        {            public short om_no;  /* operator message number */            public short year;   /* year */            public short month;  /* month */            public short day;    /* day */            public short hour;   /* hour */            public short minute; /* mimute */            public short second; /* second */            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public string om_msg = new string(' ', 256);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBOMHIS        {            public ODBOMHIS_data omhis1 = new ODBOMHIS_data();            public ODBOMHIS_data omhis2 = new ODBOMHIS_data();            public ODBOMHIS_data omhis3 = new ODBOMHIS_data();            public ODBOMHIS_data omhis4 = new ODBOMHIS_data();            public ODBOMHIS_data omhis5 = new ODBOMHIS_data();            public ODBOMHIS_data omhis6 = new ODBOMHIS_data();            public ODBOMHIS_data omhis7 = new ODBOMHIS_data();            public ODBOMHIS_data omhis8 = new ODBOMHIS_data();            public ODBOMHIS_data omhis9 = new ODBOMHIS_data();            public ODBOMHIS_data omhis10 = new ODBOMHIS_data();        } /* In case that the number of data is 10 */        /* cnc_rdbtofsr:read b-axis tool offset value(area specified) */        /* cnc_wrbtofsr:write b-axis tool offset value(area specified) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBBTO        {            public short datano_s;     /* start offset number */            public short type;     /* offset type */            public short datano_e;     /* end offset number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]            public int[] ofs = new int[18];        /* offset */        } /* In case that the number of data is 9 (B type) */        /* cnc_rdbtofsinfo:read b-axis tool offset information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBBTLINF        {            public short ofs_type;   /* memory type */            public short use_no;     /* sum of b-axis offset */            public short sub_no;     /* sub function number of offset cancel */        }        /* cnc_rdbaxis:read b-axis command */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBBAXIS        {            public short flag;        /* b-axis command exist or not */            public short command;     /* b-axis command */            public ushort speed;       /* b-axis speed */            public int sub_data;    /* b-axis sub data */        }        /* cnc_rdsyssoft:read CNC system soft series and version */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBSYSS        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] slot_no_p;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] slot_no_l;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] module_id;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] soft_id;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series1 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series2 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series3 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series4 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series5 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series6 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series7 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series8 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series9 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series10 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series11 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series12 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series13 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series14 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series15 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series16 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version1 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version2 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version3 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version4 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version5 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version6 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version7 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version8 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version9 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version10 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version11 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version12 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version13 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version14 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version15 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version16 = new string(' ', 5);            public short soft_inst;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string boot_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string boot_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string servo_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string servo_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string ladder_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string ladder_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrlib_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrlib_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrapl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrapl_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl1_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl1_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl2_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl2_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl3_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl3_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exelib_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exelib_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exeapl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exeapl_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string int_vga_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string int_vga_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string out_vga_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string out_vga_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmm_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmm_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_mng_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_mng_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shin_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shin_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shout_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shout_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_c_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_c_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_edit_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_edit_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_mng_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_mng_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_apl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_apl_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl4_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl4_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr2_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr2_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr3_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr3_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string eth_boot_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string eth_boot_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 5)]            public byte[] reserve;        }        /* cnc_rdsyssoft2:read CNC system soft series and version (2) */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBSYSS2        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] slot_no_p;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public byte[] slot_no_l;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] module_id;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] soft_id;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series1 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series2 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series3 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series4 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series5 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series6 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series7 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series8 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series9 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series10 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series11 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series12 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series13 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series14 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series15 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_series16 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version1 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version2 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version3 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version4 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version5 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version6 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version7 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version8 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version9 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version10 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version11 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version12 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version13 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version14 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version15 = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string soft_version16 = new string(' ', 5);            public short soft_inst;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string boot_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string boot_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string servo_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string servo_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string ladder_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string ladder_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrlib_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrlib_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrapl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcrapl_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl1_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl1_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl2_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl2_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl3_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl3_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exelib_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exelib_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exeapl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string c_exeapl_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string int_vga_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string int_vga_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string out_vga_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string out_vga_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmm_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmm_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_mng_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_mng_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shin_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shin_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shout_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_shout_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_c_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_c_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_edit_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string pmc_edit_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_mng_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_mng_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_apl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string lddr_apl_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl4_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string spl4_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr2_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr2_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr3_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string mcr3_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string eth_boot_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string eth_boot_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 5)]            public byte[] reserve;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string embEthe_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string embEthe_ver = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 38 * 5)]            public byte[] reserve2;        }        /* cnc_rdsyssoft3:read CNC system soft series and version (3) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSS3_data        {            public short soft_id;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public char[] soft_series;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public char[] soft_edition;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSS3        {            public ODBSYSS3_data p1 = new ODBSYSS3_data();            public ODBSYSS3_data p2 = new ODBSYSS3_data();            public ODBSYSS3_data p3 = new ODBSYSS3_data();            public ODBSYSS3_data p4 = new ODBSYSS3_data();            public ODBSYSS3_data p5 = new ODBSYSS3_data();            public ODBSYSS3_data p6 = new ODBSYSS3_data();            public ODBSYSS3_data p7 = new ODBSYSS3_data();            public ODBSYSS3_data p8 = new ODBSYSS3_data();            public ODBSYSS3_data p9 = new ODBSYSS3_data();            public ODBSYSS3_data p10 = new ODBSYSS3_data();            public ODBSYSS3_data p11 = new ODBSYSS3_data();            public ODBSYSS3_data p12 = new ODBSYSS3_data();            public ODBSYSS3_data p13 = new ODBSYSS3_data();            public ODBSYSS3_data p14 = new ODBSYSS3_data();            public ODBSYSS3_data p15 = new ODBSYSS3_data();            public ODBSYSS3_data p16 = new ODBSYSS3_data();            public ODBSYSS3_data p17 = new ODBSYSS3_data();            public ODBSYSS3_data p18 = new ODBSYSS3_data();            public ODBSYSS3_data p19 = new ODBSYSS3_data();            public ODBSYSS3_data p20 = new ODBSYSS3_data();            public ODBSYSS3_data p21 = new ODBSYSS3_data();            public ODBSYSS3_data p22 = new ODBSYSS3_data();            public ODBSYSS3_data p23 = new ODBSYSS3_data();            public ODBSYSS3_data p24 = new ODBSYSS3_data();            public ODBSYSS3_data p25 = new ODBSYSS3_data();            public ODBSYSS3_data p26 = new ODBSYSS3_data();            public ODBSYSS3_data p27 = new ODBSYSS3_data();            public ODBSYSS3_data p28 = new ODBSYSS3_data();            public ODBSYSS3_data p29 = new ODBSYSS3_data();            public ODBSYSS3_data p30 = new ODBSYSS3_data();            public ODBSYSS3_data p31 = new ODBSYSS3_data();            public ODBSYSS3_data p32 = new ODBSYSS3_data();            public ODBSYSS3_data p33 = new ODBSYSS3_data();            public ODBSYSS3_data p34 = new ODBSYSS3_data();            public ODBSYSS3_data p35 = new ODBSYSS3_data();            public ODBSYSS3_data p36 = new ODBSYSS3_data();            public ODBSYSS3_data p37 = new ODBSYSS3_data();            public ODBSYSS3_data p38 = new ODBSYSS3_data();            public ODBSYSS3_data p39 = new ODBSYSS3_data();            public ODBSYSS3_data p40 = new ODBSYSS3_data();        }        /* cnc_rdsyshard:read CNC system hard info */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSH_data        {            public uint id1;            public uint id2;            public short group_id;            public short hard_id;            public short hard_num;            public short slot_no;            public short id1_format;            public short id2_format;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSH        {            public ODBSYSH_data data1 = new ODBSYSH_data();            public ODBSYSH_data data2 = new ODBSYSH_data();            public ODBSYSH_data data3 = new ODBSYSH_data();            public ODBSYSH_data data4 = new ODBSYSH_data();            public ODBSYSH_data data5 = new ODBSYSH_data();            public ODBSYSH_data data6 = new ODBSYSH_data();            public ODBSYSH_data data7 = new ODBSYSH_data();            public ODBSYSH_data data8 = new ODBSYSH_data();            public ODBSYSH_data data9 = new ODBSYSH_data();            public ODBSYSH_data data10 = new ODBSYSH_data();            public ODBSYSH_data data11 = new ODBSYSH_data();            public ODBSYSH_data data12 = new ODBSYSH_data();            public ODBSYSH_data data13 = new ODBSYSH_data();            public ODBSYSH_data data14 = new ODBSYSH_data();            public ODBSYSH_data data15 = new ODBSYSH_data();            public ODBSYSH_data data16 = new ODBSYSH_data();            public ODBSYSH_data data17 = new ODBSYSH_data();            public ODBSYSH_data data18 = new ODBSYSH_data();            public ODBSYSH_data data19 = new ODBSYSH_data();            public ODBSYSH_data data20 = new ODBSYSH_data();            public ODBSYSH_data data21 = new ODBSYSH_data();            public ODBSYSH_data data22 = new ODBSYSH_data();            public ODBSYSH_data data23 = new ODBSYSH_data();            public ODBSYSH_data data24 = new ODBSYSH_data();            public ODBSYSH_data data25 = new ODBSYSH_data();        }        /* cnc_rdmdlconfig:read CNC module configuration information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMDLC        {            public short from;            public short dram;            public short sram;            public short pmc;            public short crtc;            public short servo12;            public short servo34;            public short servo56;            public short servo78;            public short sic;            public short pos_lsi;            public short hi_aio;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]            public short[] reserve;            public short drmmrc;            public short drmarc;            public short pmcmrc;            public short dmaarc;            public short iopt;            public short hdiio;            public short gm2gr1;            public short crtgr2;            public short gm1gr2;            public short gm2gr2;            public short cmmrb;            public short sv5axs;            public short sv7axs;            public short sicaxs;            public short posaxs;            public short hamaxs;            public short romr64;            public short srmr64;            public short dr1r64;            public short dr2r64;            public short iopio2;            public short hdiio2;            public short cmmrb2;            public short romfap;            public short srmfap;            public short drmfap;            public short drmare;            public short pmcmre;            public short dmaare;            public short frmbgg;            public short drmbgg;            public short asrbgg;            public short edtpsc;            public short slcpsc;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 34)]            public short[] reserve2;        }        /* cnc_rdpscdproc:read processing condition file (processing data) */        /* cnc_wrpscdproc:write processing condition file (processing data) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSCD_data        {            public short slct;            public int feed;            public short power;            public short freq;            public short duty;            public short g_press;            public short g_kind;            public short g_ready_t;            public short displace;            public int supple;            public short edge_slt;            public short appr_slt;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] reserve = new short[5];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPSCD        {            public IODBPSCD_data data1 = new IODBPSCD_data();            public IODBPSCD_data data2 = new IODBPSCD_data();            public IODBPSCD_data data3 = new IODBPSCD_data();            public IODBPSCD_data data4 = new IODBPSCD_data();            public IODBPSCD_data data5 = new IODBPSCD_data();            public IODBPSCD_data data6 = new IODBPSCD_data();            public IODBPSCD_data data7 = new IODBPSCD_data();            public IODBPSCD_data data8 = new IODBPSCD_data();            public IODBPSCD_data data9 = new IODBPSCD_data();            public IODBPSCD_data data10 = new IODBPSCD_data();        } /* In case that the number of data is 10 */        /* cnc_rdpscdpirc:read processing condition file (piercing data) */        /* cnc_wrpscdpirc:write processing condition file (piercing data) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPIRC_data        {            public short slct;            public short power;            public short freq;            public short duty;            public short i_freq;            public short i_duty;            public short step_t;            public short step_sum;            public int pier_t;            public short g_press;            public short g_kind;            public short g_time;            public short def_pos;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public short[] reserve = new short[4];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPIRC        {            public IODBPIRC_data data1 = new IODBPIRC_data();            public IODBPIRC_data data2 = new IODBPIRC_data();            public IODBPIRC_data data3 = new IODBPIRC_data();        }        /* cnc_rdpscdedge:read processing condition file (edging data) */        /* cnc_wrpscdedge:write processing condition file (edging data) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBEDGE_data        {            public short slct;            public short angle;            public short power;            public short freq;            public short duty;            public int pier_t;            public short g_press;            public short g_kind;            public int r_len;            public short r_feed;            public short r_freq;            public short r_duty;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] reserve = new short[5];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBEDGE        {            public IODBEDGE_data data1 = new IODBEDGE_data();            public IODBEDGE_data data2 = new IODBEDGE_data();            public IODBEDGE_data data3 = new IODBEDGE_data();            public IODBEDGE_data data4 = new IODBEDGE_data();            public IODBEDGE_data data5 = new IODBEDGE_data();        }        /* cnc_rdpscdslop:read processing condition file (slope data) */        /* cnc_wrpscdslop:write processing condition file (slope data) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLOP_data        {            public int slct;            public int upleng;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public short[] upsp = new short[10];            public int dwleng;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public short[] dwsp = new short[10];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]            public short[] reserve = new short[10];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLOP        {            public IODBSLOP_data data1 = new IODBSLOP_data();            public IODBSLOP_data data2 = new IODBSLOP_data();            public IODBSLOP_data data3 = new IODBSLOP_data();            public IODBSLOP_data data4 = new IODBSLOP_data();            public IODBSLOP_data data5 = new IODBSLOP_data();        }        /* cnc_rdlpwrdty:read power controll duty data */        /* cnc_wrlpwrdty:write power controll duty data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBLPWDT        {            public short slct;            public short dty_const;            public short dty_min;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public short[] reserve = new short[6];        }        /* cnc_rdlpwrdat:read laser power data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBLOPDT        {            public short slct;            public short pwr_mon;            public short pwr_ofs;            public short pwr_act;            public int feed_act;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public short[] reserve;        }        /* cnc_rdlagslt:read laser assist gas selection */        /* cnc_wrlagslt:write laser assist gas selection */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBLAGSL        {            public short slct;            public short ag_slt;            public short agflow_slt;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public short[] reserve = new short[6];        }        /* cnc_rdlagst:read laser assist gas flow */        /* cnc_wrlagst:write laser assist gas flow */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class GASFLOW        {            public short slct;            public short pre_time;            public short pre_press;            public short proc_press;            public short end_time;            public short end_press;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public short[] reserve = new short[3];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBLAGST        {            public GASFLOW data1 = new GASFLOW();            public GASFLOW data2 = new GASFLOW();            public GASFLOW data3 = new GASFLOW();        }        /* cnc_rdledgprc:read laser power for edge processing */        /* cnc_wrledgprc:write laser power for edge processing */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBLEGPR        {            public short slct;            public short power;            public short freq;            public short duty;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] reserve = new short[5];        }        /* cnc_rdlprcprc:read laser power for piercing */        /* cnc_wrlprcprc:write laser power for piercing */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBLPCPR        {            public short slct;            public short power;            public short freq;            public short duty;            public int time;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public short[] reserve = new short[4];        }        /* cnc_rdlcmddat:read laser command data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBLCMDT        {            public short slct;            public int feed;            public short power;            public short freq;            public short duty;            public short g_kind;            public short g_ready_t;            public short g_press;            public short error;            public int dsplc;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]            public short[] reserve = new short[7];        }        /* cnc_rdlactnum:read active number */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBLACTN        {            public short slct;            public short act_proc;            public short act_pirce;            public short act_slop;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] reserve = new short[5];        }        /* cnc_rdlcmmt:read laser comment */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBLCMMT        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]            public string comment = new string(' ', 25);        }        /* cnc_rdpwofsthis:read power correction factor history data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPWOFST_data        {            public int pwratio;            public int rfvolt;            public ushort year;            public ushort month;            public ushort day;            public ushort hour;            public ushort minute;            public ushort second;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPWOFST        {            public ODBPWOFST_data data1 = new ODBPWOFST_data();            public ODBPWOFST_data data2 = new ODBPWOFST_data();            public ODBPWOFST_data data3 = new ODBPWOFST_data();            public ODBPWOFST_data data4 = new ODBPWOFST_data();            public ODBPWOFST_data data5 = new ODBPWOFST_data();            public ODBPWOFST_data data6 = new ODBPWOFST_data();            public ODBPWOFST_data data7 = new ODBPWOFST_data();            public ODBPWOFST_data data8 = new ODBPWOFST_data();            public ODBPWOFST_data data9 = new ODBPWOFST_data();            public ODBPWOFST_data data10 = new ODBPWOFST_data();            public ODBPWOFST_data data11 = new ODBPWOFST_data();            public ODBPWOFST_data data12 = new ODBPWOFST_data();            public ODBPWOFST_data data13 = new ODBPWOFST_data();            public ODBPWOFST_data data14 = new ODBPWOFST_data();            public ODBPWOFST_data data15 = new ODBPWOFST_data();            public ODBPWOFST_data data16 = new ODBPWOFST_data();            public ODBPWOFST_data data17 = new ODBPWOFST_data();            public ODBPWOFST_data data18 = new ODBPWOFST_data();            public ODBPWOFST_data data19 = new ODBPWOFST_data();            public ODBPWOFST_data data20 = new ODBPWOFST_data();            public ODBPWOFST_data data21 = new ODBPWOFST_data();            public ODBPWOFST_data data22 = new ODBPWOFST_data();            public ODBPWOFST_data data23 = new ODBPWOFST_data();            public ODBPWOFST_data data24 = new ODBPWOFST_data();            public ODBPWOFST_data data25 = new ODBPWOFST_data();            public ODBPWOFST_data data26 = new ODBPWOFST_data();            public ODBPWOFST_data data27 = new ODBPWOFST_data();            public ODBPWOFST_data data28 = new ODBPWOFST_data();            public ODBPWOFST_data data29 = new ODBPWOFST_data();            public ODBPWOFST_data data30 = new ODBPWOFST_data();        }        /* cnc_rdmngtime:read management time */        /* cnc_wrmngtime:write management time */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMNGTIME_data        {            public uint life;            public uint total;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMNGTIME        {            public IODBMNGTIME_data data1 = new IODBMNGTIME_data();            public IODBMNGTIME_data data2 = new IODBMNGTIME_data();            public IODBMNGTIME_data data3 = new IODBMNGTIME_data();            public IODBMNGTIME_data data4 = new IODBMNGTIME_data();            public IODBMNGTIME_data data5 = new IODBMNGTIME_data();            public IODBMNGTIME_data data6 = new IODBMNGTIME_data();            public IODBMNGTIME_data data7 = new IODBMNGTIME_data();            public IODBMNGTIME_data data8 = new IODBMNGTIME_data();            public IODBMNGTIME_data data9 = new IODBMNGTIME_data();            public IODBMNGTIME_data data10 = new IODBMNGTIME_data();        } /* In case that the number of data is 10 */        /* cnc_rddischarge:read data related to electrical discharge at power correction ends */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDISCHRG        {            public ushort aps;            public ushort year;            public ushort month;            public ushort day;            public ushort hour;            public ushort minute;            public ushort second;            public short hpc;            public short hfq;            public short hdt;            public short hpa;            public int hce;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] rfi;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] rfv;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] dci;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] dcv;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] dcw;        }        /* cnc_rddischrgalm:read alarm history data related to electrical discharg */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDISCHRGALM_data        {            public ushort year;            public ushort month;            public ushort day;            public ushort hour;            public ushort minute;            public ushort second;            public int almnum;            public uint psec;            public short hpc;            public short hfq;            public short hdt;            public short hpa;            public int hce;            public ushort asq;            public ushort psu;            public ushort aps;            public short dummy;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] rfi;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] rfv;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] dci;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] dcv;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] dcw;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public short[] almcd;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBDISCHRGALM        {            public ODBDISCHRGALM_data data1 = new ODBDISCHRGALM_data();            public ODBDISCHRGALM_data data2 = new ODBDISCHRGALM_data();            public ODBDISCHRGALM_data data3 = new ODBDISCHRGALM_data();            public ODBDISCHRGALM_data data4 = new ODBDISCHRGALM_data();            public ODBDISCHRGALM_data data5 = new ODBDISCHRGALM_data();        }        /* cnc_gettimer:get date and time from cnc */        /* cnc_settimer:set date and time for cnc */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public struct TIMER_DATE        {            public short year;            public short month;            public short date;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public struct TIMER_TIME        {            public short hour;            public short minute;            public short second;        }        [StructLayout(LayoutKind.Explicit)]        public class IODBTIMER        {            [FieldOffset(0)]            public short type;            [FieldOffset(2)]            public short dummy;            [FieldOffset(4)]            public TIMER_DATE date;            [FieldOffset(4)]            public TIMER_TIME time;        }        /* cnc_rdtimer:read timer data from cnc */        /* cnc_wrtimer:write timer data for cnc */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTIME        {            public int minute;            public int msec;        }        /* cnc_rdtlctldata: read tool controll data */        /* cnc_wrtlctldata: write tool controll data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLCTL        {            public short slct;            public short used_tool;            public short turret_indx;            public int zero_tl_no;            public int t_axis_move;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] total_punch = new int[2];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]            public short[] reserve = new short[11];        }        /* cnc_rdtooldata: read tool data */        /* cnc_wrtooldata: read tool data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLDT_data        {            public short slct;            public int tool_no;            public int x_axis_ofs;            public int y_axis_ofs;            public int turret_pos;            public int chg_tl_no;            public int punch_count;            public int tool_life;            public int m_tl_radius;            public int m_tl_angle;            public byte tl_shape;            public int tl_size_i;            public int tl_size_j;            public int tl_angle;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public int[] reserve = new int[3];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLDT        {            public IODBTLDT_data data1 = new IODBTLDT_data();            public IODBTLDT_data data2 = new IODBTLDT_data();            public IODBTLDT_data data3 = new IODBTLDT_data();            public IODBTLDT_data data4 = new IODBTLDT_data();            public IODBTLDT_data data5 = new IODBTLDT_data();            public IODBTLDT_data data6 = new IODBTLDT_data();            public IODBTLDT_data data7 = new IODBTLDT_data();            public IODBTLDT_data data8 = new IODBTLDT_data();            public IODBTLDT_data data9 = new IODBTLDT_data();            public IODBTLDT_data data10 = new IODBTLDT_data();        } /* In case that the number of data is 10 */        /* cnc_rdmultitldt: read multi tool data */        /* cnc_wrmultitldt: write multi tool data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMLTTL_data        {            public short slct;            public short m_tl_no;            public int m_tl_radius;            public int m_tl_angle;            public int x_axis_ofs;            public int y_axis_ofs;            public byte tl_shape;            public int tl_size_i;            public int tl_size_j;            public int tl_angle;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]            public int[] reserve = new int[7];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMLTTL        {            public IODBMLTTL_data data1 = new IODBMLTTL_data();            public IODBMLTTL_data data2 = new IODBMLTTL_data();            public IODBMLTTL_data data3 = new IODBMLTTL_data();            public IODBMLTTL_data data4 = new IODBMLTTL_data();            public IODBMLTTL_data data5 = new IODBMLTTL_data();            public IODBMLTTL_data data6 = new IODBMLTTL_data();            public IODBMLTTL_data data7 = new IODBMLTTL_data();            public IODBMLTTL_data data8 = new IODBMLTTL_data();            public IODBMLTTL_data data9 = new IODBMLTTL_data();            public IODBMLTTL_data data10 = new IODBMLTTL_data();        } /* In case that the number of data is 10 */        /* cnc_rdmtapdata: read multi tap data */        /* cnc_wrmtapdata: write multi tap data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMTAP_data        {            public short slct;            public int tool_no;            public int x_axis_ofs;            public int y_axis_ofs;            public int punch_count;            public int tool_life;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]            public int[] reserve = new int[11];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBMTAP        {            public IODBMTAP_data data1 = new IODBMTAP_data();            public IODBMTAP_data data2 = new IODBMTAP_data();            public IODBMTAP_data data3 = new IODBMTAP_data();            public IODBMTAP_data data4 = new IODBMTAP_data();            public IODBMTAP_data data5 = new IODBMTAP_data();            public IODBMTAP_data data6 = new IODBMTAP_data();            public IODBMTAP_data data7 = new IODBMTAP_data();            public IODBMTAP_data data8 = new IODBMTAP_data();            public IODBMTAP_data data9 = new IODBMTAP_data();            public IODBMTAP_data data10 = new IODBMTAP_data();        }        /* cnc_rdtoolinfo: read tool information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPTLINF        {            public short tld_max;            public short mlt_max;            public short reserve;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] tld_size;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] mlt_size;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]            public short[] reserves;        }        /* cnc_rdsafetyzone: read safetyzone data */        /* cnc_wrsafetyzone: write safetyzone data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSAFE_data        {            public short slct;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public int[] data = new int[3];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSAFE        {            public IODBSAFE_data data1 = new IODBSAFE_data();            public IODBSAFE_data data2 = new IODBSAFE_data();            public IODBSAFE_data data3 = new IODBSAFE_data();            public IODBSAFE_data data4 = new IODBSAFE_data();        } /* In case that the number of data is 4 */        /* cnc_rdtoolzone: read toolzone data */        /* cnc_wrtoolzone: write toolzone data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLZN_data        {            public short slct;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] data = new int[12];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBTLZN        {            public IODBTLZN_data data1 = new IODBTLZN_data();            public IODBTLZN_data data2 = new IODBTLZN_data();            public IODBTLZN_data data3 = new IODBTLZN_data();            public IODBTLZN_data data4 = new IODBTLZN_data();            public IODBTLZN_data data5 = new IODBTLZN_data();            public IODBTLZN_data data6 = new IODBTLZN_data();            public IODBTLZN_data data7 = new IODBTLZN_data();            public IODBTLZN_data data8 = new IODBTLZN_data();            public IODBTLZN_data data9 = new IODBTLZN_data();            public IODBTLZN_data data10 = new IODBTLZN_data();            public IODBTLZN_data data11 = new IODBTLZN_data();            public IODBTLZN_data data12 = new IODBTLZN_data();        } /* In case that the number of data is 12 */        /* cnc_rdacttlzone: read active toolzone data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBACTTLZN        {            public short act_no;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] data;        }        /* cnc_rdbrstrinfo:read block restart information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBBRS        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] dest;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] dist;        } /*  In case that the number of axes is MAX_AXIS */        /* cnc_rdradofs:read tool radius offset for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBROFS        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] pln_axes;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] ofsvct;        }        /* cnc_rdlenofs:read tool length offset for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBLOFS        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ofsvct;        } /*  In case that the number of axes is MAX_AXIS */        /* cnc_rdfixcycle:read fixed cycle for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBFIX        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] pln_axes;            public short drl_axes;            public int i_pos;            public int r_pos;            public int z_pos;            public int cmd_cnt;            public int act_cnt;            public int cut;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] shift;        }        /* cnc_rdcdrotate:read coordinate rotate for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBROT        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public short[] pln_axes;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] center;            public int angle;        }        /* cnc_rd3dcdcnv:read 3D coordinate convert for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB3DCD        {            public short mode;            public short dno;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public short[] cd_axes;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2 * 3)]            public int[] center;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2 * 3)]            public int[] direct;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]            public int[] angle;        }        /* cnc_rdmirimage:read programable mirror image for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBMIR        {            public short mode;            public int mir_flag;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] mir_pos;        } /*  In case that the number of axes is MAX_AXIS */        /* cnc_rdscaling:read scaling data for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSCL        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] center;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] magnif;        } /*  In case that the number of axes is MAX_AXIS */        /* cnc_rd3dtofs:read 3D tool offset for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB3DTO        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public short[] ofs_axes;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public int[] ofsvct;        }        /* cnc_rdposofs:read tool position offset for position data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPOFS        {            public short mode;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public int[] ofsvct;        } /*  In case that the number of axes is MAX_AXIS */        /* cnc_rdhpccset:read hpcc setting data */        /* cnc_wrhpccset:write hpcc setting data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBHPST        {            public short slct;            public short hpcc;            public short multi;            public short ovr1;            public short ign_f;            public short foward;            public int max_f;            public short ovr2;            public short ovr3;            public short ovr4;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]            public int[] reserve = new int[7];        }        /* cnc_rdhpcctupr:read hpcc tuning data ( parameter input ) */        /* cnc_wrhpcctupr:write hpcc tuning data ( parameter input ) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBHPPR_tune        {            public short slct;            public short diff;            public short fine;            public short acc_lv;            public int max_f;            public short bipl;            public short aipl;            public int corner;            public short clamp;            public int radius;            public int max_cf;            public int min_cf;            public int foward;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] reserve = new int[5];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBHPPR        {            public IODBHPPR_tune tune1 = new IODBHPPR_tune();            public IODBHPPR_tune tune2 = new IODBHPPR_tune();            public IODBHPPR_tune tune3 = new IODBHPPR_tune();        }        /* cnc_rdhpcctuac:read hpcc tuning data ( acc input ) */        /* cnc_wrhpcctuac:write hpcc tuning data ( acc input ) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBHPAC_tune        {            public short slct;            public short diff;            public short fine;            public short acc_lv;            public int bipl;            public short aipl;            public int corner;            public int clamp;            public int c_acc;            public int foward;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public int[] reserve = new int[8];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBHPAC        {            public IODBHPAC_tune tune1 = new IODBHPAC_tune();            public IODBHPAC_tune tune2 = new IODBHPAC_tune();            public IODBHPAC_tune tune3 = new IODBHPAC_tune();        }        /* cnc_rd3dtooltip:read tip of tool for 3D handle */        /* cnc_rd3dmovrlap:read move overrlap of tool for 3D handle */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB3DHDL_data        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] axes;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] data;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB3DHDL        {            public ODB3DHDL_data data1 = new ODB3DHDL_data();            public ODB3DHDL_data data2 = new ODB3DHDL_data();        }        /* cnc_rd3dpulse:read pulse for 3D handle */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB3DPLS_data        {            public int right_angle_x;            public int right_angle_y;            public int tool_axis;            public int tool_tip_a_b;            public int tool_tip_c;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODB3DPLS        {            public ODB3DPLS_data pls1 = new ODB3DPLS_data();            public ODB3DPLS_data pls2 = new ODB3DPLS_data();        }        /* cnc_rdaxisname: read axis name */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAXISNAME_data        {            public byte name;          /* axis name */            public byte suff;          /* suffix */        }#if M_AXIS2    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBAXISNAME    {        public ODBAXISNAME_data data1 = new ODBAXISNAME_data();        public ODBAXISNAME_data data2 = new ODBAXISNAME_data();        public ODBAXISNAME_data data3 = new ODBAXISNAME_data();        public ODBAXISNAME_data data4 = new ODBAXISNAME_data();        public ODBAXISNAME_data data5 = new ODBAXISNAME_data();        public ODBAXISNAME_data data6 = new ODBAXISNAME_data();        public ODBAXISNAME_data data7 = new ODBAXISNAME_data();        public ODBAXISNAME_data data8 = new ODBAXISNAME_data();        public ODBAXISNAME_data data9 = new ODBAXISNAME_data();        public ODBAXISNAME_data data10= new ODBAXISNAME_data();        public ODBAXISNAME_data data11= new ODBAXISNAME_data();        public ODBAXISNAME_data data12= new ODBAXISNAME_data();        public ODBAXISNAME_data data13= new ODBAXISNAME_data();        public ODBAXISNAME_data data14= new ODBAXISNAME_data();        public ODBAXISNAME_data data15= new ODBAXISNAME_data();        public ODBAXISNAME_data data16= new ODBAXISNAME_data();        public ODBAXISNAME_data data17= new ODBAXISNAME_data();        public ODBAXISNAME_data data18= new ODBAXISNAME_data();        public ODBAXISNAME_data data19= new ODBAXISNAME_data();        public ODBAXISNAME_data data20= new ODBAXISNAME_data();        public ODBAXISNAME_data data21= new ODBAXISNAME_data();        public ODBAXISNAME_data data22= new ODBAXISNAME_data();        public ODBAXISNAME_data data23= new ODBAXISNAME_data();        public ODBAXISNAME_data data24= new ODBAXISNAME_data();    }#elif FS15D    [StructLayout(LayoutKind.Sequential,Pack=4)]    public class ODBAXISNAME    {        public ODBAXISNAME_data data1 = new ODBAXISNAME_data();        public ODBAXISNAME_data data2 = new ODBAXISNAME_data();        public ODBAXISNAME_data data3 = new ODBAXISNAME_data();        public ODBAXISNAME_data data4 = new ODBAXISNAME_data();        public ODBAXISNAME_data data5 = new ODBAXISNAME_data();        public ODBAXISNAME_data data6 = new ODBAXISNAME_data();        public ODBAXISNAME_data data7 = new ODBAXISNAME_data();        public ODBAXISNAME_data data8 = new ODBAXISNAME_data();        public ODBAXISNAME_data data9 = new ODBAXISNAME_data();        public ODBAXISNAME_data data10= new ODBAXISNAME_data();    }#else        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBAXISNAME        {            public ODBAXISNAME_data data1 = new ODBAXISNAME_data();            public ODBAXISNAME_data data2 = new ODBAXISNAME_data();            public ODBAXISNAME_data data3 = new ODBAXISNAME_data();            public ODBAXISNAME_data data4 = new ODBAXISNAME_data();            public ODBAXISNAME_data data5 = new ODBAXISNAME_data();            public ODBAXISNAME_data data6 = new ODBAXISNAME_data();            public ODBAXISNAME_data data7 = new ODBAXISNAME_data();            public ODBAXISNAME_data data8 = new ODBAXISNAME_data();        }#endif        /* cnc_rdspdlname: read spindle name */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPDLNAME_data        {            public byte name;          /* spindle name */            public byte suff1;         /* suffix */            public byte suff2;         /* suffix */            public byte suff3;         /* suffix */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSPDLNAME        {            public ODBSPDLNAME_data data1 = new ODBSPDLNAME_data();            public ODBSPDLNAME_data data2 = new ODBSPDLNAME_data();            public ODBSPDLNAME_data data3 = new ODBSPDLNAME_data();            public ODBSPDLNAME_data data4 = new ODBSPDLNAME_data();        }        /* cnc_exaxisname: read extended axis name */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBEXAXISNAME        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname1 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname2 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname3 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname4 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname5 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname6 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname7 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname8 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname9 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname10 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname11 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname12 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname13 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname14 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname15 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname16 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname17 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname18 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname19 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname20 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname21 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname22 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname23 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname24 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname25 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname26 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname27 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname28 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname29 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname30 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname31 = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string axname32 = new string(' ', 4);        }        /* cnc_wrunsolicprm: Set the unsolicited message parameters */        /* cnc_rdunsolicprm: Get the unsolicited message parameters */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public struct IODBUNSOLIC_pmc        {            public short type;            public short rdaddr;            public short rdno;            public short rdsize;            private int dummy;        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IODBUNSOLIC        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string ipaddr = new string(' ', 16);            public ushort port;            public short reqaddr;            public short pmcno;            public short retry;            public short timeout;            public short alivetime;            public short setno;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public IODBUNSOLIC_pmc[] rddata = new IODBUNSOLIC_pmc[3];        }        /* cnc_rdunsolicmsg: Reads the unsolicited message data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public struct IDBUNSOLICMSG_msg        {            public short rdsize;            public IntPtr data;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBUNSOLICMSG        {            public short getno;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public IDBUNSOLICMSG_msg[] msg = new IDBUNSOLICMSG_msg[3];        }        /* cnc_rdpm_cncitem: read cnc maintenance item */        /* cnc_rdpm_mcnitem: read machine specific maintenance item */        /* cnc_wrpm_mcnitem: write machine specific maintenance item */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBITEM        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name1 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name2 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name3 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name4 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name5 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name6 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name7 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name8 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name9 = new string(' ', 62);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name10 = new string(' ', 62);        }        /* cnc_rdpm_item:read maintenance item status */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPMAINTE_data        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 62)]            public string name = new string(' ', 62); /* name */            public int type;        /* life count type */            public int total;       /* total life time (minite basis) */            public int remain;      /* life rest time */            public int stat;        /* life state */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPMAINTE        {            public IODBPMAINTE_data data1 = new IODBPMAINTE_data();            public IODBPMAINTE_data data2 = new IODBPMAINTE_data();            public IODBPMAINTE_data data3 = new IODBPMAINTE_data();            public IODBPMAINTE_data data4 = new IODBPMAINTE_data();            public IODBPMAINTE_data data5 = new IODBPMAINTE_data();            public IODBPMAINTE_data data6 = new IODBPMAINTE_data();            public IODBPMAINTE_data data7 = new IODBPMAINTE_data();            public IODBPMAINTE_data data8 = new IODBPMAINTE_data();            public IODBPMAINTE_data data9 = new IODBPMAINTE_data();            public IODBPMAINTE_data data10 = new IODBPMAINTE_data();        }        /* cnc_sysinfo_ex:read CNC system path information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSEX_path        {            public short system;            public short group;            public short attrib;            public short ctrl_axis;            public short ctrl_srvo;            public short ctrl_spdl;            public short mchn_no;            public short reserved;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSEX_data        {            public ODBSYSEX_path data1 = new ODBSYSEX_path();            public ODBSYSEX_path data2 = new ODBSYSEX_path();            public ODBSYSEX_path data3 = new ODBSYSEX_path();            public ODBSYSEX_path data4 = new ODBSYSEX_path();            public ODBSYSEX_path data5 = new ODBSYSEX_path();            public ODBSYSEX_path data6 = new ODBSYSEX_path();            public ODBSYSEX_path data7 = new ODBSYSEX_path();            public ODBSYSEX_path data8 = new ODBSYSEX_path();            public ODBSYSEX_path data9 = new ODBSYSEX_path();            public ODBSYSEX_path data10 = new ODBSYSEX_path();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSYSEX        {            public short max_axis;            public short max_spdl;            public short max_path;            public short max_mchn;            public short ctrl_axis;            public short ctrl_srvo;            public short ctrl_spdl;            public short ctrl_path;            public short ctrl_mchn;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]            public short[] reserved = new short[3];            public ODBSYSEX_data path = new ODBSYSEX_data();        }        /*------------------*/        /* CNC : SERCOS I/F */        /*------------------*/        /* cnc_srcsrdidinfo:Read ID information of SERCOS I/F */        /* cnc_srcswridinfo:Write ID information of SERCOS I/F */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class IODBIDINF        {            public int id_no;            public short drv_no;            public short acc_element;            public short err_general;            public short err_id_no;            public short err_id_name;            public short err_attr;            public short err_unit;            public short err_min_val;            public short err_max_val;            public short id_name_len;            public short id_name_max;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]            public string id_name = new string(' ', 60);            public int attr;            public short unit_len;            public short unit_max;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]            public byte[] unit = new byte[12];            public int min_val;            public int max_val;        }        /* cnc_srcsrdexstat:Get execution status of reading/writing operation data of SERCOS I/F */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSRCSST        {            public short acc_element;            public short err_general;            public short err_id_no;            public short err_attr;            public short err_op_data;        }        /* cnc_srcsrdlayout:Read drive assign of SERCOS I/F */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBSRCSLYT        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]            public short[] spndl;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public short[] servo;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]            public string axis_name = new string(' ', 8);        }        /*----------------------------*/        /* CNC : Servo Guide          */        /*----------------------------*/        /* cnc_sdsetchnl:Servo Guide (Channel data set) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBCHAN_data        {            public byte chno;            public sbyte axis;            public int datanum;            public ushort datainf;            public short dataadr;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBCHAN        {            public IDBCHAN_data data1 = new IDBCHAN_data();            public IDBCHAN_data data2 = new IDBCHAN_data();            public IDBCHAN_data data3 = new IDBCHAN_data();            public IDBCHAN_data data4 = new IDBCHAN_data();            public IDBCHAN_data data5 = new IDBCHAN_data();            public IDBCHAN_data data6 = new IDBCHAN_data();            public IDBCHAN_data data7 = new IDBCHAN_data();            public IDBCHAN_data data8 = new IDBCHAN_data();        }        /* cnc_sdsetchnl:Servo Guide (read Sampling data) */        /* cnc_sfbreadsmpl:Servo feedback data (read Sampling data) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSD        {            public IntPtr chadata;            public IntPtr count;        }        /* cnc_sfbsetchnl:Servo feedback data (Channel data set) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IDBSFBCHAN        {            public byte chno;            public sbyte axis;            public ushort shift;        }        /*-------------------------*/        /* CNC : FS18-LN function  */        /*-------------------------*/        /* cnc_allowcnd:read allowanced state */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBCAXIS        {            public short dummy;             /* dummy */            public short type;              /* axis number */            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_AXIS)]            public sbyte[] data;              /* data value */        }        /*---------------------------------*/        /* CNC : C-EXE SRAM file function  */        /*---------------------------------*/        /* read C-EXE SRAM disk directory */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class CFILEINFO_data        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]            public string fname = new string(' ', 12); /* file name */            public int file_size; /* file size (bytes) */            public int file_attr; /* attribute */            public short year;       /* year */            public short month;      /* month */            public short day;        /* day */            public short hour;       /* hour */            public short minute;     /* mimute */            public short second;     /* second */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class CFILEINFO        {            public CFILEINFO_data data1 = new CFILEINFO_data();            public CFILEINFO_data data2 = new CFILEINFO_data();            public CFILEINFO_data data3 = new CFILEINFO_data();            public CFILEINFO_data data4 = new CFILEINFO_data();            public CFILEINFO_data data5 = new CFILEINFO_data();            public CFILEINFO_data data6 = new CFILEINFO_data();            public CFILEINFO_data data7 = new CFILEINFO_data();            public CFILEINFO_data data8 = new CFILEINFO_data();            public CFILEINFO_data data9 = new CFILEINFO_data();            public CFILEINFO_data data10 = new CFILEINFO_data();        }        /*-----*/        /* PMC */        /*-----*/        /* pmc_rdpmcrng:read PMC data(area specified) */        /* pmc_wrpmcrng:write PMC data(area specified) */        [StructLayout(LayoutKind.Explicit)]        public class IODBPMC0        {            [FieldOffset(0)]            public short type_a;    /* PMC address type */            [FieldOffset(2)]            public short type_d;    /* PMC data type */            [FieldOffset(4)]            public short datano_s;  /* start PMC address */            [FieldOffset(6)]            public short datano_e;  /* end PMC address */            [FieldOffset(8),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public byte[] cdata;       /* PMC data */        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Explicit)]        public class IODBPMC1        {            [FieldOffset(0)]            public short type_a;    /* PMC address type */            [FieldOffset(2)]            public short type_d;    /* PMC data type */            [FieldOffset(4)]            public short datano_s;  /* start PMC address */            [FieldOffset(6)]            public short datano_e;  /* end PMC address */            [FieldOffset(8),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public short[] idata;        } /* In case that the number of data is 5 */        [StructLayout(LayoutKind.Explicit)]        public class IODBPMC2        {            [FieldOffset(0)]            public short type_a;    /* PMC address type */            [FieldOffset(2)]            public short type_d;    /* PMC data type */            [FieldOffset(4)]            public short datano_s;  /* start PMC address */            [FieldOffset(6)]            public short datano_e;  /* end PMC address */            [FieldOffset(8),            MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]            public int[] ldata;        } /* In case that the number of data is 5 */        /* pmc_rdpmcinfo:read informations of PMC data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCINF_info        {            public char pmc_adr;            public byte adr_attr;            public ushort top_num;            public ushort last_num;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCINF1        {            public ODBPMCINF_info info1 = new ODBPMCINF_info();            public ODBPMCINF_info info2 = new ODBPMCINF_info();            public ODBPMCINF_info info3 = new ODBPMCINF_info();            public ODBPMCINF_info info4 = new ODBPMCINF_info();            public ODBPMCINF_info info5 = new ODBPMCINF_info();            public ODBPMCINF_info info6 = new ODBPMCINF_info();            public ODBPMCINF_info info7 = new ODBPMCINF_info();            public ODBPMCINF_info info8 = new ODBPMCINF_info();            public ODBPMCINF_info info9 = new ODBPMCINF_info();            public ODBPMCINF_info info10 = new ODBPMCINF_info();            public ODBPMCINF_info info11 = new ODBPMCINF_info();            public ODBPMCINF_info info12 = new ODBPMCINF_info();            public ODBPMCINF_info info13 = new ODBPMCINF_info();            public ODBPMCINF_info info14 = new ODBPMCINF_info();            public ODBPMCINF_info info15 = new ODBPMCINF_info();            public ODBPMCINF_info info16 = new ODBPMCINF_info();            public ODBPMCINF_info info17 = new ODBPMCINF_info();            public ODBPMCINF_info info18 = new ODBPMCINF_info();            public ODBPMCINF_info info19 = new ODBPMCINF_info();            public ODBPMCINF_info info20 = new ODBPMCINF_info();            public ODBPMCINF_info info21 = new ODBPMCINF_info();            public ODBPMCINF_info info22 = new ODBPMCINF_info();            public ODBPMCINF_info info23 = new ODBPMCINF_info();            public ODBPMCINF_info info24 = new ODBPMCINF_info();            public ODBPMCINF_info info25 = new ODBPMCINF_info();            public ODBPMCINF_info info26 = new ODBPMCINF_info();            public ODBPMCINF_info info27 = new ODBPMCINF_info();            public ODBPMCINF_info info28 = new ODBPMCINF_info();            public ODBPMCINF_info info29 = new ODBPMCINF_info();            public ODBPMCINF_info info30 = new ODBPMCINF_info();            public ODBPMCINF_info info31 = new ODBPMCINF_info();            public ODBPMCINF_info info32 = new ODBPMCINF_info();            public ODBPMCINF_info info33 = new ODBPMCINF_info();            public ODBPMCINF_info info34 = new ODBPMCINF_info();            public ODBPMCINF_info info35 = new ODBPMCINF_info();            public ODBPMCINF_info info36 = new ODBPMCINF_info();            public ODBPMCINF_info info37 = new ODBPMCINF_info();            public ODBPMCINF_info info38 = new ODBPMCINF_info();            public ODBPMCINF_info info39 = new ODBPMCINF_info();            public ODBPMCINF_info info40 = new ODBPMCINF_info();            public ODBPMCINF_info info41 = new ODBPMCINF_info();            public ODBPMCINF_info info42 = new ODBPMCINF_info();            public ODBPMCINF_info info43 = new ODBPMCINF_info();            public ODBPMCINF_info info44 = new ODBPMCINF_info();            public ODBPMCINF_info info45 = new ODBPMCINF_info();            public ODBPMCINF_info info46 = new ODBPMCINF_info();            public ODBPMCINF_info info47 = new ODBPMCINF_info();            public ODBPMCINF_info info48 = new ODBPMCINF_info();            public ODBPMCINF_info info49 = new ODBPMCINF_info();            public ODBPMCINF_info info50 = new ODBPMCINF_info();            public ODBPMCINF_info info51 = new ODBPMCINF_info();            public ODBPMCINF_info info52 = new ODBPMCINF_info();            public ODBPMCINF_info info53 = new ODBPMCINF_info();            public ODBPMCINF_info info54 = new ODBPMCINF_info();            public ODBPMCINF_info info55 = new ODBPMCINF_info();            public ODBPMCINF_info info56 = new ODBPMCINF_info();            public ODBPMCINF_info info57 = new ODBPMCINF_info();            public ODBPMCINF_info info58 = new ODBPMCINF_info();            public ODBPMCINF_info info59 = new ODBPMCINF_info();            public ODBPMCINF_info info60 = new ODBPMCINF_info();            public ODBPMCINF_info info61 = new ODBPMCINF_info();            public ODBPMCINF_info info62 = new ODBPMCINF_info();            public ODBPMCINF_info info63 = new ODBPMCINF_info();            public ODBPMCINF_info info64 = new ODBPMCINF_info();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCINF        {            public short datano;            public ODBPMCINF1 info = new ODBPMCINF1();        }        /* pmc_rdcntldata:read PMC parameter data table control data */        /* pmc_wrcntldata:write PMC parameter data table control data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPMCCNTL_info        {            public byte tbl_prm;            public byte data_type;            public ushort data_size;            public ushort data_dsp;            public short dummy;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPMCCNTL1        {            public IODBPMCCNTL_info info1 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info2 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info3 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info4 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info5 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info6 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info7 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info8 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info9 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info10 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info11 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info12 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info13 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info14 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info15 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info16 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info17 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info18 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info19 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info20 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info21 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info22 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info23 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info24 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info25 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info26 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info27 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info28 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info29 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info30 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info31 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info32 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info33 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info34 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info35 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info36 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info37 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info38 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info39 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info40 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info41 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info42 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info43 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info44 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info45 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info46 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info47 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info48 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info49 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info50 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info51 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info52 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info53 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info54 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info55 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info56 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info57 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info58 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info59 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info60 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info61 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info62 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info63 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info64 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info65 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info66 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info67 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info68 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info69 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info70 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info71 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info72 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info73 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info74 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info75 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info76 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info77 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info78 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info79 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info80 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info81 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info82 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info83 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info84 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info85 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info86 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info87 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info88 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info89 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info90 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info91 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info92 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info93 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info94 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info95 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info96 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info97 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info98 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info99 = new IODBPMCCNTL_info();            public IODBPMCCNTL_info info100 = new IODBPMCCNTL_info();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPMCCNTL        {            public short datano_s;            public short dummy;            public short datano_e;            public IODBPMCCNTL1 info = new IODBPMCCNTL1();        }        /* pmc_rdalmmsg:read PMC alarm message */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBPMCALM_data        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]            public string almmsg = new string(' ', 128); /* alarm message */        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCALM        {            public ODBPMCALM_data msg1 = new ODBPMCALM_data();            public ODBPMCALM_data msg2 = new ODBPMCALM_data();            public ODBPMCALM_data msg3 = new ODBPMCALM_data();            public ODBPMCALM_data msg4 = new ODBPMCALM_data();            public ODBPMCALM_data msg5 = new ODBPMCALM_data();            public ODBPMCALM_data msg6 = new ODBPMCALM_data();            public ODBPMCALM_data msg7 = new ODBPMCALM_data();            public ODBPMCALM_data msg8 = new ODBPMCALM_data();            public ODBPMCALM_data msg9 = new ODBPMCALM_data();            public ODBPMCALM_data msg10 = new ODBPMCALM_data();        } /* In case that the number of data is 10 */        /* pmc_getdtailerr:get detail error for pmc */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCERR        {            public short err_no;            public short err_dtno;        }        /* pmc_rdpmctitle:read pmc title data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBPMCTITLE        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string mtb = new string(' ', 48);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string machine = new string(' ', 48);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string type = new string(' ', 48);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]            public string prgno = new string(' ', 8);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]            public string prgvers = new string(' ', 4);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string prgdraw = new string(' ', 48);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string date = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string design = new string(' ', 48);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string written = new string(' ', 48);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]            public string remarks = new string(' ', 48);        }        /* pmc_rdpmcrng_ext:read PMC data */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPMCEXT        {            public short type_a;    /* PMC address type */            public short type_d;    /* PMC data type */            public short datano_s;  /* start PMC address */            public short datano_e;  /* end PMC address */            public short err_code;  /* error code */            public short reserved;  /* reserved */            [MarshalAs(UnmanagedType.AsAny)]            public object data;      /* pointer to buffer */        }        /* pmc_rdpmcaddr:read PMC address information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCADR_info        {            public byte pmc_adr;            public byte adr_attr;            public ushort offset;            public ushort top;            public ushort num;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCADR1        {            public ODBPMCADR_info info1 = new ODBPMCADR_info();            public ODBPMCADR_info info2 = new ODBPMCADR_info();            public ODBPMCADR_info info3 = new ODBPMCADR_info();            public ODBPMCADR_info info4 = new ODBPMCADR_info();            public ODBPMCADR_info info5 = new ODBPMCADR_info();            public ODBPMCADR_info info6 = new ODBPMCADR_info();            public ODBPMCADR_info info7 = new ODBPMCADR_info();            public ODBPMCADR_info info8 = new ODBPMCADR_info();            public ODBPMCADR_info info9 = new ODBPMCADR_info();            public ODBPMCADR_info info10 = new ODBPMCADR_info();            public ODBPMCADR_info info11 = new ODBPMCADR_info();            public ODBPMCADR_info info12 = new ODBPMCADR_info();            public ODBPMCADR_info info13 = new ODBPMCADR_info();            public ODBPMCADR_info info14 = new ODBPMCADR_info();            public ODBPMCADR_info info15 = new ODBPMCADR_info();            public ODBPMCADR_info info16 = new ODBPMCADR_info();            public ODBPMCADR_info info17 = new ODBPMCADR_info();            public ODBPMCADR_info info18 = new ODBPMCADR_info();            public ODBPMCADR_info info19 = new ODBPMCADR_info();            public ODBPMCADR_info info20 = new ODBPMCADR_info();            public ODBPMCADR_info info21 = new ODBPMCADR_info();            public ODBPMCADR_info info22 = new ODBPMCADR_info();            public ODBPMCADR_info info23 = new ODBPMCADR_info();            public ODBPMCADR_info info24 = new ODBPMCADR_info();            public ODBPMCADR_info info25 = new ODBPMCADR_info();            public ODBPMCADR_info info26 = new ODBPMCADR_info();            public ODBPMCADR_info info27 = new ODBPMCADR_info();            public ODBPMCADR_info info28 = new ODBPMCADR_info();            public ODBPMCADR_info info29 = new ODBPMCADR_info();            public ODBPMCADR_info info30 = new ODBPMCADR_info();            public ODBPMCADR_info info31 = new ODBPMCADR_info();            public ODBPMCADR_info info32 = new ODBPMCADR_info();            public ODBPMCADR_info info33 = new ODBPMCADR_info();            public ODBPMCADR_info info34 = new ODBPMCADR_info();            public ODBPMCADR_info info35 = new ODBPMCADR_info();            public ODBPMCADR_info info36 = new ODBPMCADR_info();            public ODBPMCADR_info info37 = new ODBPMCADR_info();            public ODBPMCADR_info info38 = new ODBPMCADR_info();            public ODBPMCADR_info info39 = new ODBPMCADR_info();            public ODBPMCADR_info info40 = new ODBPMCADR_info();            public ODBPMCADR_info info41 = new ODBPMCADR_info();            public ODBPMCADR_info info42 = new ODBPMCADR_info();            public ODBPMCADR_info info43 = new ODBPMCADR_info();            public ODBPMCADR_info info44 = new ODBPMCADR_info();            public ODBPMCADR_info info45 = new ODBPMCADR_info();            public ODBPMCADR_info info46 = new ODBPMCADR_info();            public ODBPMCADR_info info47 = new ODBPMCADR_info();            public ODBPMCADR_info info48 = new ODBPMCADR_info();            public ODBPMCADR_info info49 = new ODBPMCADR_info();            public ODBPMCADR_info info50 = new ODBPMCADR_info();            public ODBPMCADR_info info51 = new ODBPMCADR_info();            public ODBPMCADR_info info52 = new ODBPMCADR_info();            public ODBPMCADR_info info53 = new ODBPMCADR_info();            public ODBPMCADR_info info54 = new ODBPMCADR_info();            public ODBPMCADR_info info55 = new ODBPMCADR_info();            public ODBPMCADR_info info56 = new ODBPMCADR_info();            public ODBPMCADR_info info57 = new ODBPMCADR_info();            public ODBPMCADR_info info58 = new ODBPMCADR_info();            public ODBPMCADR_info info59 = new ODBPMCADR_info();            public ODBPMCADR_info info60 = new ODBPMCADR_info();            public ODBPMCADR_info info61 = new ODBPMCADR_info();            public ODBPMCADR_info info62 = new ODBPMCADR_info();            public ODBPMCADR_info info63 = new ODBPMCADR_info();            public ODBPMCADR_info info64 = new ODBPMCADR_info();        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBPMCADR        {            public uint io_adr;            public short datano;            public ODBPMCADR1 info = new ODBPMCADR1();        }        /*--------------------------*/        /* PROFIBUS function        */        /*--------------------------*/        /* pmc_prfrdconfig:read PROFIBUS configration data */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBPRFCNF        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string master_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]            public string master_ver = new string(' ', 3);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string slave_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]            public string slave_ver = new string(' ', 3);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]            public string cntl_ser = new string(' ', 5);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]            public string cntl_ver = new string(' ', 3);        }        /* pmc_prfrdbusprm:read bus parameter for master function */        /* pmc_prfwrbusprm:write bus parameter for master function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBBUSPRM        {            public sbyte fdl_add;            public sbyte baudrate;            public ushort tsl;            public ushort min_tsdr;            public ushort max_tsdr;            public byte tqui;            public byte tset;            public int ttr;            public sbyte gap;            public sbyte hsa;            public sbyte max_retry;            public byte bp_flag;            public ushort min_slv_int;            public ushort poll_tout;            public ushort data_cntl;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]            public byte[] reserve1 = new byte[6];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public byte[] cls2_name = new byte[32];            public short user_dlen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 62)]            public byte[] user_data = new byte[62];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 96)]            public byte[] reserve2 = new byte[96];        }        /* pmc_prfrdslvprm:read slave parameter for master function */        /* pmc_prfwrslvprm:write slave parameter for master function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLVPRM        {            public short dis_enb;            public ushort ident_no;            public byte slv_flag;            public byte slv_type;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]            public byte[] reserve1 = new byte[12];            public byte slv_stat;            public byte wd_fact1;            public byte wd_fact2;            public byte min_tsdr;            public char reserve2;            public byte grp_ident;            public short user_plen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public byte[] user_pdata = new byte[32];            public short cnfg_dlen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 126)]            public byte[] cnfg_data = new byte[126];            public short slv_ulen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]            public byte[] slv_udata = new byte[30];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public byte[] reserve3 = new byte[8];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLVPRM2        {            public short dis_enb;            public ushort ident_no;            public byte slv_flag;            public byte slv_type;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]            public byte[] reserve1 = new byte[12];            public byte slv_stat;            public byte wd_fact1;            public byte wd_fact2;            public byte min_tsdr;            public sbyte reserve2;            public byte grp_ident;            public short user_plen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 206)]            public byte[] user_pdata = new byte[206];            public short cnfg_dlen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 126)]            public byte[] cnfg_data = new byte[126];            public short slv_ulen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]            public byte[] slv_udata = new byte[30];            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]            public byte[] reserve3 = new byte[8];        }        /* pmc_prfrdallcadr:read allocation address for master function */        /* pmc_prfwrallcadr:set allocation address for master function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBPRFADR        {            public byte di_size;            public byte di_type;            public ushort di_addr;            public short reserve1;            public byte do_size;            public byte do_type;            public ushort do_addr;            public short reserve2;            public byte dgn_size;            public byte dgn_type;            public ushort dgn_addr;        }        /* pmc_prfrdslvaddr:read allocation address for slave function */        /* pmc_prfwrslvaddr:set allocation address for slave function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLVADR        {            public byte slave_no;            public byte di_size;            public byte di_type;            public ushort di_addr;            public byte do_size;            public byte do_type;            public ushort do_addr;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]            public byte[] reserve = new byte[7];        }        /* pmc_prfrdslvstat:read status for slave function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBSLVST        {            public byte cnfg_stat;            public byte prm_stat;            public sbyte wdg_stat;            public byte live_stat;            public short ident_no;        }        /* pmc_prfrdslvid:Reads slave index data of master function */        /* pmc_prfwrslvid:Writes slave index data of master function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLVID        {            public short dis_enb;            public short slave_no;            public short nsl;            public byte dgn_size;            public char dgn_type;            public ushort dgn_addr;        }        /* pmc_prfrdslvprm2:Reads  slave parameter of master function(2) */        /* pmc_prfwrslvprm2:Writes slave parameter of master function(2) */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBSLVPRM3        {            public ushort ident_no;            public byte slv_flag;            public byte slv_type;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]            public char[] reserve1 = new char[12];            public byte slv_stat;            public byte wd_fact1;            public byte wd_fact2;            public byte min_tsdr;            public char reserve2;            public byte grp_ident;            public short user_plen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 206)]            public char[] user_pdata = new char[206];            public short slv_ulen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]            public char[] slv_udata = new char[30];        }        /* pmc_prfrddido:Reads DI/DO parameter of master function */        /* pmc_prfwrdido:Writes DI/DO parameter of master function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBDIDO        {            public short slave_no;            public short slot_no;            public byte di_size;            public char di_type;            public ushort di_addr;            public byte do_size;            public char do_type;            public ushort do_addr;            public short shift;            public byte module_dlen;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]            public char[] module_data = new char[128];        }        /* pmc_prfrdindiadr:Reads indication address of master function */        /* pmc_prfwrindiadr:Writes indication address of master function */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBINDEADR        {            public byte dummy;            public char indi_type;            public ushort indi_addr;        }        /*-----------------------------------------------*/        /* DS : Data server & Ethernet board function    */        /*-----------------------------------------------*/        /* etb_rdparam : read丂the parameter of the Ethernet board  */        /* etb_wrparam : write the parameter of the Ethernet board  */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class TCPPRM        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string OwnIPAddress = new string(' ', 16);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string SubNetMask = new string(' ', 16);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string RouterIPAddress = new string(' ', 16);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class HOSTPRM        {            public short DataServerPort;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string DataServerIPAddress = new string(' ', 16);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string DataServerUserName = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string DataServerPassword = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]            public string DataServerLoginDirectory = new string(' ', 128);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class FTPPRM        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string FTPServerUserName = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]            public string FTPServerPassword = new string(' ', 32);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]            public string FTPServerLoginDirectory = new string(' ', 128);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ETBPRM        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]            public string OwnMACAddress = new string(' ', 128);            public short MaximumChannel;            public short HDDExistence;            public short NumberOfScreens;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBETP        {            public short Dummy_ParameterType;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 210)]            public byte[] prm = new byte[210];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBETP_TCP        {            public short ParameterType;            public TCPPRM tcp;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBETP_HOST        {            public short ParameterType;            public HOSTPRM host;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBETP_FTP        {            public short ParameterType;            public FTPPRM ftp;        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class IODBETP_ETB        {            public short ParameterType;            public ETBPRM etb;        }        /* etb_rderrmsg : read the error message of the Ethernet board */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBETMSG        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]            public string title = new string(' ', 33);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 390)]            public string message = new string(' ', 390);        }        /* ds_rdhddinfo : read information of the Data Server's HDD */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHDDINF        {            public int file_num;            public int remainder_l;            public int remainder_h;            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]            public char[] current_dir = new char[32];        }        /* ds_rdhdddir : read the file list of the Data Server's HDD */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHDDDIR_data        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]            public string file_name = new string(' ', 64);            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]            public string comment = new string(' ', 80);            public short attribute;            public short reserved;            public int size;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]            public string date = new string(' ', 16);        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHDDDIR        {            public ODBHDDDIR_data data1 = new ODBHDDDIR_data();            public ODBHDDDIR_data data2 = new ODBHDDDIR_data();            public ODBHDDDIR_data data3 = new ODBHDDDIR_data();            public ODBHDDDIR_data data4 = new ODBHDDDIR_data();            public ODBHDDDIR_data data5 = new ODBHDDDIR_data();            public ODBHDDDIR_data data6 = new ODBHDDDIR_data();            public ODBHDDDIR_data data7 = new ODBHDDDIR_data();            public ODBHDDDIR_data data8 = new ODBHDDDIR_data();            public ODBHDDDIR_data data9 = new ODBHDDDIR_data();            public ODBHDDDIR_data data10 = new ODBHDDDIR_data();            public ODBHDDDIR_data data11 = new ODBHDDDIR_data();            public ODBHDDDIR_data data12 = new ODBHDDDIR_data();            public ODBHDDDIR_data data13 = new ODBHDDDIR_data();            public ODBHDDDIR_data data14 = new ODBHDDDIR_data();            public ODBHDDDIR_data data15 = new ODBHDDDIR_data();            public ODBHDDDIR_data data16 = new ODBHDDDIR_data();            public ODBHDDDIR_data data17 = new ODBHDDDIR_data();            public ODBHDDDIR_data data18 = new ODBHDDDIR_data();            public ODBHDDDIR_data data19 = new ODBHDDDIR_data();            public ODBHDDDIR_data data20 = new ODBHDDDIR_data();            public ODBHDDDIR_data data21 = new ODBHDDDIR_data();            public ODBHDDDIR_data data22 = new ODBHDDDIR_data();            public ODBHDDDIR_data data23 = new ODBHDDDIR_data();            public ODBHDDDIR_data data24 = new ODBHDDDIR_data();            public ODBHDDDIR_data data25 = new ODBHDDDIR_data();            public ODBHDDDIR_data data26 = new ODBHDDDIR_data();            public ODBHDDDIR_data data27 = new ODBHDDDIR_data();            public ODBHDDDIR_data data28 = new ODBHDDDIR_data();            public ODBHDDDIR_data data29 = new ODBHDDDIR_data();            public ODBHDDDIR_data data30 = new ODBHDDDIR_data();            public ODBHDDDIR_data data31 = new ODBHDDDIR_data();            public ODBHDDDIR_data data32 = new ODBHDDDIR_data();        }        /* ds_rdhostdir : read the file list of the host */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHOSTDIR_data        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]            public char[] host_file = new char[128];        }        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class ODBHOSTDIR        {            public ODBHOSTDIR_data data1 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data2 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data3 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data4 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data5 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data6 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data7 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data8 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data9 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data10 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data11 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data12 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data13 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data14 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data15 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data16 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data17 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data18 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data19 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data20 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data21 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data22 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data23 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data24 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data25 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data26 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data27 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data28 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data29 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data30 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data31 = new ODBHOSTDIR_data();            public ODBHOSTDIR_data data32 = new ODBHOSTDIR_data();        }        /* ds_rdmntinfo : read maintenance information */        [StructLayout(LayoutKind.Sequential, Pack = 4)]        public class DSMNTINFO        {            public ushort empty_cnt;            public uint total_size;            public ushort ReadPtr;            public ushort WritePtr;        };        /*--------------------------*/        /* HSSB multiple connection */        /*--------------------------*/        /* cnc_rdnodeinfo:read node informations */        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]        public class ODBNODE        {            public int node_no;            public int io_base;            public int status;            public int cnc_type;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]            public string node_name = new string(' ', 20);        }        /*-------------------------------------*/        /* CNC: Control axis / spindle related */        /*-------------------------------------*/        /// <summary>        /// 读取实际轴进给率        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <returns></returns>        /* read actual axis feedrate(F) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_actf")]        public static extern short cnc_actf(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBACT a);        /// <summary>        ///  读取绝对轴位置        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read absolute axis position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_absolute")]        public static extern short cnc_absolute(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /// <summary>        ///  读取机器轴位置        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read machine axis position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_machine")]        public static extern short cnc_machine(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /// <summary>        /// 读取相对轴位置        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read relative axis position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_relative")]        public static extern short cnc_relative(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /// <summary>        /// 读取距离        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read distance to go */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_distance")]        public static extern short cnc_distance(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /// <summary>        /// 读取跳过位置        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read skip position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_skip")]        public static extern short cnc_skip(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /// <summary>        /// 读伺服延迟值        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read servo delay value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srvdelay")]        public static extern short cnc_srvdelay(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /* read acceleration/deceleration delay value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_accdecdly")]        public static extern short cnc_accdecdly(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /* read all dynamic data */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddynamic")]        public static extern short cnc_rddynamic(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDY_1 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddynamic")]        public static extern short cnc_rddynamic(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDY_2 c);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_rddynamico8")]    public static extern short cnc_rddynamic(ushort FlibHndl,        short a, short b, [Out,MarshalAs(UnmanagedType.LPStruct)] ODBDY_1 c);    [DllImport("FWLIB32.dll", EntryPoint="cnc_rddynamico8")]    public static extern short cnc_rddynamic(ushort FlibHndl,        short a, short b, [Out,MarshalAs(UnmanagedType.LPStruct)] ODBDY_2 c);#endif        /* read all dynamic data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddynamic2")]        public static extern short cnc_rddynamic2(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDY2_1 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddynamic2")]        public static extern short cnc_rddynamic2(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDY2_2 c);        /* read actual spindle speed(S) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_acts")]        public static extern short cnc_acts(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBACT a);        /* read actual spindle speed(S) (All or spesified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_acts2")]        public static extern short cnc_acts2(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBACT2 b);        /* set origin / preset relative axis position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrrelpos")]        public static extern short cnc_wrrelpos(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IDBWRR b);        /* preset work coordinate */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_prstwkcd")]        public static extern short cnc_prstwkcd(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IDBWRA b);        /* read manual overlapped motion value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmovrlap")]        public static extern short cnc_rdmovrlap(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBOVL c);        /* cancel manual overlapped motion value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_canmovrlap")]        public static extern short cnc_canmovrlap(ushort FlibHndl, short a);        /* read load information of serial spindle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspload")]        public static extern short cnc_rdspload(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPN b);        /* read maximum r.p.m. ratio of serial spindle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspmaxrpm")]        public static extern short cnc_rdspmaxrpm(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPN b);        /* read gear ratio of serial spindle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspgear")]        public static extern short cnc_rdspgear(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPN b);        /* read absolute axis position 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_absolute2")]        public static extern short cnc_absolute2(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /* read relative axis position 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_relative2")]        public static extern short cnc_relative2(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /* set wire vertival position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setvrtclpos")]        public static extern short cnc_setvrtclpos(ushort FlibHndl, short a);        /* set wire threading position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setthrdngpos")]        public static extern short cnc_setthrdngpos(ushort FlibHndl);        /* read tool position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdposition")]        public static extern short cnc_rdposition(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPOS c);        /* read current speed */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspeed")]        public static extern short cnc_rdspeed(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPEED b);        /* read servo load meter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsvmeter")]        public static extern short cnc_rdsvmeter(ushort FlibHndl,            ref short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSVLOAD b);        /* read spindle load meter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspmeter")]        public static extern short cnc_rdspmeter(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPLOAD c);        /* read manual feed for 5-axis machining */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd5axmandt")]        public static extern short cnc_rd5axmandt(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODB5AXMAN a);        /* read amount of machine axes movement of manual feed for 5-axis machining */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd5axovrlap")]        public static extern short cnc_rd5axovrlap(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /* read handle interruption */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhndintrpt")]        public static extern short cnc_rdhndintrpt(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBHND c);        /* clear pulse values of manual feed for 5-axis machining */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clr5axpls")]        public static extern short cnc_clr5axpls(ushort FlibHndl, short a);        /* read constant surface speed */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspcss")]        public static extern short cnc_rdspcss(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBCSS a);        /* read execution program pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdexecpt")]        public static extern short cnc_rdexecpt(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGPNT a, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGPNT b);        /* read various axis data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdaxisdata")]        public static extern short cnc_rdaxisdata(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, short c, ref short d, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXDT e);        /*----------------------*/        /* CNC: Program related */        /*----------------------*/        /* start downloading NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnstart")]        public static extern short cnc_dwnstart(ushort FlibHndl);        /* download NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_download")]        public static extern short cnc_download(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b);        /* download NC program(conditional) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cdownload")]        public static extern short cnc_cdownload(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b);        /* end of downloading NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnend")]        public static extern short cnc_dwnend(ushort FlibHndl);        /* end of downloading NC program 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnend2")]        public static extern short cnc_dwnend2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /// <summary>        /// 开始下载 NC程序        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <returns></returns>        /* start downloading NC program 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnstart3")]        public static extern short cnc_dwnstart3(ushort FlibHndl, short a);        /* start downloading NC program 3 special */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnstart3_f")]        public static extern short cnc_dwnstart3_f(ushort FlibHndl,short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, [In, MarshalAs(UnmanagedType.AsAny)] Object c);        /// <summary>        /// 下载 NC程序        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <returns></returns>        /* download NC program 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_download3")]        public static extern short cnc_download3(ushort FlibHndl, ref int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* end of downloading NC program 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnend3")]        public static extern short cnc_dwnend3(ushort FlibHndl);        /* start downloading NC program 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnstart4")]        public static extern short cnc_dwnstart4(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* download NC program 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_download4")]        public static extern short cnc_download4(ushort FlibHndl, ref int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* end of downloading NC program 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dwnend4")]        public static extern short cnc_dwnend4(ushort FlibHndl);        /* start verification of NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_vrfstart")]        public static extern short cnc_vrfstart(ushort FlibHndl);        /* verify NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_verify")]        public static extern short cnc_verify(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b);        /* verify NC program(conditional) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cverify")]        public static extern short cnc_cverify(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b);        /* end of verification */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_vrfend")]        public static extern short cnc_vrfend(ushort FlibHndl);        /* start verification of NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_vrfstart4")]        public static extern short cnc_vrfstart4(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* verify NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_verify4")]        public static extern short cnc_verify4(ushort FlibHndl, ref int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* end of verification */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_vrfend4")]        public static extern short cnc_vrfend4(ushort FlibHndl);        /* start downloading DNC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dncstart")]        public static extern short cnc_dncstart(ushort FlibHndl);        /* download DNC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dnc")]        public static extern short cnc_dnc(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, ushort b);        /* download DNC program(conditional) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cdnc")]        public static extern short cnc_cdnc(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, ushort b);        /* end of downloading DNC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dncend")]        public static extern short cnc_dncend(ushort FlibHndl);        /* start downloading DNC program 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dncstart2")]        public static extern short cnc_dncstart2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* download DNC program 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dnc2")]        public static extern short cnc_dnc2(ushort FlibHndl, ref int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* end of downloading DNC program 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dncend2")]        public static extern short cnc_dncend2(ushort FlibHndl, short a);        /* read the diagnosis data of DNC operation */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddncdgndt")]        public static extern short cnc_rddncdgndt(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDNCDGN a);        /* start uploading NC program */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upstart")]        public static extern short cnc_upstart(ushort FlibHndl, short a);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_upstarto8")]    public static extern short cnc_upstart( ushort FlibHndl, int a );#endif        /* upload NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upload")]        public static extern short cnc_upload(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBUP a, ref ushort b);        /* upload NC program(conditional) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cupload")]        public static extern short cnc_cupload(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBUP a, ref ushort b);        /* end of uploading NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upend")]        public static extern short cnc_upend(ushort FlibHndl);        /* start uploading NC program 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upstart3")]        public static extern short cnc_upstart3(ushort FlibHndl, short a, int b, int c);        /* start uploading NC program special 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upstart3_f")]        public static extern short cnc_upstart3_f(ushort FlibHndl,            short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, [In, MarshalAs(UnmanagedType.AsAny)] Object c);        /* upload NC program 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upload3")]        public static extern short cnc_upload3(ushort FlibHndl, ref int a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* end of uploading NC program 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upend3")]        public static extern short cnc_upend3(ushort FlibHndl);        /* start uploading NC program 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upstart4")]        public static extern short cnc_upstart4(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* upload NC program 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upload4")]        public static extern short cnc_upload4(ushort FlibHndl, ref int a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* end of uploading NC program 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_upend4")]        public static extern short cnc_upend4(ushort FlibHndl);        /* read buffer status for downloading/verification NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_buff")]        public static extern short cnc_buff(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBBUF a);        /* search specified program */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_search")]        public static extern short cnc_search(ushort FlibHndl, short a);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_searcho8")]    public static extern short cnc_search( ushort FlibHndl, int a );#endif        /* search specified program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_search2")]        public static extern short cnc_search2(ushort FlibHndl, int a);        /* delete all programs */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_delall")]        public static extern short cnc_delall(ushort FlibHndl);        /* delete specified program */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_delete")]        public static extern short cnc_delete(ushort FlibHndl, short a);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_deleteo8")]    public static extern short cnc_delete( ushort FlibHndl, int a );#endif        /* delete program (area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_delrange")]        public static extern short cnc_delrange(ushort FlibHndl, int a, int b);        /* read program directory */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprogdir")]        public static extern short cnc_rdprogdir(ushort FlibHndl,            short a, short b, short c, ushort d, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGDIR e);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_rdprogdiro8")]    public static extern short cnc_rdprogdir( ushort FlibHndl,         short a, short b, short c, ushort d, [Out,MarshalAs(UnmanagedType.LPStruct)] PRGDIR e );#endif        /* read program information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdproginfo")]        public static extern short cnc_rdproginfo(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBNC_1 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdproginfo")]        public static extern short cnc_rdproginfo(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBNC_2 c);        /* read program number under execution */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprgnum")]        public static extern short cnc_rdprgnum(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPRO a);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_rdprgnumo8")]    public static extern short cnc_rdprgnum( ushort FlibHndl, [Out,MarshalAs(UnmanagedType.LPStruct)] ODBPRO a );#endif        /* read program name under execution */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_exeprgname")]        public static extern short cnc_exeprgname(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBEXEPRG a);        /* read sequence number under execution */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdseqnum")]        public static extern short cnc_rdseqnum(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSEQ a);        /* search specified sequence number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_seqsrch")]        public static extern short cnc_seqsrch(ushort FlibHndl, int a);        /* search specified sequence number (2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_seqsrch2")]        public static extern short cnc_seqsrch2(ushort FlibHndl, int a);        /* rewind cursor of NC program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rewind")]        public static extern short cnc_rewind(ushort FlibHndl);        /* read block counter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdblkcount")]        public static extern short cnc_rdblkcount(ushort FlibHndl, out int a);        /* read program under execution */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdexecprog")]        public static extern short cnc_rdexecprog(ushort FlibHndl, ref ushort a, out short b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* read program for MDI operation */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmdiprog")]        public static extern short cnc_rdmdiprog(ushort FlibHndl, ref short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* write program for MDI operation */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmdiprog")]        public static extern short cnc_wrmdiprog(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read execution pointer for MDI operation */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmdipntr")]        public static extern short cnc_rdmdipntr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDIP a);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_rdmdipntro8")]    public static extern short cnc_rdmdipntr( ushort FlibHndl, [Out,MarshalAs(UnmanagedType.LPStruct)] ODBMDIP a );#endif        /* write execution pointer for MDI operation */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmdipntr")]        public static extern short cnc_wrmdipntr(ushort FlibHndl, int a);        /* register new program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_newprog")]        public static extern short cnc_newprog(ushort FlibHndl, int a);        /* copy program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_copyprog")]        public static extern short cnc_copyprog(ushort FlibHndl, int a, int b);        /* rename program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_renameprog")]        public static extern short cnc_renameprog(ushort FlibHndl, int a, int b);        /* condense program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_condense")]        public static extern short cnc_condense(ushort FlibHndl, short a, int b);        /* merge program */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_mergeprog")]        public static extern short cnc_mergeprog(ushort FlibHndl, short a, int b, uint c, int d);        /* read current program and its pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdactpt")]        public static extern short cnc_rdactpt(ushort FlibHndl, out int a, out int b);        /* read current program and its pointer and UV macro pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rduvactpt")]        public static extern short cnc_rduvactpt(ushort FlibHndl, out int a, out int b, out int c);        /* set current program and its pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wractpt")]        public static extern short cnc_wractpt(ushort FlibHndl, int a, short b, ref int c);        /* line edit (read program) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprogline")]        public static extern short cnc_rdprogline(ushort FlibHndl,            int a, uint b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c, ref uint d, ref uint e);        /* line edit (read program) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprogline2")]        public static extern short cnc_rdprogline2(ushort FlibHndl,            int a, uint b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c, ref uint d, ref uint e);        /* line edit (write program) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrprogline")]        public static extern short cnc_wrprogline(ushort FlibHndl, int a, uint b, [In, MarshalAs(UnmanagedType.AsAny)] Object c, uint d);        /* line edit (delete line in program) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_delprogline")]        public static extern short cnc_delprogline(ushort FlibHndl, int a, uint b, uint c);        /* line edit (search string) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_searchword")]        public static extern short cnc_searchword(ushort FlibHndl,            int a, uint b, short c, short d, uint e, [In, MarshalAs(UnmanagedType.AsAny)] Object f);        /* line edit (search string) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_searchresult")]        public static extern short cnc_searchresult(ushort FlibHndl, out uint a);        /* line edit (read program by file name) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_line")]        public static extern short cnc_rdpdf_line(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, uint b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c, ref uint d, ref uint e);        /* program lock */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setpglock")]        public static extern short cnc_setpglock(ushort FlibHndl, int a);        /* program unlock */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_resetpglock")]        public static extern short cnc_resetpglock(ushort FlibHndl, int a);        /* read the status of the program lock */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpglockstat")]        public static extern short cnc_rdpglockstat(ushort FlibHndl, out int a, out int b);        /* create file or directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_add")]        public static extern short cnc_pdf_add(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* condense program file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_cond")]        public static extern short cnc_pdf_cond(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* change attribute of program file and directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpdf_attr")]        public static extern short cnc_wrpdf_attr(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [Out, MarshalAs(UnmanagedType.LPStruct)] IDBPDFTDIR b);        /* copy program file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_copy")]        public static extern short cnc_pdf_copy(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* delete file or directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_del")]        public static extern short cnc_pdf_del(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* line edit (write program by file name) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpdf_line")]        public static extern short cnc_wrpdf_line(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, uint b, [In, MarshalAs(UnmanagedType.AsAny)] Object c, uint d);        /* line edit (delete line by file name) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_delline")]        public static extern short cnc_pdf_delline(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, uint b, uint c);        /* move program file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_move")]        public static extern short cnc_pdf_move(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read current program and its pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_rdactpt")]        public static extern short cnc_pdf_rdactpt(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a, out int b);        /* read selected file name */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_rdmain")]        public static extern short cnc_pdf_rdmain(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* rename file or directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_rename")]        public static extern short cnc_pdf_rename(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* line edit (search string) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_searchword")]        public static extern short cnc_pdf_searchword(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, uint b, uint c, uint d, uint e, [In, MarshalAs(UnmanagedType.AsAny)] Object f);        /* line edit (search string) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_searchresult")]        public static extern short cnc_pdf_searchresult(ushort FlibHndl, out uint a);        /* select program file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_slctmain")]        public static extern short cnc_pdf_slctmain(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* set current program and its pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_pdf_wractpt")]        public static extern short cnc_pdf_wractpt(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b, ref int c);        /* read program drive information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_inf")]        public static extern short cnc_rdpdf_inf(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* read program drive directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_drive")]        public static extern short cnc_rdpdf_drive(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read current directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_curdir")]        public static extern short cnc_rdpdf_curdir(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* set current directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpdf_curdir")]        public static extern short cnc_wrpdf_curdir(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read directory (sub directories) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_subdir")]        public static extern short cnc_rdpdf_subdir(ushort FlibHndl,            ref short a, [In, MarshalAs(UnmanagedType.LPStruct)] IDBPDFSDIR b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPDFSDIR c);        /* read directory (all files) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_alldir")]        public static extern short cnc_rdpdf_alldir(ushort FlibHndl, ref short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* read file count in directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpdf_subdirn")]        public static extern short cnc_rdpdf_subdirn(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPDFNFIL b);        /*---------------------------*/        /* CNC: NC file data related */        /*---------------------------*/        /* read tool offset value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofs")]        public static extern short cnc_rdtofs(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTOFS d);        /* write tool offset value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtofs")]        public static extern short cnc_wrtofs(ushort FlibHndl, short a, short b, short c, int d);        /* read tool offset value(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsr")]        public static extern short cnc_rdtofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTO_1_1 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsr")]        public static extern short cnc_rdtofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTO_1_2 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsr")]        public static extern short cnc_rdtofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTO_1_3 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsr")]        public static extern short cnc_rdtofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTO_2 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsr")]        public static extern short cnc_rdtofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTO_3 e);        /* write tool offset value(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtofsr")]        public static extern short cnc_wrtofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTO_1_1 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtofsr")]        public static extern short cnc_wrtofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTO_1_2 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtofsr")]        public static extern short cnc_wrtofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTO_1_3 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtofsr")]        public static extern short cnc_wrtofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTO_2 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtofsr")]        public static extern short cnc_wrtofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTO_3 b);        /* read work zero offset value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdzofs")]        public static extern short cnc_rdzofs(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBZOFS d);        /* write work zero offset value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrzofs")]        public static extern short cnc_wrzofs(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBZOFS b);        /* read work zero offset value(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdzofsr")]        public static extern short cnc_rdzofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBZOR e);        /* write work zero offset value(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrzofsr")]        public static extern short cnc_wrzofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBZOR b);        /* read mesured point value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmsptype")]        public static extern short cnc_rdmsptype(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBMSTP d);        /* write mesured point value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmsptype")]        public static extern short cnc_wrmsptype(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBMSTP d);        /* read parameter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam")]        public static extern short cnc_rdparam(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_1 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam")]        public static extern short cnc_rdparam(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_2 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam")]        public static extern short cnc_rdparam(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_3 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam")]        public static extern short cnc_rdparam(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_4 d);        /* write parameter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrparam")]        public static extern short cnc_wrparam(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_1 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrparam")]        public static extern short cnc_wrparam(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_2 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrparam")]        public static extern short cnc_wrparam(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_3 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrparam")]        public static extern short cnc_wrparam(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_4 b);        /* read parameter(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparar")]        public static extern short cnc_rdparar(ushort FlibHndl,            ref short a, short b, ref short c, ref short d, [Out, MarshalAs(UnmanagedType.AsAny)] Object e);        //  [DllImport("FWLIB32.dll", EntryPoint="cnc_rdparar")]        //  public static extern short cnc_rdparar( ushort FlibHndl,        //      ref short a, short b, ref short c, ref short d, [Out,MarshalAs(UnmanagedType.LPStruct)] IODBPSD_A e );        //  [DllImport("FWLIB32.dll", EntryPoint="cnc_rdparar")]        //  public static extern short cnc_rdparar( ushort FlibHndl,        //      ref short a, short b, ref short c, ref short d, [Out,MarshalAs(UnmanagedType.LPStruct)] IODBPSD_B e );        //  [DllImport("FWLIB32.dll", EntryPoint="cnc_rdparar")]        //  public static extern short cnc_rdparar( ushort FlibHndl,        //      ref short a, short b, ref short c, ref short d, [Out,MarshalAs(UnmanagedType.LPStruct)] IODBPSD_C e );        //  [DllImport("FWLIB32.dll", EntryPoint="cnc_rdparar")]        //  public static extern short cnc_rdparar( ushort FlibHndl,        //      ref short a, short b, ref short c, ref short d, [Out,MarshalAs(UnmanagedType.LPStruct)] IODBPSD_D e );        /* write parameter(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrparas")]        public static extern short cnc_wrparas(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdset")]        public static extern short cnc_rdset(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_1 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdset")]        public static extern short cnc_rdset(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_2 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdset")]        public static extern short cnc_rdset(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_3 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdset")]        public static extern short cnc_rdset(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_4 d);        /* write setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrset")]        public static extern short cnc_wrset(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_1 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrset")]        public static extern short cnc_wrset(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_2 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrset")]        public static extern short cnc_wrset(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_3 b);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrset")]        public static extern short cnc_wrset(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_4 b);        /* read setting data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsetr")]        public static extern short cnc_rdsetr(ushort FlibHndl,            ref short a, short b, ref short c, ref short d, [Out, MarshalAs(UnmanagedType.AsAny)] Object e);        /* write setting data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrsets")]        public static extern short cnc_wrsets(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read parameters */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam_ext")]        public static extern short cnc_rdparam_ext(ushort FlibHndl,            [In, Out, MarshalAs(UnmanagedType.LPStruct)] IODBPRMNO a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPRM c);        /* read parameter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam3")]        public static extern short cnc_rdparam3(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_1 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam3")]        public static extern short cnc_rdparam3(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_2 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam3")]        public static extern short cnc_rdparam3(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_3 e);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparam3")]        public static extern short cnc_rdparam3(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSD_4 e);        /* async parameter write start */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_start_async_wrparam")]        public static extern short cnc_start_async_wrparam(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPRM a);        /* async parameter write end */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_end_async_wrparam")]        public static extern short cnc_end_async_wrparam(ushort FlibHndl, out short a);        /* read cause of busy for async parameter write */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_async_busy_state")]        public static extern short cnc_async_busy_state(ushort FlibHndl, out short a);        /* read diagnosis data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddiag_ext")]        public static extern short cnc_rddiag_ext(ushort FlibHndl,            [In, Out, MarshalAs(UnmanagedType.LPStruct)] IODBPRMNO a, short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPRM c);        /* read pitch error compensation data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpitchr")]        public static extern short cnc_rdpitchr(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPI d);        /* write pitch error compensation data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpitchr")]        public static extern short cnc_wrpitchr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPI b);        /* read custom macro variable */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmacro")]        public static extern short cnc_rdmacro(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBM c);        /* write custom macro variable */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmacro")]        public static extern short cnc_wrmacro(ushort FlibHndl, short a, short b, int c, short d);        /* read custom macro variables(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmacror")]        public static extern short cnc_rdmacror(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBMR d);        /* write custom macro variables(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmacror")]        public static extern short cnc_wrmacror(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBMR b);        /* read custom macro variables(IEEE double version) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmacror2")]        public static extern short cnc_rdmacror2(ushort FlibHndl, int a, ref int b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* write custom macro variables(IEEE double version) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmacror2")]        public static extern short cnc_wrmacror2(ushort FlibHndl, int a, ref int b, [In, MarshalAs(UnmanagedType.AsAny)] Object c);        /* read P code macro variable */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpmacro")]        public static extern short cnc_rdpmacro(ushort FlibHndl, int a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPM b);        /* write P code macro variable */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpmacro")]        public static extern short cnc_wrpmacro(ushort FlibHndl, int a, int b, short c);        /* read P code macro variables(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpmacror")]        public static extern short cnc_rdpmacror(ushort FlibHndl,            int a, int b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPR d);        /* write P code macro variables(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpmacror")]        public static extern short cnc_wrpmacror(ushort FlibHndl, ushort a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPR b);        /* read P code macro variables(IEEE double version) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpmacror2")]        public static extern short cnc_rdpmacror2(ushort FlibHndl, uint a, ref uint b, ushort c, [Out, MarshalAs(UnmanagedType.AsAny)] Object d);        /* write P code macro variables(IEEE double version) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpmacror2")]        public static extern short cnc_wrpmacror2(ushort FlibHndl, uint a, ref uint b, ushort c, [In, MarshalAs(UnmanagedType.AsAny)] Object d);        /* read tool offset information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsinfo")]        public static extern short cnc_rdtofsinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLINF a);        /* read tool offset information(2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtofsinfo2")]        public static extern short cnc_rdtofsinfo2(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLINF2 a);        /* read work zero offset information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdzofsinfo")]        public static extern short cnc_rdzofsinfo(ushort FlibHndl, out short a);        /* read pitch error compensation data information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpitchinfo")]        public static extern short cnc_rdpitchinfo(ushort FlibHndl, out short a);        /* read custom macro variable information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmacroinfo")]        public static extern short cnc_rdmacroinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMVINF a);        /* read P code macro variable information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpmacroinfo")]        public static extern short cnc_rdpmacroinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPMINF a);        /* read validity of tool offset */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_tofs_rnge")]        public static extern short cnc_tofs_rnge(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDATRNG c);        /* read validity of work zero offset */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_zofs_rnge")]        public static extern short cnc_zofs_rnge(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDATRNG c);        /* read validity of work zero offset */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wksft_rnge")]        public static extern short cnc_wksft_rnge(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDATRNG b);        /* read the information for function cnc_rdhsparam() */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhsprminfo")]        public static extern short cnc_rdhsprminfo(ushort FlibHndl, int a, [Out, MarshalAs(UnmanagedType.LPStruct)] HSPINFO_data b);        /* read parameters at the high speed */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhsparam")]        public static extern short cnc_rdhsparam(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.LPStruct)] HSPINFO b, [Out, MarshalAs(UnmanagedType.LPStruct)] HSPDATA_1 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhsparam")]        public static extern short cnc_rdhsparam(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.LPStruct)] HSPINFO b, [Out, MarshalAs(UnmanagedType.LPStruct)] HSPDATA_2 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhsparam")]        public static extern short cnc_rdhsparam(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.LPStruct)] HSPINFO b, [Out, MarshalAs(UnmanagedType.LPStruct)] HSPDATA_3 c);        /*----------------------------------------*/        /* CNC: Tool life management data related */        /*----------------------------------------*/        /* read tool life management data(tool group number) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrpid")]        public static extern short cnc_rdgrpid(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE1 b);        /// <summary>        /// 刀片组的全部数量        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <returns></returns>        /* read tool life management data(number of tool groups) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdngrp")]        public static extern short cnc_rdngrp(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE2 a);        /// <summary>        /// 刀具的数量        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <returns></returns>        /* read tool life management data(number of tools) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdntool")]        public static extern short cnc_rdntool(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE3 b);        /// <summary>        /// 刀具寿命        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <returns></returns>        /* read tool life management data(tool life) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlife")]        public static extern short cnc_rdlife(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE3 b);        /// <summary>        /// 刀具计时器        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <returns></returns>        /* read tool life management data(tool lift counter) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcount")]        public static extern short cnc_rdcount(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE3 b);        /* read tool life management data(tool length number-1) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd1length")]        public static extern short cnc_rd1length(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(tool length number-2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd2length")]        public static extern short cnc_rd2length(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(cutter compensation no.-1) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd1radius")]        public static extern short cnc_rd1radius(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(cutter compensation no.-2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd2radius")]        public static extern short cnc_rd2radius(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(tool information-1) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_t1info")]        public static extern short cnc_t1info(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(tool information-2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_t2info")]        public static extern short cnc_t2info(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(tool number) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_toolnum")]        public static extern short cnc_toolnum(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE4 c);        /* read tool life management data(tool number, tool life, tool life counter)(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtoolrng")]        public static extern short cnc_rdtoolrng(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTR d);        /// <summary>        /// 根据刀组号读出所有信息,很重要        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <param name="c"></param>        /// <returns></returns>        /* read tool life management data(all data within group) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtoolgrp")]        public static extern short cnc_rdtoolgrp(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTG c);        /* write tool life management data(tool life counter) (area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrcountr")]        public static extern short cnc_wrcountr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IDBWRC b);        /* read tool life management data(used tool group number) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdusegrpid")]        public static extern short cnc_rdusegrpid(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBUSEGR a);        /* read tool life management data(max. number of tool groups) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmaxgrp")]        public static extern short cnc_rdmaxgrp(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLFNO a);        /* read tool life management data(maximum number of tool within group) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmaxtool")]        public static extern short cnc_rdmaxtool(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLFNO a);        /* read tool life management data(used tool no. within group) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdusetlno")]        public static extern short cnc_rdusetlno(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLUSE d);        /* read tool life management data(tool data1) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd1tlifedata")]        public static extern short cnc_rd1tlifedata(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTD c);        /* read tool life management data(tool data2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd2tlifedata")]        public static extern short cnc_rd2tlifedata(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTD c);        /* write tool life management data(tool data1) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wr1tlifedata")]        public static extern short cnc_wr1tlifedata(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTD a);        /* write tool life management data(tool data2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wr2tlifedata")]        public static extern short cnc_wr2tlifedata(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTD a);        /* read tool life management data(tool group information) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrpinfo")]        public static extern short cnc_rdgrpinfo(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTGI d);        /* read tool life management data(tool group information 2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrpinfo2")]        public static extern short cnc_rdgrpinfo2(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTGI2 d);        /* read tool life management data(tool group information 3) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrpinfo3")]        public static extern short cnc_rdgrpinfo3(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTGI3 d);        /* read tool life management data(tool group information 4) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrpinfo4")]        public static extern short cnc_rdgrpinfo4(ushort FlibHndl,            short a, short b, short c, out short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTGI4 e);        /* write tool life management data(tool group information) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrgrpinfo")]        public static extern short cnc_wrgrpinfo(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTGI b);        /* write tool life management data(tool group information 2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrgrpinfo2")]        public static extern short cnc_wrgrpinfo2(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTGI2 b);        /* write tool life management data(tool group information 3) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrgrpinfo3")]        public static extern short cnc_wrgrpinfo3(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTGI3 b);        /* delete tool life management data(tool group) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_deltlifegrp")]        public static extern short cnc_deltlifegrp(ushort FlibHndl, short a);        /* insert tool life management data(tool data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_instlifedt")]        public static extern short cnc_instlifedt(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IDBITD a);        /* delete tool life management data(tool data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_deltlifedt")]        public static extern short cnc_deltlifedt(ushort FlibHndl, short a, short b);        /* clear tool life management data(tool life counter, tool information)(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clrcntinfo")]        public static extern short cnc_clrcntinfo(ushort FlibHndl, short a, short b);        /// <summary>        /// 读取刀具寿命管理数据        /// </summary>        /// <param name="FlibHndl"></param>        /// <param name="a"></param>        /// <param name="b"></param>        /// <returns></returns>        /* read tool life management data(tool group number) 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrpid2")]        public static extern short cnc_rdgrpid2(ushort FlibHndl, int a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLIFE5 b);        /* read tool life management data(tool data1) 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd1tlifedat2")]        public static extern short cnc_rd1tlifedat2(ushort FlibHndl,            short a, int b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTD2 c);        /* write tool life management data(tool data1) 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wr1tlifedat2")]        public static extern short cnc_wr1tlifedat2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTD2 a);        /* read tool life management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtlinfo")]        public static extern short cnc_rdtlinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBTLINFO a);        /* read tool life management data(used tool group number) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtlusegrp")]        public static extern short cnc_rdtlusegrp(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBUSEGRP a);        /* read tool life management data(tool group information 2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtlgrp")]        public static extern short cnc_rdtlgrp(ushort FlibHndl,            int a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLGRP c);        /* read tool life management data (tool data1) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtltool")]        public static extern short cnc_rdtltool(ushort FlibHndl,            int a, int b, ref short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLTOOL d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdexchgtgrp")]        public static extern short cnc_rdexchgtgrp(ushort FlibHndl,            ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBEXGP c);        /*-----------------------------------*/        /* CNC: Tool management data related */        /*-----------------------------------*/        /* new registration of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_regtool")]        public static extern short cnc_regtool(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLMNG c);        /* new registration of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_regtool_f2")]        public static extern short cnc_regtool_f2(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLMNG_F2 c);        /* deletion of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_deltool")]        public static extern short cnc_deltool(ushort FlibHndl, short a, ref short b);        /* lead of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtool")]        public static extern short cnc_rdtool(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLMNG c);        /* lead of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtool_f2")]        public static extern short cnc_rdtool_f2(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLMNG_F2 c);        /* write of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtool")]        public static extern short cnc_wrtool(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLMNG b);        /* write of individual data of tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtool2")]        public static extern short cnc_wrtool2(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IDBTLM b);        /* write tool management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtool_f2")]        public static extern short cnc_wrtool_f2(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLMNG_F2_data b);        /* new registration of magazine management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_regmagazine")]        public static extern short cnc_regmagazine(ushort FlibHndl, ref short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLMAG b);        /* deletion of magazine management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_delmagazine")]        public static extern short cnc_delmagazine(ushort FlibHndl, ref short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLMAG2 b);        /* lead of magazine management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmagazine")]        public static extern short cnc_rdmagazine(ushort FlibHndl, ref short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLMAG b);        /* Individual write of magazine management data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmagazine")]        public static extern short cnc_wrmagazine(ushort FlibHndl, short a, short b, short c);        /*-------------------------------------*/        /* CNC: Operation history data related */        /*-------------------------------------*/        /* stop logging operation history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stopophis")]        public static extern short cnc_stopophis(ushort FlibHndl);        /* restart logging operation history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startophis")]        public static extern short cnc_startophis(ushort FlibHndl);        /* read number of operation history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophisno")]        public static extern short cnc_rdophisno(ushort FlibHndl, out ushort a);        /* read operation history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry")]        public static extern short cnc_rdophistry(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBHIS d);        /* read operation history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry2")]        public static extern short cnc_rdophistry2(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.AsAny)] Object d);        /* read operation history data F30i*/        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_1 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_2 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_3 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_4 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_5 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_6 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_7 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_8 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_9 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_10 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdophistry4")]        public static extern short cnc_rdophistry4(ushort FlibHndl,            ushort a, ref ushort b, ref ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOPHIS4_11 d);        /* read number of alarm history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmhisno")]        public static extern short cnc_rdalmhisno(ushort FlibHndl, out ushort a);        /* read alarm history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmhistry")]        public static extern short cnc_rdalmhistry(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAHIS d);        /* read alarm history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmhistry_w")]        public static extern short cnc_rdalmhistry_w(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAHIS d);        /* read alarm history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmhistry2")]        public static extern short cnc_rdalmhistry2(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAHIS2 d);        /* read alarm history data F30i*/        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmhistry3")]        public static extern short cnc_rdalmhistry3(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAHIS3 d);        /* read alarm history data F30i*/        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmhistry5")]        public static extern short cnc_rdalmhistry5(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAHIS5 d);        /* clear operation history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clearophis")]        public static extern short cnc_clearophis(ushort FlibHndl, short a);        /* read signals related operation history */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhissgnl")]        public static extern short cnc_rdhissgnl(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSIG a);        /* read signals related operation history 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhissgnl2")]        public static extern short cnc_rdhissgnl2(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSIG2 a);        /* read signals related operation history 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhissgnl3")]        public static extern short cnc_rdhissgnl3(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSIG3 a);        /* write signals related operation history */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrhissgnl")]        public static extern short cnc_wrhissgnl(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSIG a);        /* write signals related operation history 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrhissgnl2")]        public static extern short cnc_wrhissgnl2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSIG2 a);        /* write signals related operation history for F30i*/        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrhissgnl3")]        public static extern short cnc_wrhissgnl3(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSIG3 a);        /* read number of operater message history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdomhisno")]        public static extern short cnc_rdomhisno(ushort FlibHndl, out ushort a);        /*-------------*/        /* CNC: Others */        /*-------------*/        /* read CNC system information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sysinfo")]        public static extern short cnc_sysinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYS a);        /* read CNC status information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_statinfo")]        public static extern short cnc_statinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBST a);        /* read alarm status */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_alarm")]        public static extern short cnc_alarm(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBALM a);        /* read alarm status */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_alarm2")]        public static extern short cnc_alarm2(ushort FlibHndl, out int a);        /* read alarm information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalminfo")]        public static extern short cnc_rdalminfo(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ALMINFO_1 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalminfo")]        public static extern short cnc_rdalminfo(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ALMINFO_2 d);        /* read alarm message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmmsg")]        public static extern short cnc_rdalmmsg(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBALMMSG c);        /* read alarm message(2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdalmmsg2")]        public static extern short cnc_rdalmmsg2(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBALMMSG2 c);        /* clear CNC alarm */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clralm")]        public static extern short cnc_clralm(ushort FlibHndl, short a);        /* read modal data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_modal")]        public static extern short cnc_modal(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDL_1 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_modal")]        public static extern short cnc_modal(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDL_2 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_modal")]        public static extern short cnc_modal(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDL_3 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_modal")]        public static extern short cnc_modal(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDL_4 c);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_modal")]        public static extern short cnc_modal(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDL_5 c);        /* read G code */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgcode")]        public static extern short cnc_rdgcode(ushort FlibHndl,            short a, short b, ref short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBGCD d);        /* read command value */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcommand")]        public static extern short cnc_rdcommand(ushort FlibHndl,            short a, short b, ref short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBCMD d);        /* read diagnosis data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_diagnoss")]        public static extern short cnc_diagnoss(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDGN_1 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_diagnoss")]        public static extern short cnc_diagnoss(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDGN_2 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_diagnoss")]        public static extern short cnc_diagnoss(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDGN_3 d);        [DllImport("FWLIB32.dll", EntryPoint = "cnc_diagnoss")]        public static extern short cnc_diagnoss(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDGN_4 d);        /* read diagnosis data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_diagnosr")]        public static extern short cnc_diagnosr(ushort FlibHndl,            ref short a, short b, ref short c, ref short d, [Out, MarshalAs(UnmanagedType.AsAny)] Object e);        //  [DllImport("FWLIB32.dll", EntryPoint="cnc_diagnosr")]        //  public static extern short cnc_diagnosr( ushort FlibHndl,        //      ref short a, short b, ref short c, ref short d, [Out,MarshalAs(UnmanagedType.LPStruct)] ODBDGN e );        /* read A/D conversion data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_adcnv")]        public static extern short cnc_adcnv(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAD c);        /* read operator's message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopmsg")]        public static extern short cnc_rdopmsg(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] OPMSG c);        /* read operator's message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopmsg2")]        public static extern short cnc_rdopmsg2(ushort FlibHndl, short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] OPMSG2 c);        /* read operator's message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopmsg3")]        public static extern short cnc_rdopmsg3(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] OPMSG3 c);        /* set path number(for 4 axes lathes, multi-path) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setpath")]        public static extern short cnc_setpath(ushort FlibHndl, short a);        /* get path number(for 4 axes lathes, multi-path) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getpath")]        public static extern short cnc_getpath(ushort FlibHndl, out short a, out short b);        /* allocate library handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_allclibhndl")]        public static extern short cnc_allclibhndl(out ushort FlibHndl);        /* free library handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_freelibhndl")]        public static extern short cnc_freelibhndl(ushort FlibHndl);        /* get library option */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getlibopt")]        public static extern short cnc_getlibopt(ushort FlibHndl, int a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* set library option */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setlibopt")]        public static extern short cnc_setlibopt(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, int c);        /* get custom macro type */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getmactype")]        public static extern short cnc_getmactype(ushort FlibHndl, out short a);        /* set custom macro type */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setmactype")]        public static extern short cnc_setmactype(ushort FlibHndl, short a);        /* get P code macro type */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getpmactype")]        public static extern short cnc_getpmactype(ushort FlibHndl, out short a);        /* set P code macro type */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setpmactype")]        public static extern short cnc_setpmactype(ushort FlibHndl, short a);        /* get screen status */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getcrntscrn")]        public static extern short cnc_getcrntscrn(ushort FlibHndl, out short a);        /* change screen mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_slctscrn")]        public static extern short cnc_slctscrn(ushort FlibHndl, short a);        /* read CNC configuration information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sysconfig")]        public static extern short cnc_sysconfig(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYSC a);        /* read program restart information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprstrinfo")]        public static extern short cnc_rdprstrinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPRS a);        /* search sequence number for program restart */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rstrseqsrch")]        public static extern short cnc_rstrseqsrch(ushort FlibHndl, int a, int b, short c, short d);        /* search sequence number for program restart 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rstrseqsrch2")]        public static extern short cnc_rstrseqsrch2(ushort FlibHndl, int a, int b, short c, short d, int e);        /* read output signal image of software operator's panel  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopnlsgnl")]        public static extern short cnc_rdopnlsgnl(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSGNL b);        /* write output signal of software operator's panel  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wropnlsgnl")]        public static extern short cnc_wropnlsgnl(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSGNL a);        /* read general signal image of software operator's panel  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopnlgnrl")]        public static extern short cnc_rdopnlgnrl(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBGNRL b);        /* write general signal image of software operator's panel  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wropnlgnrl")]        public static extern short cnc_wropnlgnrl(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBGNRL a);        /* read general signal name of software operator's panel  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopnlgsname")]        public static extern short cnc_rdopnlgsname(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBRDNA b);        /* write general signal name of software operator's panel  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wropnlgsname")]        public static extern short cnc_wropnlgsname(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBRDNA a);        /* get detail error */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getdtailerr")]        public static extern short cnc_getdtailerr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBERR a);        /* read informations of CNC parameter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparainfo")]        public static extern short cnc_rdparainfo(ushort FlibHndl,            short a, ushort b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPARAIF c);        /* read informations of CNC setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsetinfo")]        public static extern short cnc_rdsetinfo(ushort FlibHndl,            short a, ushort b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSETIF c);        /* read informations of CNC diagnose data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddiaginfo")]        public static extern short cnc_rddiaginfo(ushort FlibHndl,            short a, ushort b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDIAGIF c);        /* read maximum, minimum and total number of CNC parameter */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdparanum")]        public static extern short cnc_rdparanum(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPARANUM a);        /* read maximum, minimum and total number of CNC setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsetnum")]        public static extern short cnc_rdsetnum(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSETNUM a);        /* read maximum, minimum and total number of CNC diagnose data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddiagnum")]        public static extern short cnc_rddiagnum(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDIAGNUM a);        /* get maximum valid figures and number of decimal places */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getfigure")]        public static extern short cnc_getfigure(ushort FlibHndl,            short a, out short b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c, [Out, MarshalAs(UnmanagedType.AsAny)] Object d);        /* read F-ROM information on CNC  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdfrominfo")]        public static extern short cnc_rdfrominfo(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBFINFO b);        /* start of reading F-ROM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromsvstart")]        public static extern short cnc_fromsvstart(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, int c);        /* read F-ROM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromsave")]        public static extern short cnc_fromsave(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* end of reading F-ROM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromsvend")]        public static extern short cnc_fromsvend(ushort FlibHndl);        /* start of writing F-ROM data to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromldstart")]        public static extern short cnc_fromldstart(ushort FlibHndl, short a, int b);        /* write F-ROM data to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromload")]        public static extern short cnc_fromload(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, ref int b);        /* end of writing F-ROM data to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromldend")]        public static extern short cnc_fromldend(ushort FlibHndl);        /* delete F-ROM data on CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromdelete")]        public static extern short cnc_fromdelete(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, int c);        /* read S-RAM information on CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsraminfo")]        public static extern short cnc_rdsraminfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSINFO a);        /* start of reading S-RAM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srambkstart")]        public static extern short cnc_srambkstart(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, int b);        /* read S-RAM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srambackup")]        public static extern short cnc_srambackup(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* end of reading S-RAM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srambkend")]        public static extern short cnc_srambkend(ushort FlibHndl);        /* read F-ROM information on CNC  */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getfrominfo")]        public static extern short cnc_getfrominfo(ushort FlibHndl,            short a, out short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBFINFORM c);        /* start of reading F-ROM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromgetstart")]        public static extern short cnc_fromgetstart(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read F-ROM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromget")]        public static extern short cnc_fromget(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* end of reading F-ROM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromgetend")]        public static extern short cnc_fromgetend(ushort FlibHndl);        /* start of writing F-ROM data to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromputstart")]        public static extern short cnc_fromputstart(ushort FlibHndl, short a);        /* write F-ROM data to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromput")]        public static extern short cnc_fromput(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, ref int b);        /* end of writing F-ROM data to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromputend")]        public static extern short cnc_fromputend(ushort FlibHndl);        /* delete F-ROM data on CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_fromremove")]        public static extern short cnc_fromremove(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read S-RAM information on CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getsraminfo")]        public static extern short cnc_getsraminfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSINFO a);        /* start of reading S-RAM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sramgetstart")]        public static extern short cnc_sramgetstart(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* start of reading S-RAM data from CNC (2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sramgetstart2")]        public static extern short cnc_sramgetstart2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read S-RAM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sramget")]        public static extern short cnc_sramget(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* read S-RAM data from CNC (2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sramget2")]        public static extern short cnc_sramget2(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* end of reading S-RAM data from CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sramgetend")]        public static extern short cnc_sramgetend(ushort FlibHndl);        /* end of reading S-RAM data from CNC (2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sramgetend2")]        public static extern short cnc_sramgetend2(ushort FlibHndl);        /* read number of S-RAM data kind on CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsramnum")]        public static extern short cnc_rdsramnum(ushort FlibHndl, out short a);        /* read S-RAM data address information on CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsramaddr")]        public static extern short cnc_rdsramaddr(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.LPStruct)] SRAMADDR b);        /* get current NC data protection information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getlockstat")]        public static extern short cnc_getlockstat(ushort FlibHndl, short a, out byte b);        /* change NC data protection status */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_chgprotbit")]        public static extern short cnc_chgprotbit(ushort FlibHndl, short a, ref byte b, int c);        /* transfer a file from host computer to CNC by FTP */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvftpget")]        public static extern short cnc_dtsvftpget(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* transfer a file from CNC to host computer by FTP */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvftpput")]        public static extern short cnc_dtsvftpput(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* get transfer status for FTP */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvftpstat")]        public static extern short cnc_dtsvftpstat(ushort FlibHndl);        /* read file directory in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvrdpgdir")]        public static extern short cnc_dtsvrdpgdir(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDSDIR c);        /* delete files in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvdelete")]        public static extern short cnc_dtsvdelete(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* down load from CNC (transfer a file from CNC to MMC) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvdownload")]        public static extern short cnc_dtsvdownload(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* up load to CNC (transfer a file from MMC to CNC) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvupload")]        public static extern short cnc_dtsvupload(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* close upload/download between Data Server and CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvcnclupdn")]        public static extern short cnc_dtsvcnclupdn(ushort FlibHndl);        /* get transfer status for up/down load */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvupdnstat")]        public static extern short cnc_dtsvupdnstat(ushort FlibHndl);        /* get file name for DNC operation in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvgetdncpg")]        public static extern short cnc_dtsvgetdncpg(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* set program number of DNC oparation to CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvsetdncpg")]        public static extern short cnc_dtsvsetdncpg(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read setting data for Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvrdset")]        public static extern short cnc_dtsvrdset(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBDSSET a);        /* write setting data for Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvwrset")]        public static extern short cnc_dtsvwrset(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBDSSET a);        /* check hard disk in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvchkdsk")]        public static extern short cnc_dtsvchkdsk(ushort FlibHndl);        /* format hard disk in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvhdformat")]        public static extern short cnc_dtsvhdformat(ushort FlibHndl);        /* save interface area in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvsavecram")]        public static extern short cnc_dtsvsavecram(ushort FlibHndl);        /* get interface area in Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvrdcram")]        public static extern short cnc_dtsvrdcram(ushort FlibHndl, int a, ref int b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* read maintenance information for Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvmntinfo")]        public static extern short cnc_dtsvmntinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDSMNT a);        /* get Data Server mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvgetmode")]        public static extern short cnc_dtsvgetmode(ushort FlibHndl, out short a);        /* set Data Server mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvsetmode")]        public static extern short cnc_dtsvsetmode(ushort FlibHndl, short a);        /* read error message for Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvrderrmsg")]        public static extern short cnc_dtsvrderrmsg(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* transfar file from Pc to Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvwrfile")]        public static extern short cnc_dtsvwrfile(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, short c);        /* transfar file from Data Server to Pc */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dtsvrdfile")]        public static extern short cnc_dtsvrdfile(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, short c);        /* read the loop gain for each axis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdloopgain")]        public static extern short cnc_rdloopgain(ushort FlibHndl, out int a);        /* read the actual current for each axis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcurrent")]        public static extern short cnc_rdcurrent(ushort FlibHndl, out short a);        /* read the actual speed for each axis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsrvspeed")]        public static extern short cnc_rdsrvspeed(ushort FlibHndl, out int a);        /* read the operation mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdopmode")]        public static extern short cnc_rdopmode(ushort FlibHndl, out short a);        /* read the position deviation S */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdposerrs")]        public static extern short cnc_rdposerrs(ushort FlibHndl, out int a);        /* read the position deviation S1 and S2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdposerrs2")]        public static extern short cnc_rdposerrs2(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPSER a);        /* read the position deviation Z in the rigid tap mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdposerrz")]        public static extern short cnc_rdposerrz(ushort FlibHndl, out int a);        /* read the synchronous error in the synchronous control mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsynerrsy")]        public static extern short cnc_rdsynerrsy(ushort FlibHndl, out int a);        /* read the synchronous error in the rigid tap mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsynerrrg")]        public static extern short cnc_rdsynerrrg(ushort FlibHndl, out int a);        /* read the spindle alarm */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspdlalm")]        public static extern short cnc_rdspdlalm(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read the control input signal */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdctrldi")]        public static extern short cnc_rdctrldi(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPDI a);        /* read the control output signal */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdctrldo")]        public static extern short cnc_rdctrldo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPDO a);        /* read the number of controled spindle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdnspdl")]        public static extern short cnc_rdnspdl(ushort FlibHndl, out short a);        /* read data from FANUC BUS */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdfbusmem")]        public static extern short cnc_rdfbusmem(ushort FlibHndl,            short a, short b, int c, int d, [Out, MarshalAs(UnmanagedType.AsAny)] Object e);        /* write data to FANUC BUS */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrfbusmem")]        public static extern short cnc_wrfbusmem(ushort FlibHndl,            short a, short b, int c, int d, [In, MarshalAs(UnmanagedType.AsAny)] Object e);        /* read the parameter of wave diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdwaveprm")]        public static extern short cnc_rdwaveprm(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBWAVE a);        /* write the parameter of wave diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrwaveprm")]        public static extern short cnc_wrwaveprm(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBWAVE a);        /* read the parameter of wave diagnosis 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdwaveprm2")]        public static extern short cnc_rdwaveprm2(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBWVPRM a);        /* write the parameter of wave diagnosis 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrwaveprm2")]        public static extern short cnc_wrwaveprm2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBWVPRM a);        /* start the sampling for wave diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wavestart")]        public static extern short cnc_wavestart(ushort FlibHndl);        /* stop the sampling for wave diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wavestop")]        public static extern short cnc_wavestop(ushort FlibHndl);        /* read the status of wave diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wavestat")]        public static extern short cnc_wavestat(ushort FlibHndl, out short a);        /* read the data of wave diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdwavedata")]        public static extern short cnc_rdwavedata(ushort FlibHndl,            short a, short b, int c, ref int d, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBWVDT e);        /* read the parameter of wave diagnosis for remort diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrmtwaveprm")]        public static extern short cnc_rdrmtwaveprm(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBRMTPRM a, short b);        /* write the parameter of wave diagnosis for remort diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrrmtwaveprm")]        public static extern short cnc_wrrmtwaveprm(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBRMTPRM a);        /* start the sampling for wave diagnosis for remort diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rmtwavestart")]        public static extern short cnc_rmtwavestart(ushort FlibHndl);        /* stop the sampling for wave diagnosis for remort diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rmtwavestop")]        public static extern short cnc_rmtwavestop(ushort FlibHndl);        /* read the status of wave diagnosis for remort diagnosis*/        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rmtwavestat")]        public static extern short cnc_rmtwavestat(ushort FlibHndl, out short a);        /* read the data of wave diagnosis for remort diagnosis */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrmtwavedt")]        public static extern short cnc_rdrmtwavedt(ushort FlibHndl,            short a, int b, ref int c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBRMTDT d);        /* read of address for PMC signal batch save */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsavsigadr")]        public static extern short cnc_rdsavsigadr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSIGAD a, short b);        /* write of address for PMC signal batch save */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrsavsigadr")]        public static extern short cnc_wrsavsigadr(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSIGAD a, out short b);        /* read of data for PMC signal batch save */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsavsigdata")]        public static extern short cnc_rdsavsigdata(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c, ref short d);        /* read M-code group data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmgrpdata")]        public static extern short cnc_rdmgrpdata(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMGRP c);        /* write M-code group data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmgrpdata")]        public static extern short cnc_wrmgrpdata(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IDBMGRP a);        /* read executing M-code group data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdexecmcode")]        public static extern short cnc_rdexecmcode(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBEXEM c);        /* read program restart M-code group data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrstrmcode")]        public static extern short cnc_rdrstrmcode(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBRSTRM c);        /* read processing time stamp data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdproctime")]        public static extern short cnc_rdproctime(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPTIME a);        /* read MDI program stat */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmdiprgstat")]        public static extern short cnc_rdmdiprgstat(ushort FlibHndl, out ushort a);        /* read program directory for processing time data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprgdirtime")]        public static extern short cnc_rdprgdirtime(ushort FlibHndl,            ref int a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGDIRTM c);        /* read program directory 2 */#if (!ONO8D)        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprogdir2")]        public static extern short cnc_rdprogdir2(ushort FlibHndl,            short a, ref short b, ref short c, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGDIR2 d);#else    [DllImport("FWLIB32.dll", EntryPoint="cnc_rdprogdir2o8")]    public static extern short cnc_rdprogdir2( ushort FlibHndl,        short a, ref short b, ref short c, [Out,MarshalAs(UnmanagedType.LPStruct)] PRGDIR2 d );#endif        /* read program directory 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprogdir3")]        public static extern short cnc_rdprogdir3(ushort FlibHndl,            short a, ref int b, ref short c, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGDIR3 d);        /* read program directory 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdprogdir4")]        public static extern short cnc_rdprogdir4(ushort FlibHndl,            short a, int b, ref short c, [Out, MarshalAs(UnmanagedType.LPStruct)] PRGDIR4 d);        /* read DNC file name for DNC1, DNC2, OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddncfname")]        public static extern short cnc_rddncfname(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* write DNC file name for DNC1, DNC2, OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrdncfname")]        public static extern short cnc_wrdncfname(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read communication parameter for DNC1, DNC2, OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcomparam")]        public static extern short cnc_rdcomparam(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBCPRM a);        /* write communication parameter for DNC1, DNC2, OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrcomparam")]        public static extern short cnc_wrcomparam(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBCPRM a);        /* read log message for DNC2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcomlogmsg")]        public static extern short cnc_rdcomlogmsg(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read operator message for DNC1, DNC2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcomopemsg")]        public static extern short cnc_rdcomopemsg(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read recieve message for OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrcvmsg")]        public static extern short cnc_rdrcvmsg(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read send message for OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsndmsg")]        public static extern short cnc_rdsndmsg(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* send message for OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sendmessage")]        public static extern short cnc_sendmessage(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* clear message buffer for OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clrmsgbuff")]        public static extern short cnc_clrmsgbuff(ushort FlibHndl, short a);        /* read message recieve status for OSI-Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrcvstat")]        public static extern short cnc_rdrcvstat(ushort FlibHndl, out ushort a);        /* read interference check */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdintchk")]        public static extern short cnc_rdintchk(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBINT e);        /* write interference check */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrintchk")]        public static extern short cnc_wrintchk(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBINT b);        /* read interference check information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdintinfo")]        public static extern short cnc_rdintinfo(ushort FlibHndl, out short a);        /* read work coordinate shift */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdwkcdshft")]        public static extern short cnc_rdwkcdshft(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBWCSF c);        /* write work coordinate shift */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrwkcdshft")]        public static extern short cnc_wrwkcdshft(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBWCSF b);        /* read work coordinate shift measure */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdwkcdsfms")]        public static extern short cnc_rdwkcdsfms(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBWCSF c);        /* write work coordinate shift measure */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrwkcdsfms")]        public static extern short cnc_wrwkcdsfms(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBWCSF b);        /* stop the sampling for operator message history */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stopomhis")]        public static extern short cnc_stopomhis(ushort FlibHndl);        /* start the sampling for operator message history */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startomhis")]        public static extern short cnc_startomhis(ushort FlibHndl);        /* read operator message history information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdomhisinfo")]        public static extern short cnc_rdomhisinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOMIF a);        /* read operator message history */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdomhistry")]        public static extern short cnc_rdomhistry(ushort FlibHndl,            ushort a, ref ushort b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOMHIS c);        /* read operater message history data F30i */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdomhistry2")]        public static extern short cnc_rdomhistry2(ushort FlibHndl,            ushort a, ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBOMHIS2 d);        /* write external key operation history for F30i*/        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrkeyhistry")]        public static extern short cnc_wrkeyhistry(ushort FlibHndl, byte a);        /* clear operator message history */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clearomhis")]        public static extern short cnc_clearomhis(ushort FlibHndl);        /* read b-axis tool offset value(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdbtofsr")]        public static extern short cnc_rdbtofsr(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBBTO e);        /* write b-axis tool offset value(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrbtofsr")]        public static extern short cnc_wrbtofsr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBBTO b);        /* read b-axis tool offset information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdbtofsinfo")]        public static extern short cnc_rdbtofsinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBBTLINF a);        /* read b-axis command */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdbaxis")]        public static extern short cnc_rdbaxis(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBBAXIS a);        /* read CNC system soft series and version */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsyssoft")]        public static extern short cnc_rdsyssoft(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYSS a);        /* read CNC system soft series and version (2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsyssoft2")]        public static extern short cnc_rdsyssoft2(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYSS2 a);        /* read CNC module configuration information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmdlconfig")]        public static extern short cnc_rdmdlconfig(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMDLC a);        /* read CNC module configuration information 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmdlconfig2")]        public static extern short cnc_rdmdlconfig2(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read processing condition file (processing data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpscdproc")]        public static extern short cnc_rdpscdproc(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPSCD c);        /* write processing condition file (processing data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpscdproc")]        public static extern short cnc_wrpscdproc(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPSCD c);        /* read processing condition file (piercing data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpscdpirc")]        public static extern short cnc_rdpscdpirc(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPIRC c);        /* write processing condition file (piercing data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpscdpirc")]        public static extern short cnc_wrpscdpirc(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPIRC c);        /* read processing condition file (edging data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpscdedge")]        public static extern short cnc_rdpscdedge(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBEDGE c);        /* write processing condition file (edging data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpscdedge")]        public static extern short cnc_wrpscdedge(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBEDGE c);        /* read processing condition file (slope data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpscdslop")]        public static extern short cnc_rdpscdslop(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSLOP c);        /* write processing condition file (slope data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpscdslop")]        public static extern short cnc_wrpscdslop(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSLOP c);        /* read power controll duty data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlpwrdty")]        public static extern short cnc_rdlpwrdty(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBLPWDT a);        /* write power controll duty data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlpwrdty")]        public static extern short cnc_wrlpwrdty(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBLPWDT a);        /* read laser power data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlpwrdat")]        public static extern short cnc_rdlpwrdat(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLOPDT a);        /* read power complement */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlpwrcpst")]        public static extern short cnc_rdlpwrcpst(ushort FlibHndl, out short a);        /* write power complement */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlpwrcpst")]        public static extern short cnc_wrlpwrcpst(ushort FlibHndl, short a);        /* read laser assist gas selection */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlagslt")]        public static extern short cnc_rdlagslt(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBLAGSL a);        /* write laser assist gas selection */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlagslt")]        public static extern short cnc_wrlagslt(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBLAGSL a);        /* read laser assist gas flow */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlagst")]        public static extern short cnc_rdlagst(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBLAGST a);        /* write laser assist gas flow */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlagst")]        public static extern short cnc_wrlagst(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBLAGST a);        /* read laser power for edge processing */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdledgprc")]        public static extern short cnc_rdledgprc(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBLEGPR a);        /* write laser power for edge processing */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrledgprc")]        public static extern short cnc_wrledgprc(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBLEGPR a);        /* read laser power for piercing */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlprcprc")]        public static extern short cnc_rdlprcprc(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBLPCPR a);        /* write laser power for piercing */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlprcprc")]        public static extern short cnc_wrlprcprc(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBLPCPR a);        /* read laser command data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlcmddat")]        public static extern short cnc_rdlcmddat(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLCMDT a);        /* read displacement */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdldsplc")]        public static extern short cnc_rdldsplc(ushort FlibHndl, out short a);        /* write displacement */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrldsplc")]        public static extern short cnc_wrldsplc(ushort FlibHndl, short a);        /* read error for axis z */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlerrz")]        public static extern short cnc_rdlerrz(ushort FlibHndl, out short a);        /* read active number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlactnum")]        public static extern short cnc_rdlactnum(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLACTN a);        /* read laser comment */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlcmmt")]        public static extern short cnc_rdlcmmt(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLCMMT a);        /* read laser power select */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlpwrslt")]        public static extern short cnc_rdlpwrslt(ushort FlibHndl, out short a);        /* write laser power select */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlpwrslt")]        public static extern short cnc_wrlpwrslt(ushort FlibHndl, short a);        /* read laser power controll */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlpwrctrl")]        public static extern short cnc_rdlpwrctrl(ushort FlibHndl, out short a);        /* write laser power controll */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrlpwrctrl")]        public static extern short cnc_wrlpwrctrl(ushort FlibHndl, short a);        /* read power correction factor history data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpwofsthis")]        public static extern short cnc_rdpwofsthis(ushort FlibHndl,            int a, ref int b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPWOFST c);        /* read management time */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmngtime")]        public static extern short cnc_rdmngtime(ushort FlibHndl,            int a, ref int b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBMNGTIME c);        /* write management time */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmngtime")]        public static extern short cnc_wrmngtime(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBMNGTIME b);        /* read data related to electrical discharge at power correction ends */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddischarge")]        public static extern short cnc_rddischarge(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDISCHRG a);        /* read alarm history data related to electrical discharg */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddischrgalm")]        public static extern short cnc_rddischrgalm(ushort FlibHndl,            int a, ref int b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBDISCHRGALM c);        /* get date and time from cnc */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_gettimer")]        public static extern short cnc_gettimer(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTIMER a);        /* set date and time for cnc */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_settimer")]        public static extern short cnc_settimer(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTIMER a);        /* read timer data from cnc */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtimer")]        public static extern short cnc_rdtimer(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTIME b);        /* write timer data for cnc */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtimer")]        public static extern short cnc_wrtimer(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTIME b);        /* read tool controll data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtlctldata")]        public static extern short cnc_rdtlctldata(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLCTL a);        /* write tool controll data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtlctldata")]        public static extern short cnc_wrtlctldata(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLCTL a);        /* read tool data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtooldata")]        public static extern short cnc_rdtooldata(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLDT c);        /* read tool data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtooldata")]        public static extern short cnc_wrtooldata(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLDT c);        /* read multi tool data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmultitldt")]        public static extern short cnc_rdmultitldt(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBMLTTL c);        /* write multi tool data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmultitldt")]        public static extern short cnc_wrmultitldt(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBMLTTL c);        /* read multi tap data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmtapdata")]        public static extern short cnc_rdmtapdata(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBMTAP c);        /* write multi tap data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmtapdata")]        public static extern short cnc_wrmtapdata(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBMTAP c);        /* read multi-piece machining number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmultipieceno")]        public static extern short cnc_rdmultipieceno(ushort FlibHndl, out int a);        /* read tool information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtoolinfo")]        public static extern short cnc_rdtoolinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPTLINF a);        /* read safetyzone data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsafetyzone")]        public static extern short cnc_rdsafetyzone(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSAFE c);        /* write safetyzone data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrsafetyzone")]        public static extern short cnc_wrsafetyzone(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSAFE c);        /* read toolzone data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdtoolzone")]        public static extern short cnc_rdtoolzone(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBTLZN c);        /* write toolzone data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrtoolzone")]        public static extern short cnc_wrtoolzone(ushort FlibHndl,            short a, ref short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBTLZN c);        /* read active toolzone data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdacttlzone")]        public static extern short cnc_rdacttlzone(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBACTTLZN a);        /* read setzone number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsetzone")]        public static extern short cnc_rdsetzone(ushort FlibHndl, out short a);        /* write setzone number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrsetzone")]        public static extern short cnc_wrsetzone(ushort FlibHndl, short a);        /* read block restart information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdbrstrinfo")]        public static extern short cnc_rdbrstrinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBBRS a);        /* read menu switch signal */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmenuswitch")]        public static extern short cnc_rdmenuswitch(ushort FlibHndl, out short a);        /* write menu switch signal */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrmenuswitch")]        public static extern short cnc_wrmenuswitch(ushort FlibHndl, short a, short b);        /* read tool radius offset for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdradofs")]        public static extern short cnc_rdradofs(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBROFS a);        /* read tool length offset for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdlenofs")]        public static extern short cnc_rdlenofs(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBLOFS a);        /* read fixed cycle for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdfixcycle")]        public static extern short cnc_rdfixcycle(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBFIX a);        /* read coordinate rotate for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcdrotate")]        public static extern short cnc_rdcdrotate(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBROT a);        /* read 3D coordinate convert for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd3dcdcnv")]        public static extern short cnc_rd3dcdcnv(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODB3DCD a);        /* read programable mirror image for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdmirimage")]        public static extern short cnc_rdmirimage(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBMIR a);        /* read scaling for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdscaling")]        public static extern short cnc_rdscaling(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSCL a);        /* read 3D tool offset for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd3dtofs")]        public static extern short cnc_rd3dtofs(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODB3DTO a);        /* read tool position offset for position data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdposofs")]        public static extern short cnc_rdposofs(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPOFS a);        /* read hpcc setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhpccset")]        public static extern short cnc_rdhpccset(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBHPST a);        /* write hpcc setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrhpccset")]        public static extern short cnc_wrhpccset(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBHPST a);        /* hpcc data auto setting data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_hpccatset")]        public static extern short cnc_hpccatset(ushort FlibHndl);        /* read hpcc tuning data ( parameter input ) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhpcctupr")]        public static extern short cnc_rdhpcctupr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBHPPR a);        /* write hpcc tuning data ( parameter input ) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrhpcctupr")]        public static extern short cnc_wrhpcctupr(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBHPPR a);        /* read hpcc tuning data ( acc input ) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdhpcctuac")]        public static extern short cnc_rdhpcctuac(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBHPAC a);        /* write hpcc tuning data ( acc input ) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrhpcctuac")]        public static extern short cnc_wrhpcctuac(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBHPAC a);        /* hpcc data auto tuning */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_hpccattune")]        public static extern short cnc_hpccattune(ushort FlibHndl, short a, out short b);        /* read hpcc fine level */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_hpccactfine")]        public static extern short cnc_hpccactfine(ushort FlibHndl, out short a);        /* select hpcc fine level */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_hpccselfine")]        public static extern short cnc_hpccselfine(ushort FlibHndl, short a);        /* read active fixture offset */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdactfixofs")]        public static extern short cnc_rdactfixofs(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBZOFS b);        /* read fixture offset */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdfixofs")]        public static extern short cnc_rdfixofs(ushort FlibHndl,            short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBZOR e);        /* write fixture offset */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrfixofs")]        public static extern short cnc_wrfixofs(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBZOR b);        /* read tip of tool for 3D handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd3dtooltip")]        public static extern short cnc_rd3dtooltip(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODB3DHDL a);        /* read pulse for 3D handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd3dpulse")]        public static extern short cnc_rd3dpulse(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODB3DPLS a);        /* read move overrlap of tool for 3D handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd3dmovrlap")]        public static extern short cnc_rd3dmovrlap(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODB3DHDL a);        /* read change offset for 3D handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rd3dofschg")]        public static extern short cnc_rd3dofschg(ushort FlibHndl, ref int a);        /* clear pulse and change offset for 3D handle */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clr3dplsmov")]        public static extern short cnc_clr3dplsmov(ushort FlibHndl, short a);        /* cycle start */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_start")]        public static extern short cnc_start(ushort FlibHndl);        /* reset CNC */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_reset")]        public static extern short cnc_reset(ushort FlibHndl);        /* reset CNC 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_reset2")]        public static extern short cnc_reset2(ushort FlibHndl);        /* read axis name */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdaxisname")]        public static extern short cnc_rdaxisname(ushort FlibHndl,            ref short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXISNAME b);        /* read spindle name */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdspdlname")]        public static extern short cnc_rdspdlname(ushort FlibHndl,            ref short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSPDLNAME b);        /* read extended axis name */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_exaxisname")]        public static extern short cnc_exaxisname(ushort FlibHndl,            short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBEXAXISNAME c);        /* read SRAM variable area for C language executor */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcexesram")]        public static extern short cnc_rdcexesram(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* write SRAM variable area for C language executor */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrcexesram")]        public static extern short cnc_wrcexesram(ushort FlibHndl, int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, ref int c);        /* read maximum size and linear address of SRAM variable area for C language executor */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cexesraminfo")]        public static extern short cnc_cexesraminfo(ushort FlibHndl, out short a, out int b, out int c);        /* read maximum size of SRAM variable area for C language executor */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cexesramsize")]        public static extern short cnc_cexesramsize(ushort FlibHndl, out int a);        /* read additional workpiece coordinate systems number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcoordnum")]        public static extern short cnc_rdcoordnum(ushort FlibHndl, out short a);        /* converts from FANUC code to Shift JIS code */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_ftosjis")]        public static extern short cnc_ftosjis(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* Set the unsolicited message parameters */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrunsolicprm")]        public static extern short cnc_wrunsolicprm(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBUNSOLIC b);        /* Get the unsolicited message parameters */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdunsolicprm")]        public static extern short cnc_rdunsolicprm(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBUNSOLIC b);        /* Start of unsolicited message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_unsolicstart")]        public static extern short cnc_unsolicstart(ushort FlibHndl, short a, int hWnd, uint c, short d, out short e);        /* End of unsolicited message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_unsolicstop")]        public static extern short cnc_unsolicstop(ushort FlibHndl, short a);        /* Reads the unsolicited message data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdunsolicmsg")]        public static extern short cnc_rdunsolicmsg(short a, [In, Out] IDBUNSOLICMSG b);        /* read machine specific maintenance item */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpm_mcnitem")]        public static extern short cnc_rdpm_mcnitem(ushort FlibHndl, short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBITEM c);        /* write machine specific maintenance item */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpm_mcnitem")]        public static extern short cnc_wrpm_mcnitem(ushort FlibHndl, short a, short b, [In, MarshalAs(UnmanagedType.LPStruct)] IODBITEM c);        /* read cnc maintenance item */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpm_cncitem")]        public static extern short cnc_rdpm_cncitem(ushort FlibHndl, short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBITEM c);        /* read maintenance item status */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdpm_item")]        public static extern short cnc_rdpm_item(ushort FlibHndl, short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPMAINTE c);        /* write maintenance item status */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrpm_item")]        public static extern short cnc_wrpm_item(ushort FlibHndl, short a, short b, short c, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPMAINTE d);        /* Display of optional message */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_dispoptmsg")]        public static extern short cnc_dispoptmsg(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* Reading of answer for optional message display */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_optmsgans")]        public static extern short cnc_optmsgans(ushort FlibHndl, out short a);        /* Get CNC Model */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getcncmodel")]        public static extern short cnc_getcncmodel(ushort FlibHndl, out short a);        /* read number of repeats */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrepeatval")]        public static extern short cnc_rdrepeatval(ushort FlibHndl, out int a);        /* read CNC system hard info */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsyshard")]        public static extern short cnc_rdsyshard(ushort FlibHndl, short a, ref short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYSH c);        /* read CNC system soft series and version (3) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdsyssoft3")]        public static extern short cnc_rdsyssoft3(ushort FlibHndl, short a, ref short b, out short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYSS3 d);        /* read digit of program number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_progdigit")]        public static extern short cnc_progdigit(ushort FlibHndl, out short a);        /* read CNC system path information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sysinfo_ex")]        public static extern short cnc_sysinfo_ex(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSYSEX a);        /*------------------*/        /* CNC : SERCOS I/F */        /*------------------*/        /* Get reservation of service channel for SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsrsvchnl")]        public static extern short cnc_srcsrsvchnl(ushort FlibHndl);        /* Read ID information of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsrdidinfo")]        public static extern short cnc_srcsrdidinfo(ushort FlibHndl,            int a, short b, short c, [Out, MarshalAs(UnmanagedType.AsAny)] IODBIDINF d);        /* Write ID information of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcswridinfo")]        public static extern short cnc_srcswridinfo(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBIDINF a);        /* Start of reading operation data from drive of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsstartrd")]        public static extern short cnc_srcsstartrd(ushort FlibHndl, int a, short b);        /* Start of writing operation data to drive of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsstartwrt")]        public static extern short cnc_srcsstartwrt(ushort FlibHndl, int a, short b);        /* Stop of reading/writing operation data from/to drive of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsstopexec")]        public static extern short cnc_srcsstopexec(ushort FlibHndl);        /* Get execution status of reading/writing operation data of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsrdexstat")]        public static extern short cnc_srcsrdexstat(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSRCSST a);        /* Read operation data from data buffer for SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsrdopdata")]        public static extern short cnc_srcsrdopdata(ushort FlibHndl, int a, ref int b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* Write operation data to data buffer for SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcswropdata")]        public static extern short cnc_srcswropdata(ushort FlibHndl, int a, int b, [In, MarshalAs(UnmanagedType.AsAny)] Object c);        /* Free reservation of service channel for SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsfreechnl")]        public static extern short cnc_srcsfreechnl(ushort FlibHndl);        /* Read drive assign of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsrdlayout")]        public static extern short cnc_srcsrdlayout(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSRCSLYT a);        /* Read communication phase of drive of SERCOS I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_srcsrddrvcp")]        public static extern short cnc_srcsrddrvcp(ushort FlibHndl, out short a);        /*----------------------------*/        /* CNC : Graphic command data */        /*----------------------------*/        /* Start drawing position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startdrawpos")]        public static extern short cnc_startdrawpos(ushort FlibHndl);        /* Stop drawing position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stopdrawpos")]        public static extern short cnc_stopdrawpos(ushort FlibHndl);        /* Start dynamic graphic */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startdyngrph")]        public static extern short cnc_startdyngrph(ushort FlibHndl);        /* Stop dynamic graphic */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stopdyngrph")]        public static extern short cnc_stopdyngrph(ushort FlibHndl);        /* Read graphic command data */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrphcmd")]        public static extern short cnc_rdgrphcmd(ushort FlibHndl, ref short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* Update graphic command read pointer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrgrphcmdptr")]        public static extern short cnc_wrgrphcmdptr(ushort FlibHndl, short a);        /* Read cancel flag */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdgrphcanflg")]        public static extern short cnc_rdgrphcanflg(ushort FlibHndl, out short a);        /* Clear graphic command */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clrgrphcmd")]        public static extern short cnc_clrgrphcmd(ushort FlibHndl);        /*---------------------------*/        /* CNC : Servo learning data */        /*---------------------------*/        /* Servo learning data read start */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtstartrd")]        public static extern short cnc_svdtstartrd(ushort FlibHndl, short a);        /* Servo learning data write start */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtstartwr")]        public static extern short cnc_svdtstartwr(ushort FlibHndl, short a);        /* Servo learning data read end */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtendrd")]        public static extern short cnc_svdtendrd(ushort FlibHndl);        /* Servo learning data write end */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtendwr")]        public static extern short cnc_svdtendwr(ushort FlibHndl);        /* Servo learning data read/write stop */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtstopexec")]        public static extern short cnc_svdtstopexec(ushort FlibHndl);        /* Servo learning data read from I/F buffer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtrddata")]        public static extern short cnc_svdtrddata(ushort FlibHndl,            out short a, ref int b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* Servo learning data write to I/F buffer */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_svdtwrdata")]        public static extern short cnc_svdtwrdata(ushort FlibHndl,            out short a, ref int b, [In, MarshalAs(UnmanagedType.AsAny)] Object c);        /*----------------------------*/        /* CNC : Servo Guide          */        /*----------------------------*/        /* Servo Guide (Channel data set) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdsetchnl")]        public static extern short cnc_sdsetchnl(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IDBCHAN b);        /* Servo Guide (Channel data clear) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdclrchnl")]        public static extern short cnc_sdclrchnl(ushort FlibHndl);        /* Servo Guide (Sampling start) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdstartsmpl")]        public static extern short cnc_sdstartsmpl(ushort FlibHndl, short a, int b, [Out, MarshalAs(UnmanagedType.AsAny)] Object c);        /* Servo Guide (Sampling cancel) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdcancelsmpl")]        public static extern short cnc_sdcancelsmpl(ushort FlibHndl);        /* Servo Guide (read Sampling data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdreadsmpl")]        public static extern short cnc_sdreadsmpl(ushort FlibHndl,            out short a, int b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSD c);        /* Servo Guide (Sampling end) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdendsmpl")]        public static extern short cnc_sdendsmpl(ushort FlibHndl);        /* Servo Guide (read 1 shot data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sdread1shot")]        public static extern short cnc_sdread1shot(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* Servo feedback data (Channel data set) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sfbsetchnl")]        public static extern short cnc_sfbsetchnl(ushort FlibHndl,            short a, int b, [In, MarshalAs(UnmanagedType.LPStruct)] IDBSFBCHAN c);        /* Servo feedback data (Channel data clear) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sfbclrchnl")]        public static extern short cnc_sfbclrchnl(ushort FlibHndl);        /* Servo feedback data (Sampling start) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sfbstartsmpl")]        public static extern short cnc_sfbstartsmpl(ushort FlibHndl, short a, int b);        /* Servo feedback data (Sampling cancel) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sfbcancelsmpl")]        public static extern short cnc_sfbcancelsmpl(ushort FlibHndl);        /* Servo feedback data (read Sampling data) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sfbreadsmpl")]        public static extern short cnc_sfbreadsmpl(ushort FlibHndl,            out short a, int b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSD c);        /* Servo feedback data (Sampling end) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_sfbendsmpl")]        public static extern short cnc_sfbendsmpl(ushort FlibHndl);        /*----------------------------*/        /* CNC : NC display function  */        /*----------------------------*/        /* Start NC display */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startnccmd")]        public static extern short cnc_startnccmd(ushort FlibHndl);        /* Start NC display (2) */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startnccmd2")]        public static extern short cnc_startnccmd2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* Stop NC display */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stopnccmd")]        public static extern short cnc_stopnccmd(ushort FlibHndl);        /* Get NC display mode */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getdspmode")]        public static extern short cnc_getdspmode(ushort FlibHndl, out short a);        /*------------------------------------*/        /* CNC : Remote diagnostics function  */        /*------------------------------------*/        /* Start remote diagnostics function */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startrmtdgn")]        public static extern short cnc_startrmtdgn(ushort FlibHndl);        /* Stop remote diagnostics function */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stoprmtdgn")]        public static extern short cnc_stoprmtdgn(ushort FlibHndl);        /* Read data from remote diagnostics I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdrmtdgn")]        public static extern short cnc_rdrmtdgn(ushort FlibHndl, out int a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* Write data to remote diagnostics I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrrmtdgn")]        public static extern short cnc_wrrmtdgn(ushort FlibHndl, ref int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* Set CommStatus of remote diagnostics I/F area */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrcommstatus")]        public static extern short cnc_wrcommstatus(ushort FlibHndl, short a);        /* Check remote diagnostics I/F */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_chkrmtdgn")]        public static extern short cnc_chkrmtdgn(ushort FlibHndl);        /*-------------------------*/        /* CNC : FS18-LN function  */        /*-------------------------*/        /* read allowance */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_allowance")]        public static extern short cnc_allowance(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /* read allowanced state */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_allowcnd")]        public static extern short cnc_allowcnd(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBCAXIS c);        /* set work zero */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_workzero")]        public static extern short cnc_workzero(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBZOFS b);        /* set slide position */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_slide")]        public static extern short cnc_slide(ushort FlibHndl,            short a, short b, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBAXIS c);        /*----------------------------------*/        /* CNC: Teaching data I/F function  */        /*----------------------------------*/        /* Teaching data get start */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_startgetdgdat")]        public static extern short cnc_startgetdgdat(ushort FlibHndl);        /* Teaching data get stop */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_stopgetdgdat")]        public static extern short cnc_stopgetdgdat(ushort FlibHndl);        /* Teaching data read */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rddgdat")]        public static extern short cnc_rddgdat(ushort FlibHndl, ref short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* Teaching data read pointer write */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrdgdatptr")]        public static extern short cnc_wrdgdatptr(ushort FlibHndl, short a);        /* Teaching data clear */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_clrdgdat")]        public static extern short cnc_clrdgdat(ushort FlibHndl);        /*---------------------------------*/        /* CNC : C-EXE SRAM file function  */        /*---------------------------------*/        /* open C-EXE SRAM file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_opencexefile")]        public static extern short cnc_opencexefile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, short b, short c);        /* close C-EXE SRAM file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_closecexefile")]        public static extern short cnc_closecexefile(ushort FlibHndl);        /* read C-EXE SRAM file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdcexefile")]        public static extern short cnc_rdcexefile(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a, ref uint b);        /* write C-EXE SRAM file */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_wrcexefile")]        public static extern short cnc_wrcexefile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, ref uint b);        /* read C-EXE SRAM disk directory */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_cexedirectory")]        public static extern short cnc_cexedirectory(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.AsAny)] Object a, ref ushort b, ushort c, [Out, MarshalAs(UnmanagedType.LPStruct)] CFILEINFO d);        /*-----*/        /* PMC */        /*-----*/        /* read message from PMC to MMC */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdmsg")]        public static extern short pmc_rdmsg(ushort FlibHndl, ref short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* write message from MMC to PMC */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrmsg")]        public static extern short pmc_wrmsg(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read message from PMC to MMC(conditional) */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_crdmsg")]        public static extern short pmc_crdmsg(ushort FlibHndl, ref short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* write message from MMC to PMC(conditional) */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_cwrmsg")]        public static extern short pmc_cwrmsg(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read PMC data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcrng")]        public static extern short pmc_rdpmcrng(ushort FlibHndl,            short a, short b, ushort c, ushort d, ushort e, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPMC0 f);        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcrng")]        public static extern short pmc_rdpmcrng(ushort FlibHndl,            short a, short b, ushort c, ushort d, ushort e, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPMC1 f);        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcrng")]        public static extern short pmc_rdpmcrng(ushort FlibHndl,            short a, short b, ushort c, ushort d, ushort e, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPMC2 f);        /* write PMC data(area specified) */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrpmcrng")]        public static extern short pmc_wrpmcrng(ushort FlibHndl, ushort a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPMC0 b);        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrpmcrng")]        public static extern short pmc_wrpmcrng(ushort FlibHndl, ushort a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPMC1 b);        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrpmcrng")]        public static extern short pmc_wrpmcrng(ushort FlibHndl, ushort a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPMC2 b);        /* read data from extended backup memory */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdkpm")]        public static extern short pmc_rdkpm(ushort FlibHndl, uint a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, ushort c);        /* write data to extended backup memory */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrkpm")]        public static extern short pmc_wrkpm(ushort FlibHndl, uint a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, ushort c);        /* read data from extended backup memory 2 */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdkpm2")]        public static extern short pmc_rdkpm2(ushort FlibHndl, uint a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b, uint c);        /* write data to extended backup memory 2 */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrkpm2")]        public static extern short pmc_wrkpm2(ushort FlibHndl, uint a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, uint c);        /* read maximum size of extended backup memory */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_kpmsiz")]        public static extern short pmc_kpmsiz(ushort FlibHndl, out uint a);        /* read informations of PMC data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcinfo")]        public static extern short pmc_rdpmcinfo(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPMCINF b);        /* read PMC parameter data table contorol data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdcntldata")]        public static extern short pmc_rdcntldata(ushort FlibHndl,            short a, short b, short c, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPMCCNTL d);        /* write PMC parameter data table contorol data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrcntldata")]        public static extern short pmc_wrcntldata(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPMCCNTL b);        /* read PMC parameter data table contorol data group number */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdcntlgrp")]        public static extern short pmc_rdcntlgrp(ushort FlibHndl, out short a);        /* write PMC parameter data table contorol data group number */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrcntlgrp")]        public static extern short pmc_wrcntlgrp(ushort FlibHndl, short a);        /* read PMC alarm message */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdalmmsg")]        public static extern short pmc_rdalmmsg(ushort FlibHndl,            short a, ref short b, out short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPMCALM d);        /* get detail error for pmc */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_getdtailerr")]        public static extern short pmc_getdtailerr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPMCERR a);        /* read PMC memory data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcmem")]        public static extern short pmc_rdpmcmem(ushort FlibHndl,            short a, int b, int c, [Out, MarshalAs(UnmanagedType.AsAny)] Object d);        /* write PMC memory data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrpmcmem")]        public static extern short pmc_wrpmcmem(ushort FlibHndl,            short a, int b, int c, [In, MarshalAs(UnmanagedType.AsAny)] Object d);        /* read PMC-SE memory data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcsemem")]        public static extern short pmc_rdpmcsemem(ushort FlibHndl,            short a, int b, int c, [Out, MarshalAs(UnmanagedType.AsAny)] Object d);        /* write PMC-SE memory data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrpmcsemem")]        public static extern short pmc_wrpmcsemem(ushort FlibHndl,            short a, int b, int c, [In, MarshalAs(UnmanagedType.AsAny)] Object d);        /* read pmc title data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmctitle")]        public static extern short pmc_rdpmctitle(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPMCTITLE a);        /* read PMC parameter start */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdprmstart")]        public static extern short pmc_rdprmstart(ushort FlibHndl);        /* read PMC parameter */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcparam")]        public static extern short pmc_rdpmcparam(ushort FlibHndl, ref int a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read PMC parameter end */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdprmend")]        public static extern short pmc_rdprmend(ushort FlibHndl);        /* write PMC parameter start */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrprmstart")]        public static extern short pmc_wrprmstart(ushort FlibHndl);        /* write PMC parameter */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrpmcparam")]        public static extern short pmc_wrpmcparam(ushort FlibHndl, ref int a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* write PMC parameter end */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wrprmend")]        public static extern short pmc_wrprmend(ushort FlibHndl);        /* read PMC data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcrng_ext")]        public static extern short pmc_rdpmcrng_ext(ushort FlibHndl,            short a, [In, Out, MarshalAs(UnmanagedType.LPStruct)] IODBPMCEXT b);        /* write PMC I/O link assigned data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_wriolinkdat")]        public static extern short pmc_wriolinkdat(ushort FlibHndl, uint a, [In, MarshalAs(UnmanagedType.AsAny)] Object b, uint c);        /* read PMC address information */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_rdpmcaddr")]        public static extern short pmc_rdpmcaddr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPMCADR a);        /* select PMC unit */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_select_pmc_unit")]        public static extern short pmc_select_pmc_unit(ushort FlibHndl, int a);        /* get current PMC unit */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_get_current_pmc_unit")]        public static extern short pmc_get_current_pmc_unit(ushort FlibHndl, ref int a);        /* get number of PMC */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_get_number_of_pmc")]        public static extern short pmc_get_number_of_pmc(ushort FlibHndl, ref int a);        /* get PMC unit types */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_get_pmc_unit_types")]        public static extern short pmc_get_pmc_unit_types(ushort FlibHndl, int[] a, ref int b);        /* set PMC Timer type */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_set_timer_type")]        public static extern short pmc_set_timer_type(ushort FlibHndl, ushort a, ushort b, ref short c);        /* get PMC Timer type */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_get_timer_type")]        public static extern short pmc_get_timer_type(ushort FlibHndl, ushort a, ushort b, ref short c);        /*----------------------------*/        /* PMC : PROFIBUS function    */        /*----------------------------*/        /* read PROFIBUS configration data */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdconfig")]        public static extern short pmc_prfrdconfig(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBPRFCNF a);        /* read bus parameter for master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdbusprm")]        public static extern short pmc_prfrdbusprm(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBBUSPRM a);        /* write bus parameter for master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrbusprm")]        public static extern short pmc_prfwrbusprm(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBBUSPRM a);        /* read slave parameter for master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdslvprm")]        public static extern short pmc_prfrdslvprm(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSLVPRM b);        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdslvprm")]        public static extern short pmc_prfrdslvprm(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSLVPRM2 b);        /* write slave parameter for master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrslvprm")]        public static extern short pmc_prfwrslvprm(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSLVPRM b);        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrslvprm")]        public static extern short pmc_prfwrslvprm(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSLVPRM2 b);        /* read allocation address for master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdallcadr")]        public static extern short pmc_prfrdallcadr(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBPRFADR b);        /* set allocation address for master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrallcadr")]        public static extern short pmc_prfwrallcadr(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBPRFADR b);        /* read allocation address for slave function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdslvaddr")]        public static extern short pmc_prfrdslvaddr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSLVADR a);        /* set allocation address for slave function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrslvaddr")]        public static extern short pmc_prfwrslvaddr(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSLVADR a);        /* read status for slave function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdslvstat")]        public static extern short pmc_prfrdslvstat(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBSLVST a);        /* Reads slave index data of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdslvid")]        public static extern short pmc_prfrdslvid(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSLVID b);        /* Writes slave index data of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrslvid")]        public static extern short pmc_prfwrslvid(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSLVID b);        /* Reads slave parameter of master function(2) */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdslvprm2")]        public static extern short pmc_prfrdslvprm2(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBSLVPRM3 b);        /* Writes slave parameter of master function(2) */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrslvprm2")]        public static extern short pmc_prfwrslvprm2(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBSLVPRM3 b);        /* Reads DI/DO parameter of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrddido")]        public static extern short pmc_prfrddido(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBDIDO b);        /* Writes DI/DO parameter of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrdido")]        public static extern short pmc_prfwrdido(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.LPStruct)] IODBDIDO b);        /* Reads indication address of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdindiadr")]        public static extern short pmc_prfrdindiadr(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBINDEADR a);        /* Writes indication address of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwrindiadr")]        public static extern short pmc_prfwrindiadr(ushort FlibHndl, [In, MarshalAs(UnmanagedType.LPStruct)] IODBINDEADR a);        /* Reads operation mode of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfrdopmode")]        public static extern short pmc_prfrdopmode(ushort FlibHndl, ref short a);        /* Writes operation mode of master function */        [DllImport("FWLIB32.dll", EntryPoint = "pmc_prfwropmode")]        public static extern short pmc_prfwropmode(ushort FlibHndl, short a, ref short b);        /*-----------------------------------------------*/        /* DS : Data server & Ethernet board function    */        /*-----------------------------------------------*/        /* read the parameter of the Ethernet board */        [DllImport("FWLIB32.dll", EntryPoint = "etb_rdparam")]        public static extern short etb_rdparam(ushort FlibHndl,            short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBETP_TCP b);        [DllImport("FWLIB32.dll", EntryPoint = "etb_rdparam")]        public static extern short etb_rdparam(ushort FlibHndl,            short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBETP_HOST b);        [DllImport("FWLIB32.dll", EntryPoint = "etb_rdparam")]        public static extern short etb_rdparam(ushort FlibHndl,            short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBETP_FTP b);        [DllImport("FWLIB32.dll", EntryPoint = "etb_rdparam")]        public static extern short etb_rdparam(ushort FlibHndl,            short a, [Out, MarshalAs(UnmanagedType.LPStruct)] IODBETP_ETB b);        /* write the parameter of the Ethernet board */        [DllImport("FWLIB32.dll", EntryPoint = "etb_wrparam")]        public static extern short etb_wrparam(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.LPStruct)] IODBETP_TCP a);        [DllImport("FWLIB32.dll", EntryPoint = "etb_wrparam")]        public static extern short etb_wrparam(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.LPStruct)] IODBETP_HOST a);        [DllImport("FWLIB32.dll", EntryPoint = "etb_wrparam")]        public static extern short etb_wrparam(ushort FlibHndl,            [In, MarshalAs(UnmanagedType.LPStruct)] IODBETP_FTP a);        /* read the error message of the Ethernet board */        [DllImport("FWLIB32.dll", EntryPoint = "etb_rderrmsg")]        public static extern short etb_rderrmsg(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBETMSG b);        /* read the mode of the Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdmode")]        public static extern short ds_rdmode(ushort FlibHndl, ref short a);        /* write the mode of the Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrmode")]        public static extern short ds_wrmode(ushort FlibHndl, short a);        /* read information of the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdhddinfo")]        public static extern short ds_rdhddinfo(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBHDDINF a);        /* read the file list of the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdhdddir")]        public static extern short ds_rdhdddir(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, int b, out short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBHDDDIR d);        /* delete the file of the Data Serve's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_delhddfile")]        public static extern short ds_delhddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* copy the file of the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_copyhddfile")]        public static extern short ds_copyhddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* change the file name of the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_renhddfile")]        public static extern short ds_renhddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* execute the PUT command of the FTP */        [DllImport("FWLIB32.dll", EntryPoint = "ds_puthddfile")]        public static extern short ds_puthddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* execute the MPUT command of the FTP */        [DllImport("FWLIB32.dll", EntryPoint = "ds_mputhddfile")]        public static extern short ds_mputhddfile(ushort hLib, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read information of the host */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdhostinfo")]        public static extern short ds_rdhostinfo(ushort FlibHndl, out int a, int b);        /* read the file list of the host */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdhostdir")]        public static extern short ds_rdhostdir(ushort FlibHndl, short a, int b, out short c, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBHOSTDIR d, int e);        /* read the file list of the host 2 */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdhostdir2")]        public static extern short ds_rdhostdir2(ushort FlibHndl, short a, int b, out short c, out int d, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBHOSTDIR e, int f);        /* delete the file of the host */        [DllImport("FWLIB32.dll", EntryPoint = "ds_delhostfile")]        public static extern short ds_delhostfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, int b);        /* execute the GET command of the FTP */        [DllImport("FWLIB32.dll", EntryPoint = "ds_gethostfile")]        public static extern short ds_gethostfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* execute the MGET command of the FTP */        [DllImport("FWLIB32.dll", EntryPoint = "ds_mgethostfile")]        public static extern short ds_mgethostfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read the execution result */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdresult")]        public static extern short ds_rdresult(ushort FlibHndl);        /* stop the execution of the command */        [DllImport("FWLIB32.dll", EntryPoint = "ds_cancel")]        public static extern short ds_cancel(ushort FlibHndl);        /* read the file from the Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdncfile")]        public static extern short ds_rdncfile(ushort FlibHndl, short a, [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* read the file from the Data Server 2 */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdncfile2")]        public static extern short ds_rdncfile2(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* write the file to the Data Server */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrncfile")]        public static extern short ds_wrncfile(ushort FlibHndl, short a, int b);        /* read the file name for the DNC operation in the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rddnchddfile")]        public static extern short ds_rddnchddfile(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* write the file name for the DNC operation in the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrdnchddfile")]        public static extern short ds_wrdnchddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read the file name for the DNC operation in the host */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rddnchostfile")]        public static extern short ds_rddnchostfile(ushort FlibHndl, out short a, [Out, MarshalAs(UnmanagedType.AsAny)] Object b);        /* write the file name for the DNC operation in the host */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrdnchostfile")]        public static extern short ds_wrdnchostfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read the connecting host number */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdhostno")]        public static extern short ds_rdhostno(ushort FlibHndl, out short a);        /* read maintenance information */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdmntinfo")]        public static extern short ds_rdmntinfo(ushort FlibHndl, short a, [Out, MarshalAs(UnmanagedType.LPStruct)] DSMNTINFO b);        /* check the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_checkhdd")]        public static extern short ds_checkhdd(ushort FlibHndl);        /* format the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_formathdd")]        public static extern short ds_formathdd(ushort FlibHndl);        /* create the directory in the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_makehdddir")]        public static extern short ds_makehdddir(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* delete directory in the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_delhdddir")]        public static extern short ds_delhdddir(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* change the current directory */        [DllImport("FWLIB32.dll", EntryPoint = "ds_chghdddir")]        public static extern short ds_chghdddir(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* execute the PUT command according to the list file */        [DllImport("FWLIB32.dll", EntryPoint = "ds_lputhddfile")]        public static extern short ds_lputhddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* delete files according to the list file */        [DllImport("FWLIB32.dll", EntryPoint = "ds_ldelhddfile")]        public static extern short ds_ldelhddfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* execute the GET command according to the list file */        [DllImport("FWLIB32.dll", EntryPoint = "ds_lgethostfile")]        public static extern short ds_lgethostfile(ushort FlibHndl, [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read the directory for M198 operation */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdm198hdddir")]        public static extern short ds_rdm198hdddir(ushort FlibHndl, [Out, MarshalAs(UnmanagedType.AsAny)] Object a);        /* write the directory for M198 operation */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrm198hdddir")]        public static extern short ds_wrm198hdddir(ushort FlibHndl);        /* read the connecting host number for the M198 operation */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdm198host")]        public static extern short ds_rdm198host(ushort FlibHndl, out short a);        /* write the connecting host number for the M198 operation */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrm198host")]        public static extern short ds_wrm198host(ushort FlibHndl);        /* write the connecting host number */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrhostno")]        public static extern short ds_wrhostno(ushort FlibHndl, short a);        /* search string in data server program */        [DllImport("FWLIB32.dll", EntryPoint = "ds_searchword")]        public static extern short ds_searchword(ushort FlibHndl,                                  [In, MarshalAs(UnmanagedType.AsAny)] Object a);        /* read the searching result */        [DllImport("FWLIB32.dll", EntryPoint = "ds_searchresult")]        public static extern short ds_searchresult(ushort FlibHndl);        /* read file in the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_rdfile")]        public static extern short ds_rdfile(ushort FlibHndl,                                         [In, MarshalAs(UnmanagedType.AsAny)] Object a,                                         [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /* write file in the Data Server's HDD */        [DllImport("FWLIB32.dll", EntryPoint = "ds_wrfile")]        public static extern short ds_wrfile(ushort FlibHndl,                                         [In, MarshalAs(UnmanagedType.AsAny)] Object a,                                         [In, MarshalAs(UnmanagedType.AsAny)] Object b);        /*--------------------------*/        /* HSSB multiple connection */        /*--------------------------*/        /* read number of node */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdnodenum")]        public static extern short cnc_rdnodenum(out int a);        /* read node informations */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdnodeinfo")]        public static extern short cnc_rdnodeinfo(int a, [Out, MarshalAs(UnmanagedType.LPStruct)] ODBNODE b);        /* set default node number */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_setdefnode")]        public static extern short cnc_setdefnode(int a);        /* allocate library handle 2 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_allclibhndl2")]        public static extern short cnc_allclibhndl2(int node, out ushort FlibHndl);        /*---------------------*/        /* Ethernet connection */        /*---------------------*/        /* allocate library handle 3 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_allclibhndl3")]        public static extern short cnc_allclibhndl3([In, MarshalAs(UnmanagedType.AsAny)] Object ip,            ushort port, int timeout, out ushort FlibHndl);        /* allocate library handle 4 */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_allclibhndl4")]        public static extern short cnc_allclibhndl4([In, MarshalAs(UnmanagedType.AsAny)] Object ip,            ushort port, int timeout, uint id, out ushort FlibHndl);        /* set timeout for socket */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_settimeout")]        public static extern short cnc_settimeout(ushort FlibHndl, int a);        /* reset all socket connection */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_resetconnect")]        public static extern short cnc_resetconnect(ushort FlibHndl);        /* get option state for FOCAS1/Ethernet */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_getfocas1opt")]        public static extern short cnc_getfocas1opt(ushort FlibHndl, short a, out int b);        /* read Ethernet board information */        [DllImport("FWLIB32.dll", EntryPoint = "cnc_rdetherinfo")]        public static extern short cnc_rdetherinfo(ushort FlibHndl, out short a, out short b);    } // End for Focas1 class}
 |