| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843 |
- /*--------------------------------------------------------------------------------------
- * @file ControlSystem.c
- * @author ZhangJing
- * @version base on stm32f0x
- * @date 2015.09.11
- * @brief 整个系统的控制动作及策略
- ---------------------------------------------------------------------------------------*/
- #include <string.h>
- #include "stm32f10x_gpio.h"
- #include "stm32f10x_tim.h"
- #include "stm32f10x_pwr.h"
- #include "TypeDefine.h"
- #include "Driver.h"
- #include "DrawLCDGUI.h"
- #include "ControlSystem.h"
- #include "ParameterSet.h"
- #include "SystemAlarm.h"
- #include "History.h"
- #include "ZigbeeDataHandle.h"
- #include "RTCSetup.h"
- #include "FM31256.h"
- #include "HostSlaveHandle.h"
- #include "FlashSetup.h"
- #include <stdio.h>
- #include "Bubble_ADCSetup.h"
- #include "delay.h"
- SysWorkStepType emSysWorkStep; //系统工作步骤
- SysInfusionModeType infusionMode; //输液模式
- uint8_t controlTimerCounts = 0;//控制时间计时次数
- uint32_t InfusionStopTimer = 0;//输液时间
- uint32_t InfusionXmitTimer = 0;//输注发送时间
- uint16_t lockTimeCountDown = 0;//锁时倒计时
- uint16_t G_Led_Time = 0xffff;//绿色指示灯点亮时间
- uint16_t Y_Led_Time = HALF_SECOND_TIMER;//黄色指示灯点亮时间
- SysWorkStepType emLockPasswordStep;//在进入锁定密码后保存将要进入的界面
- SysWorkStepType emLockPasswordFailStep;//在锁定密码失败后保存将要进入的界面
- SysWorkStepType emAlarmRecordStep;//报警时要将现在在哪页记录下来
- SysWorkStepType emAlarmRememberStep;//报警时记录报警界面
- uint16_t inputDose_bf=0; //已输入量备份
- uint8_t Input_End=0; //输液结束标志
- uint8_t start_flag=0; //运行按键启动标志,用于压力值得判断标志
- uint8_t Key_Quiet_Cont=0; //静音键次数
- uint8_t LimitBeginsTime = 0; //极限计时开始
- uint8_t LcdFlicker_Flag=0 ; //背景光闪烁标志
- uint8_t PCADontRun_Flag=0; //pca运行期间堵塞解除堵塞,pca为运行完标志
- uint8_t AppendComplete=0;//堵塞自检后追加量未运行完,返回到主运行界面不暂停
- extern uint16_t Quiet_Timedata; //静音键延时时间
- extern uint8_t Quiet_Timedata_flag; //静音键延时完成标志
- extern uint16_t PressureF1_bf[10]; //压力备份数据数组
- extern uint16_t PressureF1_bf2[10]; //压力备份数据数组
- extern uint8_t Pressurebf_Cont; //压力备份次数
- extern uint16_t average_Pressure_bf; //压力平均值
- extern uint8_t sysPromptToneType_bf; //报警状态备份
- uint8_t Sound_prepore_flag=0; //预报警标志
- extern uint16_t self_adaption_Pressure; //自适应压力值
- extern uint8_t BlockageRecovery; //堵塞自检恢复标志
- extern uint8_t self_adaption_cont; //自适应压力值缓冲区储存次数
- extern uint8_t self_adaption_flag; //自适应压力参数处理完成标志,用于后面压力报警判断
- extern uint8_t Alarm_flag; //报警标志
- extern uint8_t ElectSmallCount; //计算小于电流基准值150的次数 未装药盒报警检测次数
- extern uint8_t ElectLargeCount; //计算大于电流基准值150的次数 堵塞报警检测次数
- uint8_t pca_count=0; //一小时内pca按压次数
- uint8_t sysPromptToneTypebf=0; //声音类型备份值
- uint8_t TotalDoesChange0 = 0;//工程模式输注总量变化1变0
- uint8_t TotalDoesChange1 = 0;//工程模式输注总量变化0变1
- //uint8_t TestSwitch = 0; //工程模式中测试开关打开其他数据不在发送
- uint8_t Start_send = 1; //开始发送标志
- uint8_t ran = 0; //只要运行按键开启置1,在暂停中判断上次是否为1,防止暂停按键按压后实际运行的参数并没有变化这种现象发生
- uint8_t SetParametersAgain = 0; //运行过程中重新设置参数标志
- uint8_t InpudingComplete = 0; //输注结束完成标志
- uint8_t FackreadIndex = 1; //假读索引
- uint8_t KEY_Enter_action = 0; //Enter按键动作,只有在短按松开的情况下才有用
- uint8_t TurnOffACKTone = 0; //修改设置完住院号进入参数设置界面蜂鸣器长鸣问题
- uint8_t LCDBlackFlashCount = 0;
- //uint8_t FlashCount1 = 0;
- extern int fputc(int ch, FILE *f);
- int fputc(int ch, FILE *f)
- {
- USART_SendData(USART1, (unsigned char) ch);// USART1 可以换成 USART2 等
- while (!(USART1->SR & USART_FLAG_TXE));
- return (ch);
- }
-
- /*************************************************************************************
- * Function: CntlSysInitWork
- * Object: 控制系统初始化工作
- * 输入: 无
- * 输出: 无
- * 备注: 系统初始化3s后进入稳定工作状态
- **************************************************************************************/
- void CntlSysInitWork( void )
- {
- //进入开机状态
- if( emSysWorkStep == EnterStartup )
- {
-
- if( TaskSchedulerFlag.initFinishFlag == TASK_FLAG_SET )
- {
- TaskSchedulerFlag.initFinishFlag = TASK_FLAG_CLEAR;
-
- TaskSchedulerFlag.zigbeeComReadFlag = TASK_FLAG_SET;
- }
- }
- }
- /*************************************************************************************
- * Function: CntlMotorWork
- * Object: 控制电机工作
- * 输入: uint16_t pwmSetValue
- * 输出: 无
- * 备注: pwmSetValue 0:停止工作 其它值:开启电机
- **************************************************************************************/
- void CntlMotorWork( uint16_t pwmSetValue )
- {
- if( pwmSetValue == 0 )
- {
- /* 关闭电机 */
- GPIO_SetBits(GPIOB,GPIO_Pin_13);
- GPIO_ResetBits(GPIOA,GPIO_Pin_8); //机械报警,关闭电机电源
- }
- else
- {
- /* 开电机 */
- GPIO_ResetBits(GPIOB,GPIO_Pin_13);
- GPIO_SetBits(GPIOA,GPIO_Pin_8); //机械报警,关闭电机电源
- }
- }
- /*************************************************************************************
- * Function: CntlSpeakerWork
- * Object: 控制蜂鸣器工作
- * 输入: 无
- * 输出: 无
- * 备注: 1、蜂鸣器的工作状态通过sysPromptToneType变量来选择
- * 2、通过EngineeringModeValue.silenceState来判断在工程模式中是否静音
- * 3、通过TaskSchedulerFlag.silenceFlag来判断是否手动静音
- **************************************************************************************/
- void CntlSpeakerWork( void )
- {
- if( EngineeringModeValue.silenceState == ENGINEERINGMODE_OFF )//工程模式静音模式关
- {
- switch( sysPromptToneType )
- {
- case SoundOff:
- SpeakerCtl( DRIVER_OFF );
- break;
- case StartupTone://进入开机画面,蜂鸣器要响一声
- {
- SpeakerCtl( DRIVER_ON );
- if( speakerWorkStep == emSpeakerNoneWork )
- {
- TaskSchedulerTimer.speakerTimer = ONE_MSEC_TIMER;//蜂鸣器计时 1000ms
- speakerWorkStep = emSpeakerWorkStep1;
- }
- else if( speakerWorkStep == emSpeakerWorkDone )
- {
- sysPromptToneType = SoundOff;
- speakerWorkStep = emSpeakerNoneWork;
- }
- }
- break;
- case KeypadShortTone://短按声
- case KeypadLongTone://长按声
- {
- SpeakerCtl( DRIVER_ON );
- if( speakerWorkStep == emSpeakerNoneWork )
- {
- TaskSchedulerTimer.speakerTimer = 50;//蜂鸣器计时 50ms
- speakerWorkStep = emSpeakerWorkStep1;
- }
- else if( speakerWorkStep == emSpeakerWorkDone )
- {
- // if((sysPromptToneTypebf == Sound_prepore) || (sysPromptToneTypebf == WarringTone) || (sysPromptToneTypebf == InfusionTone))//按键声音处理完,判断之前声音的状态,是报警就回复,否则,关闭
- // {
- // sysPromptToneType=sysPromptToneTypebf;
- // SpeakerCtl( DRIVER_OFF );
- // }
- // else
- {
- sysPromptToneType = SoundOff;
- }
- speakerWorkStep = emSpeakerNoneWork;
- }
- }
- break;
- case VerificationTone://确认声
- {
- SpeakerCtl( DRIVER_ON );
- if( speakerWorkStep == emSpeakerNoneWork )
- {
- TaskSchedulerTimer.speakerTimer = TWO_MSEC_TIMER;//蜂鸣器计时 200ms
- speakerWorkStep = emSpeakerWorkStep1;
- }
- else if( speakerWorkStep == emSpeakerWorkDone )
- {
- sysPromptToneType = SoundOff;
- speakerWorkStep = emSpeakerNoneWork;
- }
- }
- break;
- /*case Sound_prepore://电池预报警
- {
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- speakerWorkStep = emSpeakerNoneWork;
- sysPromptToneTypebf=sysPromptToneType;//备份声音状态,在静音回复的时候进行回复
- sysPromptToneType = SoundOff;
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- switch( speakerWorkStep )
- {
- case emSpeakerNoneWork:
- SpeakerCtl( DRIVER_ON );
- TaskSchedulerTimer.speakerTimer = TWO_MSEC_TIMER;//蜂鸣器计时 200ms
- speakerWorkStep = emSpeakerWorkStart;
- break;
- case emSpeakerWorkStep1:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep2:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep3:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep4:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep5:
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerWorkDone;
- sysPromptToneType = SoundOff;
- break;
- default:break;
- }
- if( speakerWorkStep == emSpeakerWorkDone )
- {
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerNoneWork;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- //TaskSchedulerTimer.speakerWaitTimer = TEN_SECOND_TIMER;//10S间隔时间 为下次进入蜂鸣器计时做准备
-
-
- if( sysPromptToneCounts == 255 )//在PCA错误时只发出一次响声
- {
- sysPromptToneCounts = 0;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- sysPromptToneType = SoundOff;
- }
- }
- break;
- case WarringTone://报警声
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- speakerWorkStep = emSpeakerNoneWork;
- sysPromptToneTypebf=sysPromptToneType;//备份声音状态,在静音回复的时候进行回复
- sysPromptToneType = SoundOff;
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- switch( speakerWorkStep )
- {
- case emSpeakerNoneWork:
- SpeakerCtl( DRIVER_ON );
- TaskSchedulerTimer.speakerTimer = TWO_MSEC_TIMER;//蜂鸣器计时 200ms
- speakerWorkStep = emSpeakerWorkStart;
- break;
- case emSpeakerWorkStep1:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep2:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep3:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep4:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep5:
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerWorkDone;
- sysPromptToneType = WarringTone;
- break;
- default:break;
- }
- if( speakerWorkStep == emSpeakerWorkDone )
- {
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerNoneWork;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.speakerWaitTimer = TEN_SECOND_TIMER;//10S间隔时间 为下次进入蜂鸣器计时做准备
-
-
- if( sysPromptToneCounts == 255 )//在PCA错误时只发出一次响声
- {
- sysPromptToneCounts = 0;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- sysPromptToneType = SoundOff;
- }
- break;
- case InfusionTone://输注完毕声
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,屏不闪
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- speakerWorkStep = emSpeakerNoneWork;
- sysPromptToneTypebf=sysPromptToneType;//备份声音状态,在静音回复的时候进行回复
- sysPromptToneType = SoundOff;
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- switch( speakerWorkStep )
- {
- case emSpeakerNoneWork:
- SpeakerCtl( DRIVER_ON );
- TaskSchedulerTimer.speakerTimer = TWO_MSEC_TIMER;//蜂鸣器计时 125ms
- speakerWorkStep = emSpeakerWorkStart;
- break;
- case emSpeakerWorkStep1:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep2:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep3:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep4:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep5:
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerWorkDone;
- sysPromptToneType = InfusionTone;
- break;
- default:break;
- }
- if( speakerWorkStep == emSpeakerWorkDone )
- {
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerNoneWork;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.speakerWaitTimer = TEN_SECOND_TIMER;//10S间隔时间 为下次进入蜂鸣器计时做准备
- }
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- sysPromptToneType = SoundOff;
- }
- break;
- case RemindeTone:
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,屏不闪
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- speakerWorkStep = emSpeakerNoneWork;
- sysPromptToneType = SoundOff;
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- switch( speakerWorkStep )
- {
- case emSpeakerNoneWork:
- SpeakerCtl( DRIVER_ON );
- TaskSchedulerTimer.speakerTimer = TWO_MSEC_TIMER;//蜂鸣器计时 200ms
- speakerWorkStep = emSpeakerWorkStart;
- break;
- case emSpeakerWorkStep1:
- SpeakerCtl( DRIVER_OFF );
- break;
- case emSpeakerWorkStep2:
- SpeakerCtl( DRIVER_ON );
- break;
- case emSpeakerWorkStep3:
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerWorkDone;
- sysPromptToneType = SoundOff;
- break;
- default:break;
- }
- if( speakerWorkStep == emSpeakerWorkDone )
- {
- speakerWorkStep = emSpeakerNoneWork;
- }
- }
- case SoundWait:
- break;*/
-
- default:break;
- }
- }
- else
- {
- // if(sysAlarmFlag.VoltLowest == ALARM_PREPARE)
- // {
- // Sound_prepore_flag = 2;
- // }
- SpeakerCtl( DRIVER_OFF );
- speakerWorkStep = emSpeakerNoneWork;
- }
- }
- /*************************************************************************************
- * Function: CntlHornWork
- * Object: 控制喇叭工作
- * 输入: 无
- * 输出: 无
- * 备注: 1、
- **************************************************************************************/
- void CntlHornWork( void )
- {
- if((EngineeringModeValue.silenceState == ENGINEERINGMODE_OFF)&&(SysHornToneType != SoundWate))
- {
- CntOpenHornInit();//报警前打开功放管脚的初始化
- }
- if(( EngineeringModeValue.silenceState == ENGINEERINGMODE_OFF)&&(TaskSchedulerFlag.AlarmInitFlag == TASK_FLAG_SET))//工程模式静音模式关且喇叭初始化完成
- {
- switch( SysHornToneType )
- {
- case SoundOff:
- HornWorkStatus(HornOFF);
- SysHornToneType = SoundWate;
- break;
- case Sound_prepore://电池预报警
- {
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- HornWorkStatus(HornOFF);
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- HornWorkStatus(HornAlarmSound);
- // SysHornToneType = SoundOff;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.speakerWaitTimer = ONE_SECOND_TIMER;
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- HornWorkStatus(HornOFF);
- }
- }
- break;
- case WarringTone://报警声
- case InfusionTone://输注完毕声
- {
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- HornWorkStatus(HornOFF);
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- HornWorkStatus(HornAlarmSound);
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.speakerWaitTimer = TEN_SECOND_TIMER;//预报警不需要这句
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- HornWorkStatus(HornOFF);
- }
- }
- break;
- case RemindeTone://遗忘报警提示音
- {
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- HornWorkStatus(HornOFF);
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- HornWorkStatus(HornWarningTone);
- // SysHornToneType = SoundOff;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.speakerWaitTimer = ONE_SECOND_TIMER;
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- HornWorkStatus(HornOFF);
- }
- }
- break;
- case LowPriWarning://低优先级两声报警
- {
- if( TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET )//静音标志,静音后蜂鸣器不响,
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//静音开启,关闭喇叭标志
- HornWorkStatus(HornOFF);
- break;
- }
- if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_SET )
- {
- HornWorkStatus(HornLowPriWarning);
- // SysHornToneType = SoundOff;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.speakerWaitTimer = ONE_SECOND_TIMER;
- }
- else if( TaskSchedulerFlag.speakerFlag == TASK_FLAG_CLEAR )
- {
- HornWorkStatus(HornOFF);
- }
- }
- break;
- default:break;
- }
- }
- else
- {
- HornWorkStatus(HornOFF);
- }
- }
- /*************************************************************************************
- * Function: HornWarningTone
- * Object: horn器工作状态
- * 输入: 无
- * 输出: 无
- * 备注: 1
- **************************************************************************************/
- void HornWorkStatus(uint8_t status)
- {
- if(status == HornOFF )
- {
- CntAlarmSpeaker(0xFE);//喇叭静音
- }
- else if(status == HornWarningTone )
- {
- CntAlarmSpeaker(0x01);//喇叭单声提示音
- }
- else if(status == HornAlarmSound)
- {
- CntAlarmSpeaker(0x08);//喇叭报警音。中优先级报警
- }
- else if(status == HornMaxSound)
- {
- CntAlarmSpeaker(0xEF);//喇叭最大音量
- }
- else if(status == HornLowPriWarning)
- {
- CntAlarmSpeaker(0x04);//低优先级报警
- }
- }
- /*************************************************************************************
- * Function: CntlSensorPWWork
- * Object: 控制传感器电源工作
- * 输入: 无
- * 输出: 无
- * 备注: 通过此函数可控制传感器的电源通断,以达到节能的目的
- * 重要变量 TaskSchedulerFlag.sensorPWHallFlag
- * TaskSchedulerFlag.sensorPWPressureFlag
- * TaskSchedulerFlag.sensorPWBatteryFlag
- **************************************************************************************/
- void CntlSensorPWWork( void )
- {
- // if( ( TaskSchedulerFlag.sensorPWHallFlag == TASK_FLAG_SET )
- // || ( TaskSchedulerFlag.sensorPWPressureFlag == TASK_FLAG_SET )
- // || ( TaskSchedulerFlag.sensorPWBatteryFlag == TASK_FLAG_SET ) )//主芯片低功耗配置
- if( ( TaskSchedulerFlag.sensorPWHallFlag == TASK_FLAG_SET )
- || ( TaskSchedulerFlag.sensorPWPressureFlag == TASK_FLAG_SET ))
- {
- SensorPWRCtl( DRIVER_ON );//Sensor电源
- }
- else
- {
- SensorPWRCtl( DRIVER_OFF );//Sensor电源
- }
- }
- /*************************************************************************************
- * Function: CntlLCDBlackWork
- * Object: 控制LCD背光工作
- * 输入: 无
- * 输出: 无
- * 备注: 背光有完全关闭和闪烁的情况,通过本函数控制
- * 1、TaskSchedulerFlag.lcdBlackFlashFlag判断背光是否闪烁
- * 2、在非闪烁的情况下,判断TaskSchedulerFlag.lcdBlackFlag是否关闭背光
- **************************************************************************************/
- void CntlLCDBlackWork( void )
- {
-
-
- if( TaskSchedulerFlag.lcdBlackFlashFlag == TASK_FLAG_SET )//背光闪烁
- {
-
- if(LcdFlicker_Flag == TASK_FLAG_SET)
- {
- Y_LED_ON;//黄色LED亮
- R_LED_OFF;
- G_LED_OFF;
- /*if( ( sysAlarmFlag.MechanicalFault == ALARM_ON ) || ( sysAlarmFlag.MechanicalFault == ALARM_CONTINUE ) )
- {
- R_LED_OFF;//机械故障,红色led亮
- Y_LED_ON;
- G_LED_OFF;
- }
- else
- {
- Y_LED_ON;//黄色LED亮
- R_LED_OFF;
- G_LED_OFF;
- }*/
- }
- else if( LcdFlicker_Flag == TASK_FLAG_CLEAR)
- {
-
- Y_LED_OFF;//黄色LED亮
- R_LED_OFF
- G_LED_OFF;
- }
-
- }
- if(( realTimeData.stateRun == Poweroff ) || ( realTimeData.stateRun == Pause )) //收到关机信号,所有指示灯关闭
- {
- if(sysAlarmFlag.VoltLowest != ALARM_PREPARE) //电池预报警的时候,不关闭报警灯
- {
- Y_LED_OFF;//黄色LED亮
- }
- R_LED_OFF
- G_LED_OFF;
- }
- //if( TaskSchedulerFlag.lcdBlackFlashFlag == TASK_FLAG_CLEAR )
- {
- if( TaskSchedulerFlag.lcdBlackFlag == TASK_FLAG_SET )
- {
- LCDBLACtl( DRIVER_ON );//LCD背光
- }
- else if( TaskSchedulerFlag.lcdBlackFlag == TASK_FLAG_CLEAR )
- {
- LCDBLACtl( DRIVER_OFF );//LCD背光
- }
- }
- }
- /****************************************************************************************
- * Function: ScanKeyWorkType
- * Object: 扫描按键的工作类型,包括长按、短按,消抖操作
- * 输入: 无
- * 输出: 无
- * 备注: 1、主要涉及变量KeyScanStatus,用来判断是哪个按键正在工作
- * 2、总共有8个按键,分别有长按短按两种操作
- * 3、KEY_QTY_LONGPRESS长按数值,KEY_QTY_SHORTEST短按数值
- ******************************************************************************************/
- void ScanKeyWorkType( void )
- {
- switch( KeyScanStatus.keyEnter )//enter键
- {
- case emKeyActionOff:
- KeyActionFlag.keyEnter = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( KeyScanQty.keyEnter >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyEnter = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyEnter >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyEnter = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyEnter = emKeyflagNonePress;
- }
- KeyScanQty.keyEnter = 0;//清除按键计数
- KeyScanStatus.keyEnter = emKeyActionOff;//按键操作结束
- KEY_Enter_action = 1;
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyEnter++;
- if( KeyScanQty.keyEnter == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- if( KeyScanQty.keyEnter >= KEY_QTY_LONGPRESS )
- {
- KeyActionFlag.keyEnter = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyEnter >= KEY_QTY_NORMAL )
- {
- // KeyActionFlag.keyEnter = emKeyflagShortPress;
- // MoreKeyActionFlag.keyEnter = emKeyflagShortPress;
- KEY_Enter_action = 0;//Enter按键作为快速按键使用时,短按与长按之间的时间长引起的参数跳转问题
- }
- if( KeyScanQty.keyEnter == 255 )
- {
- KeyScanQty.keyEnter = KEY_QTY_LONGPRESS;
- }
- KeyScanStatus.keyEnter = emKeyActionWait;//按键操作结束
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
-
- // if( KeyScanQty.keyEnter >= KEY_QTY_LONGPRESS )
- // {
- // KeyScanStatus.keyEnter = emKeyActionOn;//按键为长按,操作结束
- // }
- // else
- // {
- // KeyScanStatus.keyEnter = emKeyActionWait;//按键操作结束
- // }
- // TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- // TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
-
- switch( KeyScanStatus.keyPower )//power键
- {
- case emKeyActionOff:
- KeyActionFlag.keyPower = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( KeyScanQty.keyPower >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyPower = emKeyflagLongPress;
- }
-
- /* 方晨峰 修改于 20170711 */
- //else if( ( KeyScanQty.keyPower >= KEY_QTY_SHORTEST ) && ( KeyScanQty.keyPower <= KEY_QTY_SHORT ) )//短按
- //else if( KeyScanQty.keyPower >= KEY_QTY_SHORTEST )//短按
- else if( KeyScanQty.keyPower >= KEY_QTY_SHORTEST )
- {
- KeyActionFlag.keyPower = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyPower = emKeyflagNonePress;
- }
- KeyScanQty.keyPower = 0;//清除按键计数
- KeyScanStatus.keyPower = emKeyActionOff;//按键操作结束
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyPower++;
- if( KeyScanQty.keyPower == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- if( KeyScanQty.keyPower >= KEY_QTY_LONGPRESS )
- {
- KeyScanStatus.keyPower = emKeyActionOn;//按键为长按,操作结束
- }
- else
- {
- KeyScanStatus.keyPower = emKeyActionWait;//按键操作结束
- }
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
- switch( KeyScanStatus.keyRunPause )//RunPause键
- {
- case emKeyActionOff:
- KeyActionFlag.keyRunPause = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( KeyScanQty.keyRunPause >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyRunPause = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyRunPause >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyRunPause = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyRunPause = emKeyflagNonePress;
- }
- KeyScanQty.keyRunPause = 0;//清除按键计数
- KeyScanStatus.keyRunPause = emKeyActionOff;//按键操作结束
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyRunPause++;
- if( KeyScanQty.keyRunPause == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- if( KeyScanQty.keyRunPause >= KEY_QTY_LONGPRESS )
- {
- KeyScanStatus.keyRunPause = emKeyActionOn;//按键为长按,操作结束
- }
- else
- {
- KeyScanStatus.keyRunPause = emKeyActionWait;//按键操作结束
- }
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
- switch( KeyScanStatus.keyPS )//PS键
- {
- case emKeyActionOff:
- KeyActionFlag.keyPS = emKeyflagNonePress;
-
- break;
- case emKeyActionOn:
- if(( GPIO_ReadInputDataBit( KEY_GPIO_PORT,PS_GPIO_PIN ) != 0) && ( speakerWorkStep == emSpeakerNoneWork )) //按键弹起之后,再做判断
- {
- if( KeyScanQty.keyPS >= KEY_QTY_LONGPRESS )//长按
- {
- //KeyActionFlag.keyPS = emKeyflagLongPress;
- KeyActionFlag.keyPS = emKeyflagShortPress;
- }
- else if( KeyScanQty.keyPS >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyPS = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyPS = emKeyflagNonePress;
- }
- KeyScanQty.keyPS = 0;//清除按键计数
- KeyScanStatus.keyPS = emKeyActionOff;//按键操作结束
- }
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyPS++;
- if( KeyActionFlag.keyPS == emKeyflagLongRelease )//如果在程序中用过此按键长按功能,则按键需要被释放即使按键没有抬起也不会影响一下操作
- {
- KeyScanQty.keyPS = 0;//清除按键计数
- KeyScanStatus.keyPS = emKeyActionOff;//按键操作结束
- }
- else
- {
- if( KeyScanQty.keyPS == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- else if( KeyScanQty.keyPS >= KEY_QTY_LONGPRESS )
- {
- KeyActionFlag.keyPS = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyPS >= KEY_QTY_NORMAL )
- {
- // KeyActionFlag.keyPS = emKeyflagShortPress;
- }
- if( KeyScanQty.keyPS == 255 )
- {
- KeyScanQty.keyPS = KEY_QTY_LONGPRESS;
- }
- KeyScanStatus.keyPS = emKeyActionWait;//按键操作结束
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- }
- break;
- /*if( KeyScanQty.keyPS == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- //if( sysPromptToneType == SoundOff )
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- {
- sysPromptToneTypebf=sysPromptToneType;
- }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- if( KeyScanQty.keyPS >= KEY_QTY_LONGPRESS )
- {
- KeyScanStatus.keyPS = emKeyActionOn;//按键为长按,操作结束
- }
- else
- {
- KeyScanStatus.keyPS = emKeyActionWait;//按键操作结束
- }
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- break;*/
- /*KeyScanQty.keyPS++;
- if( KeyScanQty.keyPS == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- if( sysPromptToneType == SoundOff )
- {
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- if( KeyScanQty.keyPS >= KEY_QTY_LONGPRESS )
- {
- KeyScanStatus.keyPS = emKeyActionOn;//按键为长按,操作结束
- }
- else
- {
- KeyScanStatus.keyPS = emKeyActionWait;//按键操作结束
- }
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- break;*/
- case emKeyActionWait:
-
- break;
- default:break;
- }
- switch( KeyScanStatus.keyPCA )//PCA键
- {
- case emKeyActionOff:
- KeyActionFlag.keyPCA = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( GPIO_ReadInputDataBit( KEY_GPIO_PORT,PAC_GPIO_PIN ) != 0 )
- {
- if( KeyScanQty.keyPCA >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyPCA = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyPCA >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyPCA = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyPCA = emKeyflagNonePress;
- }
- KeyScanQty.keyPCA = 0;//清除按键计数
- KeyScanStatus.keyPCA = emKeyActionOff;//按键操作结束
- }
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyPCA++;
- if( KeyScanQty.keyPCA == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone) )
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- if( TaskSchedulerFlag.pcaLockFlag != TASK_FLAG_SET )
- {
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- else if((TaskSchedulerFlag.pcaLockFlag == TASK_FLAG_SET)&&((TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET)||(realTimeData.stateRun == Pause)))
- {
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- }
- if( KeyScanQty.keyPCA >= KEY_QTY_LONGPRESS )
- {
- KeyScanStatus.keyPCA = emKeyActionOn;//按键为长按,操作结束
- }
- else
- {
- KeyScanStatus.keyPCA = emKeyActionWait;//按键操作结束
- }
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
- switch( KeyScanStatus.keyPlus )//Plus键
- {
- case emKeyActionOff:
- KeyActionFlag.keyPlus = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( KeyScanQty.keyPlus >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyPlus = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyPlus >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyPlus = emKeyflagShortPress;
- MoreKeyActionFlag.keyPlus = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyPlus = emKeyflagNonePress;
- }
- KeyScanQty.keyPlus = 0;//清除按键计数
- KeyScanStatus.keyPlus = emKeyActionOff;//按键操作结束
- break;
- case emKyeActionScanSet:
- // KeyScanQty.keyPlus++;
- if( KeyActionFlag.keyPlus == emKeyflagLongRelease )//如果在程序中用过此按键长按功能,则按键需要被释放即使按键没有抬起也不会影响一下操作
- {
- KeyScanQty.keyPlus = 0;//清除按键计数
- KeyScanStatus.keyPlus = emKeyActionOff;//按键操作结束
- }
- else
- {
- if( KeyScanQty.keyPlus == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- else if( KeyScanQty.keyPlus >= KEY_QTY_LONGPRESS )
- {
- KeyActionFlag.keyPlus = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyPlus >= KEY_QTY_NORMAL )
- {
- KeyActionFlag.keyPlus = emKeyflagShortPress;
- MoreKeyActionFlag.keyPlus = emKeyflagShortPress;
- }
- if( KeyScanQty.keyPlus == 255 )
- {
- KeyScanQty.keyPlus = KEY_QTY_LONGPRESS;
- }
- KeyScanStatus.keyPlus = emKeyActionWait;//按键操作结束
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- }
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
-
- switch( KeyScanStatus.keyMinus )//Minus键
- {
- case emKeyActionOff:
- KeyActionFlag.keyMinus = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( KeyScanQty.keyMinus >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyMinus = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyMinus >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyMinus = emKeyflagShortPress;
- MoreKeyActionFlag.keyMinus = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyMinus = emKeyflagNonePress;
- }
- KeyScanQty.keyMinus = 0;//清除按键计数
- KeyScanStatus.keyMinus = emKeyActionOff;//按键操作结束
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyMinus++;
- if( KeyActionFlag.keyMinus == emKeyflagLongRelease )//如果在程序中用过此按键长按功能,则按键需要被释放即使按键没有抬起也不会影响一下操作
- {
- KeyScanQty.keyMinus = 0;//清除按键计数
- KeyScanStatus.keyMinus = emKeyActionOff;//按键操作结束
- }
- else
- {
- if( KeyScanQty.keyMinus == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- else if( KeyScanQty.keyMinus >= KEY_QTY_LONGPRESS )
- {
- KeyActionFlag.keyMinus = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyMinus >= KEY_QTY_NORMAL )
- {
- KeyActionFlag.keyMinus = emKeyflagShortPress;
- MoreKeyActionFlag.keyMinus = emKeyflagShortPress;
- }
- if( KeyScanQty.keyMinus == 255 )
- {
- KeyScanQty.keyMinus = KEY_QTY_LONGPRESS;
- }
- KeyScanStatus.keyMinus = emKeyActionWait;//按键操作结束
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- }
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
-
- switch( KeyScanStatus.keyAirout )//Airout键
- {
- case emKeyActionOff:
- KeyActionFlag.keyAirout = emKeyflagNonePress;
- break;
- case emKeyActionOn:
- if( KeyScanQty.keyAirout >= KEY_QTY_LONGPRESS )//长按
- {
- KeyActionFlag.keyAirout = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyAirout >= KEY_QTY_SHORTEST )//短按
- {
- KeyActionFlag.keyAirout = emKeyflagShortPress;
- }
- else//其它情况表明无按键操作,这样能达到真正消抖的目的
- {
- KeyActionFlag.keyAirout = emKeyflagNonePress;
- }
- KeyScanQty.keyAirout = 0;//清除按键计数
- KeyScanStatus.keyAirout = emKeyActionOff;//按键操作结束
- break;
- case emKyeActionScanSet:
- KeyScanQty.keyAirout++;
- if( KeyActionFlag.keyAirout == emKeyflagLongRelease )//如果在程序中用过此按键长按功能,则按键需要被释放即使按键没有抬起也不会影响一下操作
- {
- KeyScanQty.keyAirout = 0;//清除按键计数
- KeyScanStatus.keyAirout = emKeyActionOff;//按键操作结束
- }
- else
- {
- if( KeyScanQty.keyAirout == 1 )//只要按键消抖成功就算有操作,要有声音或LCD背光亮等动作
- {
- // if( sysPromptToneType == SoundOff )
- // {
- if(( speakerWorkStep == emSpeakerNoneWork )||( speakerWorkStep == emSpeakerWorkDone ))
- {
- // if((sysPromptToneType == Sound_prepore) || (sysPromptToneType == WarringTone) || (sysPromptToneType == InfusionTone))
- // {
- // sysPromptToneTypebf=sysPromptToneType;
- // }
- sysPromptToneType = KeypadShortTone;//长按短按全都按短按音提示
- }
- }
- else if( KeyScanQty.keyAirout >= KEY_QTY_LONGPRESS )
- {
- KeyActionFlag.keyAirout = emKeyflagLongPress;
- }
- else if( KeyScanQty.keyAirout >= KEY_QTY_NORMAL )
- {
- // KeyActionFlag.keyAirout = emKeyflagShortPress;
- }
- if( KeyScanQty.keyAirout == 255 )
- {
- KeyScanQty.keyAirout = KEY_QTY_LONGPRESS;
- }
- KeyScanStatus.keyAirout = emKeyActionWait;//按键操作结束
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;//有按键按下则清除LCD背光关闭标志
- TaskSchedulerTimer.lcdBlackCloseTimer = FIFTEEN_SECOND_TIMER;
- }
- break;
- case emKeyActionWait:
-
- break;
- default:break;
- }
- //增加静音按键处理
- if( KeyActionFlag.keyPS == emKeyflagLongPress )//返回/静音键
- // if(( KeyActionFlag.keyAirout == emKeyflagLongPress ) && (GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_9) != 0))//排气/静音键
- {
- KeyActionFlag.keyPS = emKeyflagNonePress;
- {
- if((emSysWorkStep !=EnterSetParam)&&(emSysWorkStep !=EnterAirout) )
- {
- if(TaskSchedulerFlag.silenceFlag == TASK_FLAG_CLEAR)
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- TaskSchedulerFlag.silenceFlag = TASK_FLAG_SET;//静音标志
- DrawSilenceDisplay();//静音
- KeyScanStatus.keyPS = emKeyActionOff;
- KeyScanQty.keyPS = 0;
- }
- else if(TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET)
- {
- TaskSchedulerFlag.silenceFlag = TASK_FLAG_CLEAR;//静音标志
- DrawSilenceDisplay();//静音
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- speakerWorkStep = emSpeakerNoneWork;
- //sysPromptToneType=WarringTone;//静音回复后,之前的状态回复
- if(emSysWorkStep == EnterLockPassword)
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- }
- else
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- }
- // if( realTimeData.stateRun == Alarm ) //在报警状态,回复
- // {
- // sysPromptToneType=sysPromptToneTypebf; //静音回复后,之前的状态回复
- // }
- // else if( emSysWorkStep == EnterTransfuseOver )
- // {
- // sysPromptToneType = InfusionTone;
- // }
- // else //否则不回复
- // {
- // sysPromptToneType=SoundOff;
- // }
- KeyScanStatus.keyPS = emKeyActionOff;
- KeyScanQty.keyPS = 0;
- }
- }
- }
- }
- if((emSysWorkStep ==EnterRunFirstDose)||(emSysWorkStep ==EnterRunMain)||(emSysWorkStep ==EnterTransfuseOver) )
- {
- if( KeyActionFlag.keyAirout == emKeyflagLongPress )//呼叫/排气按键
- {
- KeyActionFlag.keyAirout = emKeyflagNonePress;
- if( TaskSchedulerFlag.callFunctionFlag == TASK_FLAG_CLEAR )
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_SET;
- DrawPhoneDisplay();//呼叫
- }
- else
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_CLEAR;
- DrawPhoneDisplay();//呼叫
- }
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- // DrawPhoneDisplay();//呼叫
- // DrawLockDisplay();
- // DrawPauseDisplay();
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;//清锁屏标志
- KeyScanStatus.keyAirout = emKeyActionOff;
- KeyScanQty.keyAirout = 0;
- }
- }
- }
- /*************************************************************************************
- * Function: CntlPowerOFFWork
- * Object: 控制关机供电
- * 输入: 无
- * 输出: 无
- * 备注: 1、通过TaskSchedulerFlag.sysPowerOffFlag变量来判定关机步骤
- * 2、关机前需要延时10S,向PC机发送关机状态
- ********************************************** ****************************************/
- void CntlPowerOFFWork( void )
- {
- MotorPWRCtl( DRIVER_OFF );
- SpeakerCtl( DRIVER_OFF );//蜂鸣器
- SensorPWRCtl( DRIVER_OFF );//Sensor电源
- LCDBLACtl( DRIVER_OFF );//LCD背光
- HornWorkStatus(HornOFF);//喇叭关闭
- if(sysAlarmFlag.VoltLowest == ALARM_PREPARE)
- {
- sysAlarmFlag.VoltLowest = ALARM_OFF;
- LcdFlicker_Flag = TASK_FLAG_CLEAR;
- }
- if( TaskSchedulerFlag.sysPowerOffFlag == TASK_FLAG_CLEAR ) //comment by wulianwei
- {
- TaskSchedulerFlag.sysPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- TaskSchedulerFlag.zigbeeXmitFlag = TASK_FLAG_SET;
- }
- else if( TaskSchedulerFlag.sysPowerOffFlag == TASK_FLAG_SET )
- {
- realTimeData.ctlSlaveRun = Poweroff;
- PowerKeySave();
- }
- }
- /*************************************************************************************
- * Function: CntlPowerONWork
- * Object: 控制开机供电
- * 输入: 无
- * 输出: 无
- * 备注: 1、开机时根据不同的按键状态来判断应该执行哪个任务,包括开机、进入工程模式
- * 2、TaskSchedulerFlag.autoPowerOffFlag判断是否自动关机
- **************************************************************************************/
- void CntlPowerONWork( void )
- {
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = FIVE_SECOND_TIMER;
- }*/
- // if( ( KeyActionFlag.keyPower == emKeyflagLongPress ) && ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )
- // {
- // KeyActionFlag.keyPlus = emKeyflagLongRelease;//长按释放按键
- // emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- // emSysWorkStep = EnterEngineeringMode1;
- // emDisplayPicture = EngineeringMode1Disp;
- // realTimeData.stateRun = StartWork;//系统运行状态:工作
- //
- // }
- // else if( KeyActionFlag.keyPower == emKeyflagShortPress || KeyActionFlag.keyPower == emKeyflagLongPress)
- {
- /* 方晨峰 修改于 20170711 */
-
- sysPromptToneType = StartupTone;//蜂鸣器响:开机音
- speakerWorkStep = emSpeakerNoneWork;
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
-
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterStartup;
- emDisplayPicture = Startup;
- realTimeData.stateRun = SelfTest;//系统运行状态:自检
- // TaskSchedulerFlag.zigbeeXmitFlag = TASK_FLAG_SET;
- }
- }
- /*************************************************************************************
- * Function: CntlAutoPowerOff
- * Object: 控制自动关机
- * 输入: 无
- * 输出: 无
- * 备注: 1、在有自动关机操作的界面会将TaskSchedulerFlag.autoPowerOffFlag变量设置为
- * TASK_FLAG_SET,到规定时间没有操作则自动关机
- ********************************************** ****************************************/
- void CntlAutoPowerOff( void )
- {
- if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_SET )
- {
- if( emSysWorkStep == EnterPowerON )
- {
- realTimeData.stateRun = Poweroff;
- realTimeData.ctlSlaveRun = Poweroff;
- PowerKeySave();//在上电操作时关机不用发送数据直接加
- }
- else
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
-
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- }
- /*************************************************************************************
- * Function: CntlNoActionHint()
- * Object: 控制无操作提示
- * 输入: 无
- * 输出: 无
- * 备注: 1、在有自动关机操作的界面会将TaskSchedulerFlag.NoActionHintFlag 变量设置为
- * TASK_FLAG_SET,到规定30min后蜂鸣器提示
- ********************************************** ****************************************/
- void CntlNoActionHint(void)
- {
- if(TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_SET)
- {
- SysHornToneType = LowPriWarning; //两声提示音
- Y_LED_ON;
- Y_Led_Time=HALF_SECOND_TIMER;//自检LED点亮500ms
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WSET ;
- }
- }
- /*************************************************************************************
- * Function: InfusionControl
- * Object: 输液控制
- * 输入: SysInfusionModeType infusionMode 输液模式
- * 输出: 无
- * 备注: 输液控制,主要用来控制输液量及输液模式
- * 1、首次量模式:根据工程模式中的自控量算 默认100ml/h
- * 2、持续量模式:根据持续量设置值计算出多长时间电机转动一圈
- * 3、追加量模式:根据工程模式中的自控量算 默认100ml/h
- **************************************************************************************/
- void InfusionControl( SysInfusionModeType infusionMode )
- {
- switch( infusionMode )
- {
- case FirstDoseMode:
- InfusionStopTimer = ( 3600 * 1000 ) / ( 100 *10 );
- InfusionXmitTimer = InfusionStopTimer;
- // if( EngineeringModeValue.selfcontrol == 0 )//自控流速
- // {
- // InfusionStopTimer = 0;
- // InfusionXmitTimer = 3600 * 100;
- // }
- // else
- // {
- // InfusionStopTimer = ( 3600 * 1000 ) / ( EngineeringModeValue.selfcontrol *10 );
- // InfusionXmitTimer = InfusionStopTimer;
- // }
-
- break;
- case ContinueMode:
- //1小时(3600s) / 持续量设置值(电机每转一圈是0.05ml,持续量的单位是0.1ml) * 1000(转化为ms)
- if( runParamInfo.continueDose == 0 )
- {
- InfusionStopTimer = 0;
- InfusionXmitTimer = 3600 * 100;
- }
- else
- {
- InfusionStopTimer = ( 3600 * 1000 ) / runParamInfo.continueDose;
- InfusionXmitTimer = InfusionStopTimer;
- }
- break;
- case SuperadditionMode:
- if( EngineeringModeValue.selfcontrol == 0 )
- {
- InfusionStopTimer = 0;
- InfusionXmitTimer = 3600 * 100;
- }
- else
- {
- InfusionStopTimer = ( 3600 * 1000 ) / ( EngineeringModeValue.selfcontrol *10 );
- InfusionXmitTimer = InfusionStopTimer;
- }
- break;
- default:break;
- }
- /* 电机开始工作,将电机停止标志设置为等待,电机停止InfusionStopTimer时长,然后再次启动电机;电机工作状态为启动 */
- if( InfusionStopTimer != 0)
- {
- motorWorkState = MOTOR_WORK_ON;//进入电机工作状态
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_WAIT;//开始计时,等待下次电机启动操作
- }
- else
- {
- motorWorkState = MOTOR_WORK_OFF;//进入电机工作状态
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;//开始计时,等待下次电机启动操作
- }
-
- }
- /*************************************************************************************
- * Function: CntlSystemStandby
- * Object: 控制系统休眠
- * 输入: 无
- * 输出: 无
- * 备注: 1、系统上运行10s即休眠
- * 2、休眠前会给从机发送命令,令其也休眠
- **************************************************************************************/
- void CntlSystemStandby( void )
- {
- if( TaskSchedulerFlag.sysStandbyFlag == TASK_FLAG_SET )
- {
- TaskSchedulerFlag.sysStandbyFlag = TASK_FLAG_CLEAR;
-
- if( realTimeData.ctlSlaveRun != WaitState )
- {
- if( speakerWorkStep != emSpeakerNoneWork)
- return;
- realTimeData.ctlSlaveRun = StandBy;//从机运行状态
-
- HostToSlaveHandle(); //发送休眠命令到从单片机
- }
-
- }
- }
- /*************************************************************************************
- * Function: CntlStartupPicture
- * Object: 控制开机画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键、停止/运行键长按有效,其它键无效
- * 2、开机时会有自检,只有自检通过才能跳到其它界面处理事件
- * 3、在开机界面可长按停止/运行键进入历史数据界面
- **************************************************************************************/
- void CntlStartupPicture( void )
- {
- if( TaskSchedulerFlag.motorSelfTestFlag != TASK_FLAG_SET )//如果没有自检开始自检
- {
- PECASelfTestHandle();
- }
- else//只有自检成功后才可以进行开机界面其它事件处理
- {
- if( ( KeyActionFlag.keyPower == emKeyflagLongPress ) && ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )
- {
- KeyActionFlag.keyPlus = emKeyflagLongRelease;//长按释放按键
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterEngineeringMode1;
- emDisplayPicture = EngineeringMode1Disp;
- realTimeData.stateRun = StartWork;//系统运行状态:工作
-
- }
-
- else if( EngineeringModeValue.seachState == ENGINEERINGMODE_ON )
- {
- if( KeyActionFlag.keyEnter == emKeyflagLongPress )//enter键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = StartWork;//系统运行状态:工作
- TaskSchedulerTimer.dispAutoJumpTimer = FIVE_SECOND_TIMER;//修改于2019.02.12跳转时间3s-5s
- emSysWorkStep = EnterHistory;
- emDisplayPicture = HistoryFisrtDisp;
-
- /* 电机停止工作,将电机停止标志置位,运行标志清除,电机工作状态为停止 */
- motorWorkState = MOTOR_WORK_OFF;
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- }
- /*************************************************************************************
- * Function: CntlHistoryPicture
- * Object: 控制历史数据画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按进入设备ID界面
- * 2、加减键短按翻页
- * 3、电源键长按关机
- * 4、其它键无效
- **************************************************************************************/
- void CntlHistoryPicture( void )
- {
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterDeviceID;
- emDisplayPicture = DeviceID;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;//自动跳转恢复为常用值
- }
- if( KeyActionFlag.keyPlus == emKeyflagShortPress )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按释放按键
- TaskSchedulerTimer.dispAutoJumpTimer = FIVE_SECOND_TIMER;
- if(FackhistoryRecordQTY == 0)
- {
- FackreadIndex = 0;
- }
- else if(FackreadIndex < FackhistoryRecordQTY )
- {
- FackreadIndex ++ ;//假索引
- }
- else
- {
- FackreadIndex = 1;
- if(FackhistoryRecordQTY > 10)
- {
- if(historyRecordPointer == 0)
- {
- historyRecord.readIndex = (historyRecordQTY-1);
- }
- else
- {
- historyRecord.readIndex = historyRecordPointer-1;
- }
- ReadHistoryRecord();
- emSysWorkStep = EnterHistory;
- emDisplayPicture = HistoryFisrtDisp;
- return;
- }
- }
- /* if( historyRecordQTY == 0 )//表示没有历史数据
- {
- historyRecord.readIndex = 0;
- }
- else if( historyRecord.readIndex < ( historyRecordQTY - 1 ) )
- {
- historyRecord.readIndex++;
- }
- else
- {
- historyRecord.readIndex = 0;
- }*/
- if( historyRecord.readIndex > 0 )
- {
- historyRecord.readIndex--;
- }
- else
- {
- if( historyRecordQTY == 0 )//表示没有历史数据
- {
- historyRecord.readIndex = 0;
- }
- else
- {
- historyRecord.readIndex = historyRecordQTY - 1;
-
- }
- }
- ReadHistoryRecord();
- emSysWorkStep = EnterHistory;
- emDisplayPicture = HistoryFisrtDisp;
-
- }
- if( KeyActionFlag.keyMinus == emKeyflagShortPress )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按释放按键
- TaskSchedulerTimer.dispAutoJumpTimer = FIVE_SECOND_TIMER;
- if(FackhistoryRecordQTY == 0)
- {
- FackreadIndex = 0;
- }
- else if(FackreadIndex > 1)
- {
- FackreadIndex -- ;
- }
- else
- {
- FackreadIndex = FackhistoryRecordQTY;
- if(FackhistoryRecordQTY > 10)
- {
- historyRecord.readIndex = 0;
- ReadHistoryRecord();
- emSysWorkStep = EnterHistory;
- emDisplayPicture = HistoryFisrtDisp;
- return;
- }
- }
- /*if( historyRecord.readIndex > 0 )
- {
- historyRecord.readIndex--;
- }
- else
- {
- if( historyRecordQTY == 0 )//表示没有历史数据
- {
- historyRecord.readIndex = 0;
- }
- else
- {
- historyRecord.readIndex = historyRecordQTY - 1;
-
- }
- }*/
- if( historyRecordQTY == 0 )//表示没有历史数据
- {
- historyRecord.readIndex = 0;
- }
- else if( historyRecord.readIndex < ( historyRecordQTY - 1 ) )
- {
- historyRecord.readIndex++;
- }
- else
- {
- historyRecord.readIndex = 0;
- }
- ReadHistoryRecord();
- emSysWorkStep = EnterHistory;
- emDisplayPicture = HistoryFisrtDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- realTimeData.stateRun = Poweroff;//关机发送
-
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlDeviceIDPicture
- * Object: 控制设备ID画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按进入时间显示界面
- * 2、power键长按关机
- * 3、其它键无效
- **************************************************************************************/
- void CntlDeviceIDPicture( void )
- {
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterDispTime;
- emDisplayPicture = TimeDisp;
-
- // emSysWorkStep = EnterVerifyInfo;
- // emDisplayPicture = VerifyInfoDisp;
- // TaskSchedulerFlag.zigbeeXmitFlag = TASK_FLAG_SET;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- realTimeData.stateRun = Poweroff;//关机发送
-
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlDispTimePicture
- * Object: 控制时间显示画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按进入信息确认界面
- * 2、power键长按关机
- * 3、加号键长按进入时间设置界面
- * 4、其它键无效
- * 5、此页面有自动关机功能
- **************************************************************************************/
- void CntlDispTimePicture( void )
- {
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- }*/
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- }
-
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterVerifyInfo;
- emDisplayPicture = VerifyInfoDisp;
-
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- if( KeyActionFlag.keyPlus == emKeyflagLongPress )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagLongRelease;//长按释放按键
- setTimeBuf.year = displayTimeBuf.year;
- setTimeBuf.month = displayTimeBuf.month;
- setTimeBuf.date = displayTimeBuf.date;
- setTimeBuf.week = displayTimeBuf.week;
- setTimeBuf.hour = displayTimeBuf.hour;
- setTimeBuf.minute = displayTimeBuf.minute;
- setTimeBuf.seconds = displayTimeBuf.seconds;
- /*不设置月份直接设置天数,减按键无法使用情况*/
- switch( setTimeBuf.month )
- {
- case 1: case 3: case 5: case 7:
- case 8: case 10: case 12:
- dateLimit = 31;
- break;
- case 2:
- dateLimit = 29;
- break;
- case 4: case 6: case 9: case 11:
- dateLimit = 30;
- break;
- default:
- dateLimit = 30;
- break;
- }
- /**********************************************/
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterSetTime;
- emDisplayPicture = TimeSetDisp;
-
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- //切断电源,关机
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlSetTimePicture
- * Object: 控制时间设置画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择,直到最后一项进入时间显示界面
- * 2、运行停止键短按前一项选择,直到第一项进入时间显示界面
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- * 6、此页面有自动关机功能
- **************************************************************************************/
- void CntlSetTimePicture( void )
- {
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- }*/
-
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- }
-
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( emSetTimeChoose )
- {
- case Year:
- emSetTimeChoose = Month;
- emDisplayPicture = TimeSetDisp;
- break;
- case Month:
- emSetTimeChoose = Date;
- emDisplayPicture = TimeSetDisp;
- break;
- case Date:
- emSetTimeChoose = Hour;
- emDisplayPicture = TimeSetDisp;
- break;
- case Hour:
- emSetTimeChoose = Minute;
- emDisplayPicture = TimeSetDisp;
- break;
- case Minute:
- displayTimeBuf.year = setTimeBuf.year;
- displayTimeBuf.month = setTimeBuf.month;
- displayTimeBuf.date = setTimeBuf.date;
- displayTimeBuf.week = setTimeBuf.week;
- displayTimeBuf.hour = setTimeBuf.hour;
- displayTimeBuf.minute = setTimeBuf.minute;
- displayTimeBuf.seconds = 0;//setTimeBuf.seconds;
- /* 在此应该设置一下时间 */
- // RTC_Set(setTimeBuf.year,setTimeBuf.month,setTimeBuf.date,setTimeBuf.hour,setTimeBuf.minute,0);//默认时间
- SetDateTimeToRTC();
- emSetTimeChoose = Year;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- controlTimerCounts = 0;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- emDisplayPicture = TimeDisp;
- emSysWorkStep = EnterDispTime;
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- break;
- default:break;
- }
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- }
- if( (KeyActionFlag.keyRunPause == emKeyflagShortPress )||(KeyActionFlag.keyPS == emKeyflagShortPress) )//RunPause键\返回按键
- {
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- switch( emSetTimeChoose)
- {
- case Year://如果在year项按运行/停止键则保存时间设置跳回时间显示界面
- displayTimeBuf.year = setTimeBuf.year;
- displayTimeBuf.month = setTimeBuf.month;
- displayTimeBuf.date = setTimeBuf.date;
- displayTimeBuf.week = setTimeBuf.week;
- displayTimeBuf.hour = setTimeBuf.hour;
- displayTimeBuf.minute = setTimeBuf.minute;
- displayTimeBuf.seconds = setTimeBuf.seconds;
- /* 在此应该设置一下时间 */
- // RTC_Set(setTimeBuf.year,setTimeBuf.month,setTimeBuf.date,setTimeBuf.hour,setTimeBuf.minute,0);//默认时间
- SetDateTimeToRTC();
- emSetTimeChoose = Year;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- controlTimerCounts = 0;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- emDisplayPicture = TimeDisp;
- emSysWorkStep = EnterDispTime;
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- break;
- case Month:
- emSetTimeChoose = Year;
- emDisplayPicture = TimeSetDisp;
- break;
- case Date:
- emSetTimeChoose = Month;
- emDisplayPicture = TimeSetDisp;
- break;
- case Hour:
- emSetTimeChoose = Date;
- emDisplayPicture = TimeSetDisp;
- break;
- case Minute:
- emSetTimeChoose = Hour;
- emDisplayPicture = TimeSetDisp;
- break;
- default:break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按按释放按键
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- switch( emSetTimeChoose)
- {
- case Year:
- setTimeBuf.year++;
- break;
- case Month:
- setTimeBuf.month++;
- if( setTimeBuf.month > 12 )
- {
- setTimeBuf.month = 1;
- }
- switch( setTimeBuf.month )
- {
- case 1: case 3: case 5: case 7:
- case 8: case 10: case 12:
- dateLimit = 31;
- break;
- case 2:
- if(setTimeBuf.year %4 !=0)
- {
- dateLimit = 28;
- }
- else
- {
- dateLimit = 29;
- }
- break;
- case 4: case 6: case 9: case 11:
- dateLimit = 30;
- break;
- default:
- dateLimit = 30;
- break;
- }
- if( setTimeBuf.date > dateLimit )
- {
- setTimeBuf.date = dateLimit;
- }
- break;
- case Date:
- switch( setTimeBuf.month )
- {
- case 1: case 3: case 5: case 7:
- case 8: case 10: case 12:
- dateLimit = 31;
- break;
- case 2:
- if(setTimeBuf.year %4 !=0)
- {
- dateLimit = 28;
- }
- else
- {
- dateLimit = 29;
- }
- break;
- case 4: case 6: case 9: case 11:
- dateLimit = 30;
- break;
- default:
- dateLimit = 30;
- break;
- }
- setTimeBuf.date++;
- if( setTimeBuf.date > dateLimit )
- {
- setTimeBuf.date = 1;
- }
- break;
- case Hour:
- setTimeBuf.hour++;
- if( setTimeBuf.hour > 23 )
- {
- setTimeBuf.hour = 0;
- }
- break;
- case Minute:
- setTimeBuf.minute++;
- if( setTimeBuf.minute > 59 )
- {
- setTimeBuf.minute = 0;
- }
- emDisplayPicture = TimeDisp;
- emSysWorkStep = EnterDispTime;
- break;
- default:break;
- }
- emSysWorkStep = EnterSetTime;
- emDisplayPicture = TimeSetDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按按释放按键
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- switch( emSetTimeChoose)
- {
- case Year:
- setTimeBuf.year--;
- break;
- case Month:
- if( setTimeBuf.month <= 1 )
- {
- setTimeBuf.month = 12;
- }
- else
- {
- setTimeBuf.month--;
- }
- switch( setTimeBuf.month )
- {
- case 1: case 3: case 5: case 7:
- case 8: case 10: case 12:
- dateLimit = 31;
- break;
- case 2:
- if(setTimeBuf.year %4 !=0)
- {
- dateLimit = 28;
- }
- else
- {
- dateLimit = 29;
- }
- break;
- case 4: case 6: case 9: case 11:
- dateLimit = 30;
- break;
- default:
- dateLimit = 30;
- break;
- }
- if( setTimeBuf.date > dateLimit )
- {
- setTimeBuf.date = dateLimit;
- }
- break;
- case Date:
- switch( setTimeBuf.month )
- {
- case 1: case 3: case 5: case 7:
- case 8: case 10: case 12:
- dateLimit = 31;
- break;
- case 2:
- if(setTimeBuf.year %4 !=0)
- {
- dateLimit = 28;
- }
- else
- {
- dateLimit = 29;
- }
- break;
- case 4: case 6: case 9: case 11:
- dateLimit = 30;
- break;
- default:
- dateLimit = 30;
- break;
- }
- if( setTimeBuf.date <= 1 )
- {
- setTimeBuf.date = dateLimit;
- }
- else
- {
- setTimeBuf.date--;
- }
- break;
- case Hour:
- if( setTimeBuf.hour <= 0 )
- {
- setTimeBuf.hour = 23;
- }
- else
- {
- setTimeBuf.hour--;
- }
- break;
- case Minute:
- if( setTimeBuf.minute <= 0 )
- {
- setTimeBuf.minute = 59;
- }
- else
- {
- setTimeBuf.minute--;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetTime;
- emDisplayPicture = TimeSetDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlSetPasswordPicture
- * Object: 控制设置密码画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、每次使用都会设置新的密码,密码设置完成无须保存
- * 2、enter键短按下一项选择,直到最后一项进入时间显示界面
- * 3、运行停止键短按前一项选择,直到第一项进入时间显示界面
- * 4、power键长按关机
- * 5、加减键短按选项数字加减
- * 6、其它键无效
- **************************************************************************************/
- void CntlSetPasswordPicture( void )
- {
- uint8_t i;
- uint8_t tempPasswordState = 0;
- uint8_t temptestValue = 0;
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( modifyStep )//选择下一个项
- {
- case 1: case 2: case 3: case 4:
- case 5:
- modifyStep++;
- emSysWorkStep = EnterSetPassword;
- emDisplayPicture = PasswordSetDisp;
- break;
- case 6:
- modifyStep = 1;
- for( i = 0 ; i < 3 ; i++ )//比较密码信息,有一个不正确则将状态置1
- {
- if( setPasswordBuf[i] != verifyPasswordBuf[i] )
- {
- tempPasswordState = 1;
- break;
- }
- }
- if( tempPasswordState == 0 )//如果比较后密码信息正确,则跳入下一个界面,否则继续留在本页并跳到第一步
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- }
- else
- {
- emSysWorkStep = EnterSetPassword;
- emDisplayPicture = PasswordSetDisp;
- // sysPromptToneCounts = 255;//蜂鸣器-计数
- SysHornToneType = WarringTone;//蜂鸣器-密码比对错误报警
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- }
- temptestValue = setPasswordBuf[0]*10;
- temptestValue += setPasswordBuf[1];
- break;
- default:break;
- }
- }
- if( KeyActionFlag.keyRunPause == emKeyflagShortPress )//运行/停止键
- {
- switch( modifyStep )//选择下一个项
- {
- case 1:
- modifyStep = 1;
- break;
- case 2: case 3: case 4:
- case 5: case 6:
- modifyStep--;
- break;
- default:break;
- }
- emSysWorkStep = EnterSetPassword;
- emDisplayPicture = PasswordSetDisp;
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按释放按键
- switch( modifyStep )//选项加1
- {
- case 1: case 2: case 3:
- if( setPasswordBuf[modifyStep-1] < 9 )
- {
- setPasswordBuf[modifyStep-1]++;
- }
- else
- {
- setPasswordBuf[modifyStep-1] = 0;
- }
- break;
- case 4: case 5: case 6:
- if( verifyPasswordBuf[modifyStep-4] < 9 )//modifyStep-1-3 数组维数从0开始
- {
- verifyPasswordBuf[modifyStep-4]++;
- }
- else
- {
- verifyPasswordBuf[modifyStep-4] = 0;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetPassword;
- emDisplayPicture = PasswordSetDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按释放按键
- switch( modifyStep )//选项减1
- {
- case 1: case 2: case 3:
- if( setPasswordBuf[modifyStep-1] > 0 )
- {
- setPasswordBuf[modifyStep-1]--;
- }
- else
- {
- setPasswordBuf[modifyStep-1] = 9;
- }
- break;
- case 4: case 5: case 6:
- if( verifyPasswordBuf[modifyStep-4] > 0 )//modifyStep-1-3 数组维数从0开始
- {
- verifyPasswordBuf[modifyStep-4]--;
- }
- else
- {
- verifyPasswordBuf[modifyStep-4] = 9;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetPassword;
- emDisplayPicture = PasswordSetDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlVerifyInfoPicture
- * Object: 控制确认住院信息画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择,直到最后一项进入参数设置界面
- * 2、运行停止键短按前一项选择
- * 3、power键长按关机
- * 4、加号键长按进入信息设置界面
- * 5、其它键无效
- * 6、此页面有自动关机功能
- **************************************************************************************/
- void CntlVerifyInfoPicture( void )
- {
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- }*/
-
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- }
-
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- if( verifyInfo.modifyInfoType == HOSPITALNO_SELECTED )
- {
- emDisplayPicture = VerifyInfoDisp;
- verifyInfo.modifyInfoType = BEDNO_SELECTED;
- }
- else
- {
- if(EngineeringModeValue.networkState ==0 )
- {
- if(TaskSchedulerFlag.HistoryDontSetFlag == TASK_FLAG_SET)
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- verifyInfo.modifyInfoType = HOSPITALNO_SELECTED;
- realTimeData.stateRun = Poweron;
- Start_send=0; //设置完住院号/病区床号,进入参数设置开始发送数据
- TaskSchedulerTimer.rtdXmitTimer = ONE_SECOND_TIMER;//准备快速发送实时数据 进入设置界面1s发送开机状态长数据包
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- verifyInfo.modifyInfoType = HOSPITALNO_SELECTED;
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- else
- {
- verifyInfo.modifyInfoType = HOSPITALNO_SELECTED;
- emSysWorkStep = EnterInpatien;
- emDisplayPicture = Inpatien;
- }
- }
- else
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- }
- }
- }
- if((KeyActionFlag.keyRunPause == emKeyflagShortPress )||(KeyActionFlag.keyPS == emKeyflagShortPress))//暂停键具有返回功能
- {
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- if( verifyInfo.modifyInfoType == BEDNO_SELECTED )
- {
- emDisplayPicture = VerifyInfoDisp;
- verifyInfo.modifyInfoType = HOSPITALNO_SELECTED;
- }
- else
- {
- verifyInfo.modifyInfoType = HOSPITALNO_SELECTED;
- }
- }
- if( KeyActionFlag.keyPlus == emKeyflagLongPress )//“+”键
- {
- KeyActionFlag.keyPlus = emKeyflagLongRelease;//长按释放按键
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- modifyStep = 1;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlSetVerifyInfoPicture
- * Object: 控制设置确认住院信息画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择
- * 2、运行停止键短按前一项选择
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- * 6、此页面有自动关机功能
- **************************************************************************************/
- void CntlSetVerifyInfoPicture( void )
- {
- uint8_t i;
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- }*/
-
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- }
-
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- switch( verifyInfo.modifyInfoType )
- {
- case HOSPITALNO_SELECTED:
- if( modifyStep < EngineeringModeValue.hospitalNOQty )
- {
- modifyStep++;
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- }
- else
- {
- // WriteParameterRecord();//设置完成在此处保存一下
- verifyInfo.hospitalNO = 0;
- for( i = 0 ; i < EngineeringModeValue.hospitalNOQty - 1 ; i++ )
- {
- verifyInfo.hospitalNO += setParamInfo.hospitalNO[i];
- verifyInfo.hospitalNO *= 10;
- }
- verifyInfo.hospitalNO += setParamInfo.hospitalNO[i];//最后一位不用乘10倍
- WriteParameterRecord();//设置完成在此处保存一下
- emSysWorkStep = EnterVerifyInfo;
- emDisplayPicture = VerifyInfoDisp;
- verifyInfo.modifyInfoType = BEDNO_SELECTED;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- TaskSchedulerFlag.HistoryDontSetFlag = TASK_FLAG_SET;//进入住院号设置界面即可认为住院号已经设置
- break;
- case BEDNO_SELECTED:
- if( modifyStep < ( EngineeringModeValue.sickroomQty + EngineeringModeValue.bedNOQty ) )
- {
- modifyStep++;
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- }
- else
- {
- // WriteParameterRecord();//设置完成在此处保存一下
- verifyInfo.sickroom = 0;
- for( i = 0 ; i < ( EngineeringModeValue.sickroomQty - 1 ) ; i++ )
- {
- verifyInfo.sickroom += setParamInfo.sickroom[i];
- verifyInfo.sickroom *= 10;
- }
- verifyInfo.sickroom += setParamInfo.sickroom[i];//最后一位不用乘10倍
-
- verifyInfo.bedNO = 0;
- for( i = 0 ; i < ( EngineeringModeValue.bedNOQty - 1 ) ; i++ )
- {
- verifyInfo.bedNO += setParamInfo.bedNO[i];
- verifyInfo.bedNO *= 10;
- }
- verifyInfo.bedNO += setParamInfo.bedNO[i];
- WriteParameterRecord();//设置完成在此处保存一下
- emSysWorkStep = EnterVerifyInfo;
- emDisplayPicture = VerifyInfoDisp;
- modifyStep = 1;
- verifyInfo.modifyInfoType = BEDNO_SELECTED;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- break;
- default:break;
- }
- }
- if(( KeyActionFlag.keyRunPause == emKeyflagShortPress)||(KeyActionFlag.keyPS == emKeyflagShortPress) )//运行/停止键
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- switch( verifyInfo.modifyInfoType )
- {
- case HOSPITALNO_SELECTED:
- if( modifyStep == 1 )//选择上一项
- {
- // WriteParameterRecord();//设置完成在此处保存一下
- verifyInfo.hospitalNO = 0;
- for( i = 0 ; i < ( EngineeringModeValue.hospitalNOQty - 1 ) ; i++ )
- {
- verifyInfo.hospitalNO += setParamInfo.hospitalNO[i];
- verifyInfo.hospitalNO *= 10;
- }
- verifyInfo.hospitalNO += setParamInfo.hospitalNO[i];//最后一位不用乘10倍
- WriteParameterRecord();//设置完成在此处保存一下
- emSysWorkStep = EnterVerifyInfo;
- emDisplayPicture = VerifyInfoDisp;
- verifyInfo.modifyInfoType = BEDNO_SELECTED;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- else
- {
- modifyStep--;
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- }
- TaskSchedulerFlag.HistoryDontSetFlag = TASK_FLAG_SET;//进入住院号设置界面即可认为住院号已经设置
- break;
- case BEDNO_SELECTED:
- if( modifyStep == 1 )//选择上一项
- {
- // WriteParameterRecord();//设置完成在此处保存一下
- verifyInfo.sickroom = 0;
- for( i = 0 ; i < ( EngineeringModeValue.sickroomQty - 1 ) ; i++ )
- {
- verifyInfo.sickroom += setParamInfo.sickroom[i];
- verifyInfo.sickroom *= 10;
- }
- verifyInfo.sickroom += setParamInfo.sickroom[i];//最后一位不用乘10倍
-
- verifyInfo.bedNO = 0;
- for( i = 0 ; i < ( EngineeringModeValue.bedNOQty - 1 ) ; i++ )
- {
- verifyInfo.bedNO += setParamInfo.bedNO[i];
- verifyInfo.bedNO *= 10;
- }
- verifyInfo.bedNO += setParamInfo.bedNO[i];
- WriteParameterRecord();//设置完成在此处保存一下
- emSysWorkStep = EnterVerifyInfo;
- emDisplayPicture = VerifyInfoDisp;
- modifyStep = 1;
- verifyInfo.modifyInfoType = BEDNO_SELECTED;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }
- else
- {
- modifyStep--;
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- }
- break;
- default:break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- switch( verifyInfo.modifyInfoType )
- {
- case HOSPITALNO_SELECTED:
- if( setParamInfo.hospitalNO[modifyStep-1] < 9 )//选项加1
- {
- setParamInfo.hospitalNO[modifyStep-1]++;
- }
- else
- {
- setParamInfo.hospitalNO[modifyStep-1] = 0;
- }
- break;
- case BEDNO_SELECTED:
- if( modifyStep <= EngineeringModeValue.sickroomQty )//选项加1病区
- {
- if( setParamInfo.sickroom[modifyStep - 1] < 9 )
- {
- setParamInfo.sickroom[modifyStep - 1]++;
- }
- else
- {
- setParamInfo.sickroom[modifyStep-1] = 0;
- }
- }
- else//选项加1病床
- {
- if( setParamInfo.bedNO[modifyStep - EngineeringModeValue.sickroomQty - 1] < 9 )
- {
- setParamInfo.bedNO[modifyStep - EngineeringModeValue.sickroomQty - 1]++;
- }
- else
- {
- setParamInfo.bedNO[modifyStep - EngineeringModeValue.sickroomQty - 1] = 0;
- }
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;//清除自动关机计时
- switch( verifyInfo.modifyInfoType )
- {
- case HOSPITALNO_SELECTED:
- if( setParamInfo.hospitalNO[modifyStep-1] > 0 )//选项减1
- {
- setParamInfo.hospitalNO[modifyStep-1]--;
- }
- else
- {
- setParamInfo.hospitalNO[modifyStep-1] = 9;
- }
- break;
- case BEDNO_SELECTED:
- if( modifyStep <= EngineeringModeValue.sickroomQty )//选项减1病区
- {
- if( setParamInfo.sickroom[modifyStep - 1] > 0 )
- {
- setParamInfo.sickroom[modifyStep - 1]--;
- }
- else
- {
- setParamInfo.sickroom[modifyStep-1] = 9;
- }
- }
- else//选项减1病床
- {
- if( setParamInfo.bedNO[modifyStep - EngineeringModeValue.sickroomQty - 1] > 0 )
- {
- setParamInfo.bedNO[modifyStep - EngineeringModeValue.sickroomQty - 1]--;
- }
- else
- {
- setParamInfo.bedNO[modifyStep - EngineeringModeValue.sickroomQty - 1] = 9;
- }
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetVerifyInfo;
- emDisplayPicture = SetVerifyInfoDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlInpatienPicture(void)
- * Object: 控制住院号未设置提醒界面
- * 输入: 无
- * 输出: 无
- * 备注: 未设置住院号不能进入参数设置界面,进入此界面,按返回按键返回到设置住院号界面
- **************************************************************************************/
- void CntlInpatienPicture(void)
- {
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- }
- if(( KeyActionFlag.keyPS == emKeyflagShortPress )||(KeyActionFlag.keyRunPause == emKeyflagShortPress))//返回键
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emSysWorkStep = EnterVerifyInfo;
- emDisplayPicture = VerifyInfoDisp;
- verifyInfo.modifyInfoType = HOSPITALNO_SELECTED;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlSetParamPicture
- * Object: 控制设置参数画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择,循环选择
- * 2、运行停止键短按进入运行界面,并且保存参数
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、Airout键短按进入排气界面
- * 6、密码/静音键短按进入密码设置界面
- * 7、其它键无效
- * 8、此页面有自动关机功能
- **************************************************************************************/
- void CntlSetParamPicture( void )
- {
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- }*/
-
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- // TaskSchedulerTimer.NoActionHintTimer = THREE_MINUTE_TIMER;
- }
-
- TaskSchedulerFlag.PCAOneTimeFlag=TASK_FLAG_WAIT;
- TaskSchedulerTimer.pcaOneHourTimer=ONE_HOUR_TIMER;
- // if( ( KeyActionFlag.keyEnter == emKeyflagShortPress ) || ( KeyActionFlag.keyEnter == emKeyflagLongPress ) )//Enter键
- if(( KeyActionFlag.keyEnter == emKeyflagShortPress )&&(KEY_Enter_action == 1))
- {
- KeyActionFlag.keyEnter = emKeyflagShortRelease;//短按操作释放按键
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- if(SetParametersAgain == 0)
- {
- switch( setParamInfo.emModifyParam )
- {
- case TotalDose:
- setParamInfo.emModifyParam = FirstDose;
- break;
- case FirstDose:
- setParamInfo.emModifyParam = Superaddition;
- break;
- case Superaddition:
- setParamInfo.emModifyParam = continueDose;
- break;
- case continueDose:
- setParamInfo.emModifyParam = LockTime;
- break;
- case LockTime:
- setParamInfo.emModifyParam = LimitDose;
- break;
- case LimitDose:
- setParamInfo.emModifyParam = TotalDose;
- break;
- default:break;
- }
- }
- else
- {
- switch( setParamInfo.emModifyParam )
- {
- case FirstDose:
- setParamInfo.emModifyParam = Superaddition;
- break;
- case Superaddition:
- setParamInfo.emModifyParam = continueDose;
- break;
- case continueDose:
- setParamInfo.emModifyParam = LockTime;
- break;
- case LockTime:
- setParamInfo.emModifyParam = LimitDose;
- break;
- case LimitDose:
- setParamInfo.emModifyParam = FirstDose;
- break;
- default:break;
- }
- }
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- }
- if( KeyActionFlag.keyEnter == emKeyflagLongPress )
- {
- // KeyActionFlag.keyEnter = emKeyflagShortRelease;//短按操作释放按键
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- if(TaskSchedulerFlag.EnterDelayFlag == TASK_FLAG_SET)
- {
- if(SetParametersAgain == 0)
- {
- switch( setParamInfo.emModifyParam )
- {
- case TotalDose:
- setParamInfo.emModifyParam = FirstDose;
- break;
- case FirstDose:
- setParamInfo.emModifyParam = Superaddition;
- break;
- case Superaddition:
- setParamInfo.emModifyParam = continueDose;
- break;
- case continueDose:
- setParamInfo.emModifyParam = LockTime;
- break;
- case LockTime:
- setParamInfo.emModifyParam = LimitDose;
- break;
- case LimitDose:
- setParamInfo.emModifyParam = TotalDose;
- break;
- default:break;
- }
- }
- else
- {
- switch( setParamInfo.emModifyParam )
- {
- case FirstDose:
- setParamInfo.emModifyParam = Superaddition;
- break;
- case Superaddition:
- setParamInfo.emModifyParam = continueDose;
- break;
- case continueDose:
- setParamInfo.emModifyParam = LockTime;
- break;
- case LockTime:
- setParamInfo.emModifyParam = LimitDose;
- break;
- case LimitDose:
- setParamInfo.emModifyParam = FirstDose;
- break;
- default:break;
- }
- }
- TaskSchedulerFlag.EnterDelayFlag = TASK_FLAG_CLEAR;
- TaskSchedulerTimer.EnterDelayTimer = EnterDelay_TIMER;
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- }
- }
- if( KeyActionFlag.keyPS == emKeyflagShortPress )//返回键
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- if(SetParametersAgain == 0)
- {
- switch( setParamInfo.emModifyParam )
- {
- case TotalDose:
- setParamInfo.emModifyParam = LimitDose;
- break;
- case FirstDose:
- setParamInfo.emModifyParam = TotalDose;
- break;
- case Superaddition:
- setParamInfo.emModifyParam = FirstDose;
- break;
- case continueDose:
- setParamInfo.emModifyParam = Superaddition;
- break;
- case LockTime:
- setParamInfo.emModifyParam = continueDose;
- break;
- case LimitDose:
- setParamInfo.emModifyParam = LockTime;
- break;
- default:break;
- }
- }
- else
- {
- switch( setParamInfo.emModifyParam )
- {
- case FirstDose:
- setParamInfo.emModifyParam = LimitDose;
- break;
- case Superaddition:
- setParamInfo.emModifyParam = FirstDose;
- break;
- case continueDose:
- setParamInfo.emModifyParam = Superaddition;
- break;
- case LockTime:
- setParamInfo.emModifyParam = continueDose;
- break;
- case LimitDose:
- setParamInfo.emModifyParam = LockTime;
- break;
- default:break;
- }
- }
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- }
- if( KeyActionFlag.keyRunPause == emKeyflagShortPress )//运行/停止键
- {
- ran = 1; //只要运行按键开启置1,在暂停中判断上次是否为1,防止暂停按键按压后实际运行的参数并没有变化这种现象发生
- WriteParameterRecord();//设置完成在此保存一下
- RunParamUpdate();//更新运行参数
- start_flag = 1; //当按下运行按键时,置位该标志
- ElectStartCount=0;
- self_adaption_Pressure=0;//运行时,清除自适应压力值
-
- self_adaption_cont=0;
- self_adaption_flag=0; //自适应压力参数处理完成标志,用于后面压力报警判断
- // RunToLorawawn_flag=1; //按运行按键时,置位标志,立即发送数据
- StartToRun_flag=1; //当按下运行按键的时候,置位该标志
-
- /*新增加测试开关打开时,以20s发送短数据包*/
- if(EngineeringModeValue.test == 0)
- {
- TaskSchedulerTimer.rtdXmitTimer = TWENTY_SECOND_TIMER;//20s发送一次
- }
- /******************************************/
-
- /* 如果首次量没有设置,则直接进入到运行界面,否则进入首次量 */
- if( setParamInfo.firstDose != 0 )
- {
- InfusionControl( FirstDoseMode );
- realTimeData.stateRun = FirstRun;//进入首次运行状态,运行发送
- emDisplayPicture = RunFirstDoseDisp;
- emSysWorkStep = EnterRunFirstDose;
- }
- else
- {
- InfusionControl( ContinueMode );
- realTimeData.stateRun = MainRun;//进入运行状态,运行发送
- emDisplayPicture = RunMainDisp;
- emSysWorkStep = EnterRunMain;
- }
- // runParamInfo.pwmSetValue = 1000;
- // realTimeData.invalidCount = 0;
- // realTimeData.validCount = 0;
- sysAlarmFlag.Zhentongxiaoguo = ALARM_OFF; //重新设置参数后阵痛不足报警解除
- pca_count = 0; //设置参数时镇痛不足计数清零
- realTimeData.motorSelfTestCount = 0;
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
-
- realTimeData.lockTime = 0;//PCA锁时
- TaskSchedulerFlag.pcaLockFlag = TASK_FLAG_CLEAR;//清除PCA锁时
- realTimeData.hall1Counter = 0;
- realTimeData.preHall1 = 0;
- realTimeData.hall2Counter = 0;
- realTimeData.preHall2 = 0;
- modifyStep = 1;
-
- historyRefreshFlag = 0;//清除历史数据存储刷新标志
-
- TaskSchedulerTimer.totalDoseOneHourTimer = ONE_HOUR_TIMER;
- realTimeData.inputLimitDose = 0;//极限量累加值清零
- TaskSchedulerFlag.limitJudgeFlag = TASK_FLAG_SET;
-
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;//清除锁屏
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;
-
- TaskSchedulerFlag.unlockPasswordFlag = TASK_FLAG_CLEAR;//清除锁写密码状态
- TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_CLEAR;//清除追加标志
-
- TaskSchedulerTimer.totalDoseOneHourTimer = ONE_HOUR_TIMER;//极限量输注判断时间为1小时
-
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- // if(SetParametersAgain == 0)
- // {
- // setParamInfo.emModifyParam = TotalDose;
- // }
- // else
- // {
- // setParamInfo.emModifyParam = FirstDose;
- // }
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- switch( setParamInfo.emModifyParam )
- {
- case TotalDose:
- if( setParamInfo.totalDose >= 999 )
- {
- setParamInfo.totalDose = 0;
- }
- else
- {
- setParamInfo.totalDose++;
- }
- break;
- case FirstDose:
- if( setParamInfo.firstDose >= 50 )
- {
- setParamInfo.firstDose = 0;
- }
- else
- {
- setParamInfo.firstDose++;
- }
- break;
- case continueDose:
- /* 0~10,按0.1调,10~50按1调 */
- if( setParamInfo.continueDose1 < 100 )
- {
- setParamInfo.continueDose1++;
- }
- else if( ( setParamInfo.continueDose1 < 500 ) && ( setParamInfo.continueDose1 >= 100 ) )
- {
- setParamInfo.continueDose1 += 10;
- }
- else if( setParamInfo.continueDose1 >= 500 )
- {
- setParamInfo.continueDose1 = 0;
- }
- break;
- case Superaddition:
- if( setParamInfo.superaddition1 >= 100 )
- {
- setParamInfo.superaddition1 = 0;
- }
- else if( ( setParamInfo.superaddition1 >= 60 ) && ( setParamInfo.superaddition1 < 100 ) )
- {
- setParamInfo.superaddition1 += 10;
- }
- else
- {
- setParamInfo.superaddition1++;
- }
- break;
- case LockTime:
- if( setParamInfo.lockTime1 >= 99 )//1440
- {
- setParamInfo.lockTime1 = 0;
- }
- else
- {
- setParamInfo.lockTime1++;
- }
- break;
- case LimitDose:
- if( setParamInfo.limitDose1 >= 90 )
- {
- setParamInfo.limitDose1 = 1;
- }
- else
- {
- setParamInfo.limitDose1 += 1;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- switch( setParamInfo.emModifyParam )
- {
- case TotalDose:
- if( setParamInfo.totalDose <= 0 )
- {
- setParamInfo.totalDose = 999;
- }
- else
- {
- setParamInfo.totalDose--;
- }
- break;
- case FirstDose:
- if( setParamInfo.firstDose <= 0 )
- {
- setParamInfo.firstDose = 50;
- }
- else
- {
- setParamInfo.firstDose--;
- }
- break;
- case continueDose:
- if( ( setParamInfo.continueDose1 <= 100 ) && ( setParamInfo.continueDose1 > 0 ) )
- {
- setParamInfo.continueDose1--;
- }
- else if( ( setParamInfo.continueDose1 <= 500 ) && ( setParamInfo.continueDose1 > 100 ) )
- {
- setParamInfo.continueDose1 -= 10;
- }
- else if( setParamInfo.continueDose1 == 0 )
- {
- setParamInfo.continueDose1 = 500;
- }
- break;
- case Superaddition:
- if( setParamInfo.superaddition1 <= 0 )
- {
- setParamInfo.superaddition1 = 100;
- }
- else if( ( setParamInfo.superaddition1 <= 100 ) && ( setParamInfo.superaddition1 > 60 ) )
- {
- setParamInfo.superaddition1 -= 10;
- }
- else
- {
- setParamInfo.superaddition1--;
- }
- break;
- case LockTime:
- if( setParamInfo.lockTime1 <= 0 )
- {
- setParamInfo.lockTime1 = 99;//1440
- }
- else
- {
- setParamInfo.lockTime1--;
- }
- break;
- case LimitDose:
- if( setParamInfo.limitDose1 <= 1 )
- {
- setParamInfo.limitDose1 = 90; //2017.3.22 修改极限量为90
- }
- else
- {
- setParamInfo.limitDose1 -= 1;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- /* 按airout键进入排气前的密码 只有在暂停时有效 */
- if( KeyActionFlag.keyAirout == emKeyflagShortPress )//Airout键排气呼叫
- {
- WriteParameterRecord();//设置完成在此保存一下
- // runParamInfo.pwmSetValue = 1000;//用最大转数排气
- realTimeData.airoutValue = 0;
- motorWorkState = MOTOR_WORK_OFF;
- emSysWorkStep = EnterAirout;
- emDisplayPicture = AiroutDisp;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- }
- /* 按PS键进入密码设置界面 */
- /*if( KeyActionFlag.keyPS == emKeyflagShortPress )//密码/静音键
- {
- WriteParameterRecord();//设置完成在此保存一下
- emDisplayPicture = PasswordSetDisp;
- emSysWorkStep = EnterSetPassword;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- }*/
- }
- /*************************************************************************************
- * Function: CntlAiroutPicture
- * Object: 控制排气画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按进入参数设置界面
- * 2、power键长按关机
- * 3、Airout键短按一下进行一次排气,长按时直到松开按键排气结束
- * 4、其它键无效
- **************************************************************************************/
- void CntlAiroutPicture( void )
- {
- realTimeData.stateRun = Airout;
- if( TaskSchedulerFlag.NoActionHintFlag == TASK_FLAG_CLEAR )//从进入此界面开始未操作提示倒计时
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.NoActionHintTimer = THIRTY_MINUTE_TIMER;
- }
-
- /* 按enter键退出排气,进入参数设置 */
- // if( KeyActionFlag.keyPS == emKeyflagShortPress )//返回键
- // {
- // TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // /* 电机停止工作,将电机停止标志置位,运行标志清除,电机工作状态为停止 */
- // TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- // TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- // if( motorWorkState == MOTOR_WORK_OFF )
- // {
- // emSysWorkStep = EnterSetParam;
- // emDisplayPicture = SetParamDisp;
- // setParamInfo.emModifyParam = TotalDose;
- // realTimeData.stateRun = StartWork;//系统运行状态:工作
- // emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- // }
- // }
- // if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- // {
- // emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- // realTimeData.stateRun = Poweroff;//关机发送
- // /* 切断电源,关机 */
- // emDisplayPicture = ClearDisp;
- // emSysWorkStep = EnterPowerOFF;
- // }
- if((( KeyActionFlag.keyAirout == emKeyflagLongPress )||( KeyActionFlag.keyAirout == emKeyflagShortPress ))
- &&(TaskSchedulerFlag.AirOutFlag == TASK_FLAG_CLEAR))//Airout键
- {
- TaskSchedulerFlag.AirOutFlag = TASK_FLAG_SET;//排气过程中按下返回按键
- KeyActionFlag.keyAirout = emKeyflagLongRelease;//长按松开
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- KeyActionFlag.keyAirout = emKeyflagShortRelease;//短按操作释放按键
- motorWorkState = MOTOR_WORK_ON;//按一次就执行一次排气,长按就直到松开排气键结束
- realTimeData.motorSelfTestCount = 0;
- realTimeData.airoutValue = 0;
- realTimeData.stateRun = Airout;
- }
- /**/
- // if(( KeyActionFlag.keyAirout == emKeyflagLongPress )&&(TaskSchedulerFlag.AirOutFlag == TASK_FLAG_CLEAR))//Airout键
- // {
- // TaskSchedulerFlag.AirOutFlag = TASK_FLAG_SET;//排气过程中按下返回按键
- // KeyActionFlag.keyAirout = emKeyflagLongRelease;//长按松开
- // TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // KeyActionFlag.keyAirout = emKeyflagShortRelease;//短按操作释放按键
- // motorWorkState = MOTOR_WORK_ON;//按一次就执行一次排气,长按就直到松开排气键结束
- // realTimeData.motorSelfTestCount = 0;
- // realTimeData.airoutValue = 0;
- // realTimeData.stateRun = Airout;
- // }
- if((realTimeData.airoutValue == 20)||((TaskSchedulerFlag.AirOutFlag == TASK_FLAG_SET)&&(KeyActionFlag.keyAirout == emKeyflagShortPress)))
- {
- TaskSchedulerFlag.AirOutFlag = TASK_FLAG_CLEAR;//排气过程中按下返回按键
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- KeyActionFlag.keyPS = emKeyflagShortRelease;//短按操作释放按键
- emSysWorkStep = EnterSetParam;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emDisplayPicture = SetParamDisp;
- if(SetParametersAgain == 1)//重新设置参数
- {
- setParamInfo.emModifyParam = FirstDose; //首次量
- }
- else
- {
- setParamInfo.emModifyParam = TotalDose; //总量
- }
- realTimeData.stateRun = WaitState;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- }
- /* 进入排气界面未排气时按返回键退出排气,进入参数设置 */
- if(( KeyActionFlag.keyPS == emKeyflagShortPress )&&(TaskSchedulerFlag.AirOutFlag == TASK_FLAG_CLEAR))//返回键
- {
- TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- emSysWorkStep = EnterSetParam;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- emDisplayPicture = SetParamDisp;
- if(SetParametersAgain == 1)//重新设置参数
- {
- setParamInfo.emModifyParam = FirstDose; //首次量
- }
- else
- {
- setParamInfo.emModifyParam = TotalDose; //总量
- }
- realTimeData.stateRun = WaitState;
- }
- // if( KeyActionFlag.keyAirout == emKeyflagShortPress ) //Airout键
- // {
- // TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // KeyActionFlag.keyAirout = emKeyflagShortRelease;//短按操作释放按键
- // motorWorkState = MOTOR_WORK_ON;//按一次就执行一次排气,长按就直到松开排气键结束
- // realTimeData.motorSelfTestCount = 0;
- //// realTimeData.stateRun = Airout;
- // }
- // else if( KeyActionFlag.keyAirout == emKeyflagLongPress )
- // {
- // TaskSchedulerFlag.NoActionHintFlag = TASK_FLAG_CLEAR;//清除未操作提示标志
- // motorWorkState = MOTOR_WORK_ON;//按一次就执行一次排气,长按就直到松开排气键结束
- // realTimeData.motorSelfTestCount = 0;
- //// realTimeData.stateRun = Airout;
- // }
- }
- /*************************************************************************************
- * Function: CntlLockPasswordPicture
- * Object: 控制锁定密码界面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择,直到最后一个密码,正确则进入相应界面,否则到第一个密码处
- * 2、加减键短按选项数字加减
- * 3、uint8_t tempSetPassword[3];临时密码存储
- * 4、uint8_t tempUnlockState = 0;//解锁状态,成功 or 失败
- * 5、暂停按键都能作为返回按键
- **************************************************************************************/
- void CntlLockPasswordPicture( void )
- {
- uint8_t tempSetPassword[3];
- uint8_t i;
- uint8_t tempUnlockState = 0;//解锁状态,成功 or 失败
- /* 按enter键进入密码对比,正确进入下一界面 */
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;//只要有按键操作就清除跳转时间
- switch( modifyStep )
- {
- case 1:
- modifyStep = 2;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- break;
- case 2:
- modifyStep = 3;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- break;
- case 3:
- tempSetPassword[0] = SYS_PASSWORD_DEFAULT / 100;
- tempSetPassword[1] = ( SYS_PASSWORD_DEFAULT % 100 ) / 10;
- tempSetPassword[2] = SYS_PASSWORD_DEFAULT % 10;
- for( i = 0 ; i < 3 ; i++ )//默认密码对比
- {
- if( verifyPasswordBuf[i] != tempSetPassword[i] )
- {
- tempUnlockState = 1;
- break;
- }
- }
- if( tempUnlockState == 1 )//如果默认密码不对,与设置密码对比
- {
- for( i = 0 ; i < 3 ; i++ )
- {
- if( verifyPasswordBuf[i] != setPasswordBuf[i] )
- {
- tempUnlockState = 2;
- break;
- }
- else
- {
- tempUnlockState = 0;
- }
- }
- }
- if( tempUnlockState == 0 )//密码匹配跳入相应界面
- {
- modifyStep = 1;
- TaskSchedulerFlag.unlockPasswordFlag = TASK_FLAG_SET;
- if(emLockPasswordStep == EnterPowerOFF)
- {
- realTimeData.stateRun = Poweroff;
- }
- else
- {
- realTimeData.stateRun = Pause;
- }
- emSysWorkStep = emLockPasswordStep;
- emDisplayPicture = emLockPassowrdPicture;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }
- else
- {
- modifyStep = 3;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- TaskSchedulerFlag.unlockPasswordFlag = TASK_FLAG_CLEAR;
- }
- break;
- default:break;
- }
- }
- if(( KeyActionFlag.keyPS == emKeyflagShortPress)||( KeyActionFlag.keyRunPause == emKeyflagShortPress))//返回键//暂停按键都能作为返回按键
- {
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;//只要有按键操作就清除跳转时间
- switch( modifyStep )
- {
- case 3:
- modifyStep = 2;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- break;
- case 2:
- modifyStep = 1;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- break;
- case 1:
- modifyStep = 1;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- break;
- default:break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;//只要有按键操作就清除跳转时间
- switch( modifyStep )//选项加1
- {
- case 1: case 2: case 3:
- if( verifyPasswordBuf[modifyStep-1] < 9 )
- {
- verifyPasswordBuf[modifyStep-1]++;
- }
- else
- {
- verifyPasswordBuf[modifyStep-1] = 0;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;//只要有按键操作就清除跳转时间
- switch( modifyStep )//选项减1
- {
- case 1: case 2: case 3:
- if( verifyPasswordBuf[modifyStep-1] > 0 )
- {
- verifyPasswordBuf[modifyStep-1]--;
- }
- else
- {
- verifyPasswordBuf[modifyStep-1] = 9;
- }
- break;
- default:break;
- }
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- }
- }
- /*************************************************************************************
- * Function: CntlRunFirstDosePicture
- * Object: 控制运行-首次量界面
- * 输入: 无
- * 输出: 无
- * 备注: 1、当注射完首次量后进入运行主页面
- * 2、关机时需要密码,如果密码匹配则可以进行关机操作
- * 3、if( realTimeData.firstDose == 0 )//判断首次量是否输注完毕
- * 4、在非锁屏的情况下,运行/停止键进行输注运行或停止输注操作
- * 5、暂停情况下可关机
- * 6、暂停情况下长按enter键进入参数设置界面
- * 7、加减键同时按下解锁,加锁
- * 8、长按airout键用来呼叫
- * 9、if( realTimeData.inputDose >= runParamInfo.totalDose )//判断是否输液完毕
- **************************************************************************************/
- void CntlRunFirstDosePicture( void )
- {
- uint8_t InputTotalDoseBuff[4];
- if( TaskSchedulerFlag.unlockPasswordFlag == TASK_FLAG_SET )//密码解锁成功则进入关机
- {
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
- if( realTimeData.firstDose == 0 )//判断首次量是否输注完毕
- {
- LimitBeginsTime=1;
- realTimeData.stateRun = MainRun;
- emDisplayPicture = RunMainDisp;
- emSysWorkStep = EnterRunMain;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- if(TaskSchedulerFlag.StartToRunDontSend == SendSuceed)//
- {
- RunToLorawawn_flag=1; //首次量输注完毕后,置位标志,立即发送数据
- }
- }
- else
- {
- LimitBeginsTime=0;
- if( TaskSchedulerFlag.lockDispFlag == TASK_FLAG_CLEAR )//在非锁屏情况下按键好使
- {
- /*if(realTimeData.stateRun == Pause)
- {
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键 运行过程中直接关机需要输入密码
- {
- KeyActionFlag.keyPower = emKeyflagNonePress;
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- realTimeData.stateRun = Pause;//暂停发送
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
-
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp; //进入密码界面
- emLockPasswordStep = EnterPowerOFF;
- emLockPassowrdPicture = ClearDisp; //密码成功关机
- emLockPasswordFailStep = EnterRunFirstDose;
- emLockPassowrdFailPicture = RunFirstDoseDisp;//密码解除失败返回原界面
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- modifyStep = 1;
- return;
- }
- else
- {
- realTimeData.stateRun = Poweroff;//关机发送
- // 切断电源,关机
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
-
- }
- }*/
-
- if( KeyActionFlag.keyRunPause == emKeyflagLongPress )//运行/停止键
- {
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- if( realTimeData.stateRun == FirstRun )
- {
- /* 即使暂停也不是按下暂停键就马上电机停止工作,而是要把本次输注完成再暂停,所以不能马上将电机工作状态改为停止 */
- //motorWorkState = MOTOR_WORK_OFF;//电机停止触发
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- emDisplayPicture = RunFirstDoseDisp;
- realTimeData.stateRun = Pause;//暂停发送
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- }
- }
- // else if((KeyActionFlag.keyPS == emKeyflagShortPress) || (KeyActionFlag.keyRunPause == emKeyflagShortPress))//返回
- else if(KeyActionFlag.keyRunPause == emKeyflagShortPress)
- {
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- if( realTimeData.stateRun == Pause )
- {
- StartToRun_flag=1; //当按下运行按键的时候,置位该标志
- ElectStartCount=0;
- start_flag = 1; //当按下运行按键时,置位该标志
- self_adaption_Pressure=0;//运行时,清除自适应压力值
-
- self_adaption_cont=0;
- self_adaption_flag=0; //自适应压力参数处理完成标志,用于后面压力报警判断
-
- InfusionControl( FirstDoseMode );
- // runParamInfo.pwmSetValue = 1000;//200;
- realTimeData.motorSelfTestCount = 0;
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
- emDisplayPicture = RunFirstDoseDisp;
- emSysWorkStep = EnterRunFirstDose;
- realTimeData.stateRun = FirstRun;//运行发送
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- }
- }
-
- if( realTimeData.stateRun == Pause )//只有在暂停情况下可用power键
- {
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- KeyActionFlag.keyPower = emKeyflagNonePress;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
-
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
-
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- emLockPasswordStep = EnterPowerOFF;
- emLockPassowrdPicture = ClearDisp;
- emLockPasswordFailStep = EnterRunFirstDose;
- emLockPassowrdFailPicture = RunFirstDoseDisp;
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- modifyStep = 1;
- return;
- }
- else
- {
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
- }
-
- if( KeyActionFlag.keyEnter == emKeyflagLongPress )//enter键
- {
- SetParametersAgain = 1; //运行过程中重新设置参数标志
- setParamInfo.emModifyParam = FirstDose;//重新设置参数,标志直接跳到首次量
- KeyActionFlag.keyEnter = emKeyflagNonePress;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
-
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- emLockPasswordStep = EnterSetParam;
- emLockPassowrdPicture = SetParamDisp;
- emLockPasswordFailStep = EnterRunFirstDose;
- emLockPassowrdFailPicture = RunFirstDoseDisp;
- realTimeData.stateRun = Pause;
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- return;
- }
- else
- {
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- realTimeData.stateRun = Pause;
- }
- }
- }
-
- if( ( MoreKeyActionFlag.keyPlus == emKeyflagShortPress ) && ( MoreKeyActionFlag.keyMinus == emKeyflagShortPress ) && ( GPIO_ReadInputDataBit( KEY_GPIO_PORT,MINUS_GPIO_PIN ) != 0 ) )
- {
- MoreKeyActionFlag.keyPlus = emKeyflagNonePress;
- MoreKeyActionFlag.keyMinus = emKeyflagNonePress;
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_SET;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- /*emDisplayPicture = RunFirstDoseDisp;*/
- }
- }
- else//在不解键盘锁的情况下可操作的键,同时短按加/减键解键盘
- {
- if( ( MoreKeyActionFlag.keyPlus == emKeyflagShortPress ) && ( MoreKeyActionFlag.keyMinus == emKeyflagShortPress ) && ( GPIO_ReadInputDataBit( KEY_GPIO_PORT,MINUS_GPIO_PIN ) != 0 ) )
- {
- MoreKeyActionFlag.keyPlus = emKeyflagNonePress;
- MoreKeyActionFlag.keyMinus = emKeyflagNonePress;
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- /*emDisplayPicture = RunFirstDoseDisp;*/
- }
- }
- }
- /* 按airout键进入呼叫功能,在任何情况下都可呼叫 */
- /* if( KeyActionFlag.keyAirout == emKeyflagLongPress )//Airout键
- {
- //airout键用来呼叫
- KeyActionFlag.keyAirout = emKeyflagLongRelease;//长按释放按键
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;//清锁屏标志
- if( TaskSchedulerFlag.callFunctionFlag == TASK_FLAG_CLEAR )
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_CLEAR;
- }
- // TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- emDisplayPicture = RunFirstDoseDisp;
-
- // sysPromptToneCounts = 255;//蜂鸣器-计数
- // sysPromptToneType = WarringTone;//蜂鸣器-PCA未到追加时间报警
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- }*/
-
- /* 当已输入量 >= 总量时输注完毕 */
- if( realTimeData.inputDose >= runParamInfo.totalDose )//判断是否输液完毕
- {
- /* 电机停止工作,将电机停止标志置位,运行标志清除,电机工作状态为停止 */
- motorWorkState = MOTOR_WORK_OFF;
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
-
- // sysPromptToneCounts = 0;//蜂鸣器-计数
- SysHornToneType = InfusionTone;
- // realTimeData.stateRun = Finsh;
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
-
- emSysWorkStep = EnterTransfuseOver;
- emDisplayPicture = TransfuseOverDisp;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;//置位蜂鸣器
- // SpeakerCtl( DRIVER_OFF );
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- // if(Input_End==0)
- // {
- // Input_End=1; //输液结束,置位该标志,20170418
- // historyRefreshFlag=0;
- // }
- }
- }
- /*************************************************************************************
- * Function: CntlRunMainPicture
- * Object: 控制运行主界面
- * 输入: 无
- * 输出: 无
- * 备注: 1、当注射完总量后进入输注完成界面
- * 2、关机时需要密码,如果密码匹配则可以进行关机操作
- * 3、if( realTimeData.inputDose >= runParamInfo.totalDose )//判断是否输液完毕
- * 4、在非锁屏的情况下,运行/停止键进行输注运行或停止输注操作
- * 5、暂停情况下可关机
- * 6、暂停情况下长按enter键进入参数设置界面
- * 7、非暂停情况下长按enter键进入随访界面
- * 7、加减键同时按下解锁,加锁
- * 8、长按airout键用来呼叫
- * 9、非暂停情况下按PCA可进行PCA模式输注
- * 10、在PCA模式下再次按下PCA键则计为一次无效输注,累计5次无效输注则上传镇痛效果不好报警
- * 11、if( realTimeData.superaddition == 0 )//追加量每次都重新计数,当追加量降为0时PCA停止
- * 12、PCA模式输注完成,则开始计算锁时,TaskSchedulerTimer.pcaLockTimer = runParamInfo.lockTime * 60000;
- * 13、密码/静音键短按可调出压力显示界面,3秒后返回输注界面
- **************************************************************************************/
- void CntlRunMainPicture( void )
- {
- uint8_t InputTotalDoseBuff[4];
- if( TaskSchedulerFlag.unlockPasswordFlag == TASK_FLAG_SET )//密码解锁成功则进入关机
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
- /*镇痛效果不足判断机制*/
- if(sysAlarmFlag.Zhentongxiaoguo != ALARM_ON)
- {
- if(pca_count>=3)//镇痛效果不足判断机制
- {
- if(TaskSchedulerFlag.PCAOneTimeFlag==TASK_FLAG_SET)
- {
- sysAlarmFlag.Zhentongxiaoguo = ALARM_CONTINUE;
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- TaskSchedulerFlag.PCAOneTimeFlag=TASK_FLAG_WAIT;
- if( sysAlarmFlag.Zhentongxiaoguo == ALARM_CONTINUE )//镇痛效果
- {
- sysAlarmFlag.Zhentongxiaoguo = ALARM_ON;
- if(TaskSchedulerFlag.StartToRunDontSend == SendSuceed)//
- {
- RunToLorawawn_flag=1; //首次量输注完毕后,置位标志,立即发送数据
- }
- }
- pca_count = 0;
- }
- }
- else if(TaskSchedulerFlag.PCAOneTimeFlag == TASK_FLAG_CLEAR)
- {
- if(pca_count<3)
- {
- TaskSchedulerTimer.pcaOneHourTimer=ONE_HOUR_TIMER;
- TaskSchedulerFlag.PCAOneTimeFlag=TASK_FLAG_OVERTIME;
- pca_count = 0;
- }
- }
- }
- if( TaskSchedulerFlag.lockDispFlag == TASK_FLAG_CLEAR )//在非锁屏情况下按键好使
- {
- if( KeyActionFlag.keyRunPause == emKeyflagLongPress )//运行/停止键
- {
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- if( realTimeData.stateRun == MainRun )
- {
- emDisplayPicture = RunMainDisp;
- realTimeData.stateRun = Pause;//暂停发送
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- /* 即使暂停也不是按下暂停键就马上电机停止工作,而是要把本次输注完成再暂停,所以不能马上将电机工作状态改为停止 */
- //motorWorkState = MOTOR_WORK_OFF;//电机停止触发
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- }
- else if( realTimeData.stateRun == PCARun )
- {
- emDisplayPicture = RunMainDisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Pause;//暂停发送
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- realTimeData.superaddition = 0;//表明PCA输注完毕
- /* 即使暂停也不是按下暂停键就马上电机停止工作,而是要把本次输注完成再暂停,所以不能马上将电机工作状态改为停止 */
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- }
- }
- else if((KeyActionFlag.keyPS == emKeyflagShortPress) || (KeyActionFlag.keyRunPause == emKeyflagShortPress))//返回按键返回输注界面
- {
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- if( realTimeData.stateRun == Pause )
- {
- /*
- (void) memset (&PressureF1_bf, 0, sizeof(PressureF1_bf)); //在报警解除的时候,将pressureF1_bf数据清零20170506
- (void) memset (&PressureF1_bf2, 0, sizeof(PressureF1_bf2)); //在报警解除的时候,将pressureF1_bf2数据清零20170506
- Pressurebf_Cont=0; //在报警解除的时候,将Pressurebf_Cont数据清零20170506
- average_Pressure_bf=0; //在报警解除的时候,将Pressurebf_Cont数据清零20170506
- */
- StartToRun_flag=1; //当按下运行按键的时候,置位该标志
- ElectStartCount=0;
- start_flag = 1; //当按下运行按键时,置位该标志
- self_adaption_Pressure=0;//运行时,清除自适应压力值
-
- // self_adaption_cont=0;
- // self_adaption_flag=0; //自适应压力参数处理完成标志,用于后面压力报警判断
-
- // InfusionControl( ContinueMode );
- // runParamInfo.pwmSetValue = 1000;//200;
- realTimeData.motorSelfTestCount = 0;
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
- // emDisplayPicture = RunMainDisp;
- // emSysWorkStep = EnterRunMain;
- // realTimeData.stateRun = MainRun;//运行发送
- if((PCADontRun_Flag == 1)||(realTimeData.superaddition != 0))
- {
- PCADontRun_Flag = 0;
- infusionMode = SuperadditionMode;
- InfusionControl( SuperadditionMode );
- realTimeData.stateRun = PCARun;//运行发送
- }
- else
- {
- InfusionControl( ContinueMode );
- emDisplayPicture = RunMainDisp;
- emSysWorkStep = EnterRunMain;
- realTimeData.stateRun = MainRun;//运行发送
- }
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- }
- }
-
- if( ( MoreKeyActionFlag.keyPlus == emKeyflagShortPress ) && ( MoreKeyActionFlag.keyMinus == emKeyflagShortPress ) && ( GPIO_ReadInputDataBit( KEY_GPIO_PORT,MINUS_GPIO_PIN ) != 0 ) )
- {
-
- MoreKeyActionFlag.keyPlus = emKeyflagNonePress;
- MoreKeyActionFlag.keyMinus = emKeyflagNonePress;
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_SET;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- /*if( emCurrentPicture == RunMainDisp )
- {
- emDisplayPicture = RunMainDisp;
- }
- else if( emCurrentPicture == RunPCADisp )
- {
- emDisplayPicture = RunPCADisp;
- }*/
- /*if(( realTimeData.stateRun == PCARun )||(realTimeData.superaddition != 0))
- {
- emDisplayPicture = RunPCADisp;
- }
- else
- {
- emDisplayPicture = RunMainDisp;
- }*/
- }
- else if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) && ( KeyActionFlag.keyMinus == emKeyflagNonePress ) )
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- /*if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )
- {
- emDisplayPicture = RunPCADisp;
- }
- else
- {
- emDisplayPicture = RunMainDisp;
- }*/
- if( TaskSchedulerFlag.pcaCountDispFlag == TASK_FLAG_CLEAR )//有效变无效,无效数值要闪烁,闪10下
- {
- TaskSchedulerFlag.pcaCountDispFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_SET;//LCD闪烁置位
- TaskSchedulerFlag.lcdFlashFlag1 = TASK_FLAG_SET;//允许PCA有无效次数刷新标志
- TaskSchedulerTimer.pcaCountsDispTimer = TEN_SECOND_TIMER;//无效次数显示计时
- }
- else//无效变有效,清除数值闪烁
- {
- TaskSchedulerFlag.pcaCountDispFlag = TASK_FLAG_CLEAR;
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_CLEAR;//LCD闪烁清除
- TaskSchedulerTimer.pcaCountsDispTimer = TEN_SECOND_TIMER;//无效次数显示计时
- TaskSchedulerFlag.lcdFlashFlag1 = TASK_FLAG_SET;//允许PCA有无效次数刷新标志
- }
- }
-
- /* 只有在停止状态下enter、power键有效 */
- if( realTimeData.stateRun == Pause )
- {
- if( KeyActionFlag.keyEnter == emKeyflagLongPress )//enter键
- {
- SetParametersAgain = 1; //运行过程中重新设置参数标志
- setParamInfo.emModifyParam = FirstDose;//重新设置参数,标志直接跳到首次量
- KeyActionFlag.keyEnter = emKeyflagNonePress;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
-
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- emLockPasswordStep = EnterSetParam;
- emLockPassowrdPicture = SetParamDisp;
- if(realTimeData.superaddition != 0)
- {
- emLockPasswordFailStep = EnterRunMain;
- emLockPassowrdFailPicture = RunPCADisp;
- }
- else
- {
- emLockPasswordFailStep = EnterRunMain;
- emLockPassowrdFailPicture = RunMainDisp;
- }
- realTimeData.stateRun = Pause;
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- return;
- }
- else
- {
- emSysWorkStep = EnterSetParam;
- emDisplayPicture = SetParamDisp;
- realTimeData.stateRun = Pause;
- }
- }
-
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- KeyActionFlag.keyPower = emKeyflagNonePress;
-
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
-
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- emLockPasswordStep = EnterPowerOFF;
- emLockPassowrdPicture = ClearDisp;
- if(realTimeData.superaddition != 0)
- {
- emLockPasswordFailStep = EnterRunMain;
- emLockPassowrdFailPicture = RunPCADisp;
- }
- else
- {
- emLockPasswordFailStep = EnterRunMain;
- emLockPassowrdFailPicture = RunMainDisp;
- }
- realTimeData.stateRun = Pause;
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- modifyStep = 1;
- return;
- }
- else
- {
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
- }
- }
-
- else
- {
- /* 在非暂停情况下长按enter键进入随访评价 */
- // if( EngineeringModeValue.evaluateState == ENGINEERINGMODE_ON )
- {
- if(( KeyActionFlag.keyEnter == emKeyflagLongPress )&&(realTimeData.stateRun != PCARun ))//enter键,PCA运行期间不能进入镇痛评价界面
- {
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;//清锁屏标志
- // TaskSchedulerFlag.pcaLockFlag = TASK_FLAG_SET;
- //
- // realTimeData.lockTime = runParamInfo.lockTime;
- // TaskSchedulerTimer.pcaLockTimer = runParamInfo.lockTime * 60000;
- // TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_CLEAR;
- // realTimeData.superaddition = 0;
-
- /* 即使暂停也不是按下暂停键就马上电机停止工作,而是要把本次输注完成再暂停,所以不能马上将电机工作状态改为停止 */
- // motorWorkState = MOTOR_WORK_OFF;//电机停止触发
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- realTimeData.stateRun = Pause;//暂停发送
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
-
- emSysWorkStep = EnterEvaluateTransfuse;
- emDisplayPicture = EvaluateTransfuseDisp;
- emEvaluateTransfuseChoose = Pruritus;//随访评价选项
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }
- }
- }
- }
- else//在不解键盘锁的情况下可操作的键,同时短按加/减键解键盘
- {
- if( ( MoreKeyActionFlag.keyPlus == emKeyflagShortPress ) && ( MoreKeyActionFlag.keyMinus == emKeyflagShortPress ) && ( GPIO_ReadInputDataBit( KEY_GPIO_PORT,MINUS_GPIO_PIN ) != 0 ) )
- {
- MoreKeyActionFlag.keyPlus = emKeyflagNonePress;
- MoreKeyActionFlag.keyMinus = emKeyflagNonePress;
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- // if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )
- // {
- // emDisplayPicture = RunPCADisp;
- // }
- // else
- // {
- // emDisplayPicture = RunMainDisp;
- // }
- if( emCurrentPicture == RunMainDisp )
- {
- emDisplayPicture = RunMainDisp;
- }
- else if( emCurrentPicture == RunPCADisp )
- {
- emDisplayPicture = RunPCADisp;
- }
- }
- }
-
- if( realTimeData.stateRun != Pause )
- {
- if( KeyActionFlag.keyPCA == emKeyflagShortPress )//PCA键
- {
- KeyActionFlag.keyPCA = emKeyflagNonePress;
- /* 进入追加模式,此时如果正在锁定时间内则无效PCA计一次,否则进入PCA模式 */
- if( ( TaskSchedulerFlag.pcaLockFlag != TASK_FLAG_SET ) && ( TaskSchedulerFlag.SuperadditionFlag != TASK_FLAG_SET ) && ( runParamInfo.superaddition != 0 ) )
- {
- TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_SET;
- InfusionControl( SuperadditionMode );
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
-
- // sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
-
- emDisplayPicture = RunPCADisp;
- emPictureRunState = FirstEnter;
- realTimeData.stateRun = PCARun;
- realTimeData.validCount++;//追加量有效次数加1
- realTimeData.superaddition = runParamInfo.superaddition;
- if(realTimeData.validCount == 1)
- {
- TaskSchedulerFlag.PCAOneTimeFlag=TASK_FLAG_SET;
- }
- if( sysAlarmFlag.Zhentongxiaoguo != ALARM_ON )//镇痛效果
- {
- pca_count++; //阵痛不足次数加1
- }
- else
- {
- pca_count = 0;
- }
- if( TaskSchedulerFlag.PCAOneTimeFlag == TASK_FLAG_OVERTIME)//pca一小时任务超时
- {
- TaskSchedulerFlag.PCAOneTimeFlag=TASK_FLAG_SET;
- }
- }
- else if ( TaskSchedulerFlag.pcaLockFlag == TASK_FLAG_SET )//在PCA模式下,并且在PCA锁时内,无效次数才能开始计数
- {
- realTimeData.invalidCount++;
- // TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- /* if( realTimeData.invalidCount >= 5 )//镇痛效果,无效次数>5报警
- {
- sysAlarmFlag.Zhentongxiaoguo = ALARM_CONTINUE;
- }
- if( sysAlarmFlag.Zhentongxiaoguo == ALARM_CONTINUE )//镇痛效果
- {
- sysAlarmFlag.Zhentongxiaoguo = ALARM_ON;
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- }
- sysPromptToneCounts = 255;//蜂鸣器-计数
- SysHornToneType = Sound_prepore;//蜂鸣器-PCA未到追加时间报警
- */
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- if( TaskSchedulerFlag.pcaLockFlag == TASK_FLAG_SET )
- {
- TaskSchedulerFlag.pcaLockTimeFlag = TASK_FLAG_SET;
- // TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.PCATimerFlashFlag1 = TASK_FLAG_SET;
- TaskSchedulerTimer.pcaLockTimeDispTimer = FIVE_SECOND_TIMER;//无效次数显示计时
- }
- if( realTimeData.stateRun == PCARun )
- {
- emDisplayPicture = RunPCADisp;
- // if( TaskSchedulerFlag.SuperadditionFlag == TASK_FLAG_SET )
- {
- TaskSchedulerFlag.pcaCountDispFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_SET;//LCD闪烁置位
- TaskSchedulerTimer.pcaCountsDispTimer = TEN_SECOND_TIMER;//无效次数显示计时
- }
- }
- else
- {
- emDisplayPicture = RunMainDisp;
- }
- }
- }
- }
- /* 按airout键进入呼叫功能,在任何情况下都可呼叫 */
- /* if( KeyActionFlag.keyAirout == emKeyflagLongPress )//Airout键
- {
- //airout键用来呼叫
- KeyActionFlag.keyAirout = emKeyflagLongRelease;//长按释放按键
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;//清锁屏标志
- if( TaskSchedulerFlag.callFunctionFlag == TASK_FLAG_CLEAR )
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_CLEAR;
- }
- // TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )
- {
- emDisplayPicture = RunPCADisp;
- }
- else
- {
- emDisplayPicture = RunMainDisp;
- }
-
- // sysPromptToneCounts = 255;//蜂鸣器-计数
- // sysPromptToneType = WarringTone;//蜂鸣器-PCA未到追加时间报警
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- }*/
- /* else if( ( KeyActionFlag.keyPS == emKeyflagShortPress ) && ( KeyActionFlag.keyPCA == emKeyflagNonePress ) )//密码/静音键
- {
- // TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//有键盘操作清锁屏时间
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_S_JUMP;//压力界面自动跳转计时
- emSysWorkStep = EnterRunPressure;
- emDisplayPicture = RunPressureDisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- } */
- if( TaskSchedulerFlag.SuperadditionFlag == TASK_FLAG_SET )//追加量工作模式
- {
- if( realTimeData.superaddition == 0 )//追加量每次都重新计数,当追加量降为0时PCA停止
- {
- TaskSchedulerFlag.pcaLockFlag = TASK_FLAG_SET;
- realTimeData.lockTime = runParamInfo.lockTime;
- TaskSchedulerTimer.pcaLockTimer = runParamInfo.lockTime * 60000;
- TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_CLEAR;
- InfusionControl( ContinueMode );//转为持续量输入,追加量输入完毕后等待持续量时间后进入持续量输入
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
- emDisplayPicture = RunMainDisp;
- emPictureRunState = FirstEnter;
- if(TaskSchedulerFlag.StartToRunDontSend == SendSuceed)//
- {
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- RunToLorawawn_flag=1; //PCA量运行完时,置位标志,立即发送数据
- }
- if( (realTimeData.stateRun == PCARun )||(AppendComplete==1))//当前状态为PCA运行时进入主运行
- {
- realTimeData.stateRun = MainRun;
- AppendComplete=0;
- }
- else//否则为暂停状态
- {
- realTimeData.stateRun = Pause;
- }
- }
- }
- else if( TaskSchedulerFlag.SuperadditionFlag == TASK_FLAG_CLEAR )//持续量工作模式
- {
- //在暂停模式下PCA受暂停控制,所以PCA执行完成后要在这将标志位置位,防止在暂停模式下持续输入还在运行
- if( realTimeData.stateRun == Pause )
- {
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- }
- else
- {
- InfusionControl( ContinueMode );
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;
- TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_WAIT;
- }
- }
- /* 当已输入量 >= 总量时输注完毕 */
- if( realTimeData.inputDose >= runParamInfo.totalDose )//判断是否输液完毕
- {
- /* 电机停止工作,将电机停止标志置位,运行标志清除,电机工作状态为停止 */
- motorWorkState = MOTOR_WORK_OFF;
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- // sysPromptToneCounts = 0;//蜂鸣器-计数
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- SysHornToneType = InfusionTone;
- // realTimeData.stateRun = Finsh;
-
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
-
- emSysWorkStep = EnterTransfuseOver;
- emDisplayPicture = TransfuseOverDisp;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;//置位蜂鸣器
- // SpeakerCtl( DRIVER_OFF );
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- // if(Input_End==0)
- // {
- // Input_End=1; //输液结束,置位该标志,20170418
- // historyRefreshFlag=0;
- // }
- }
- }
- /*************************************************************************************
- * Function: CntlTransfuseOverPicture
- * Object: 控制输液完毕界面
- * 输入: 无
- * 输出: 无
- * 备注: 1、当注射完总量后进入输注完毕页面
- * 2、长按enter键进入随访界面
- * 3、长按密码/静音键进入静音状态
- * 4、长按airout键用来呼叫
- * 5、长按关机键关机
- **************************************************************************************/
- void CntlTransfuseOverPicture( void )
- {
- if( ( realTimeData.stateRun == FirstRun ) || ( realTimeData.stateRun == MainRun ) || ( realTimeData.stateRun == PCARun )||( realTimeData.stateRun == Pause ))
- {
- realTimeData.stateRun = Finsh;
- InpudingComplete = 1;
- if(InpudingComplete ==1)
- {
- InpudingComplete = 0;
- if(TaskSchedulerFlag.StartToRunDontSend == SendSuceed)
- {
- RunToLorawawn();//调用发送数据包
- }
- }
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- sysAlarmFlag.InputEnding = ALARM_OFF;
- sysAlarmFlag.InputEnd = ALARM_ON;
- if( historyRefreshFlag == 0 )
- {
-
- // if(Input_End==0)
- {
- HistoryQtyAdd();
- }
-
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- //alarmRecord.alarmType = 8;//输注结束
- }
- alarmRecord.alarmTimeMonth = displayTimeBuf.month;
- alarmRecord.alarmTimeDate = displayTimeBuf.date;
- alarmRecord.alarmTimeHour = displayTimeBuf.hour;
- alarmRecord.alarmTimeMinute = displayTimeBuf.minute;
- alarmRecord.alarmType = 8;//输注结束
- WriteHistoryRecord();
- }
-
- // if( EngineeringModeValue.evaluateState == ENGINEERINGMODE_ON )
- {
- /* 长按enter键进入随访评价 */
- if( KeyActionFlag.keyEnter == emKeyflagLongPress )//enter键
- {
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//清除蜂鸣器响
- emSysWorkStep = EnterEvaluateTransfuse;
- emDisplayPicture = EvaluateTransfuseDisp;
- emEvaluateTransfuseChoose = Pruritus;//随访评价选项
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- SysHornToneType = SoundOff;//关闭报警声音
- if( sysAlarmFlag.VoltLowest == ALARM_PREPARE )//电池电量低
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- }
- else
- {
- Y_LED_OFF;//黄色LED关闭
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;
- }
- }
- }
-
- // if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- // {
- // if( historyRefreshFlag == 0 )
- // {
- // historyRecordQTY++;
- // WriteHistoryRecordQTY();
- // historyRefreshFlag = 1;
- // }
- // WriteHistoryRecord();
- // emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- // realTimeData.stateRun = Poweroff;//关机发送
- // /* 切断电源,关机 */
- // emDisplayPicture = ClearDisp;
- // emSysWorkStep = EnterPowerOFF;
- // }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- WriteHistoryRecord();
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- TaskSchedulerTimer.rtdXmitTimer = THREE_MSEC_TIMER;//准备快速发送实时数据
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- // speakerWorkStep = emSpeakerNoneWork;
- sysPromptToneType=SoundOff;
-
- // sysAlarmFlag.VoltLowest = ALARM_OFF;
- // LcdFlicker_Flag = TASK_FLAG_CLEAR;
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- return;
-
- }
- /* 按PS静音 */
- // if( KeyActionFlag.keyPS == emKeyflagShortPress )//密码/静音键
- // {
- // KeyActionFlag.keyPS = emKeyflagNonePress;
- //// TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- //// TaskSchedulerFlag.silenceFlag = TASK_FLAG_SET;//静音标志
- //// //TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- //// //TaskSchedulerTimer.alarmLCDFlashTimer = 0;
- // emDisplayPicture = TransfuseOverDisp;
- // if(TaskSchedulerFlag.silenceFlag == TASK_FLAG_CLEAR)
- // {
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- // TaskSchedulerFlag.silenceFlag = TASK_FLAG_SET;//静音标志
- // }
- // else if(TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET)
- // {
- // TaskSchedulerFlag.silenceFlag = TASK_FLAG_CLEAR;//静音标志
- // DrawSilenceDisplay();//静音
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- // speakerWorkStep = emSpeakerNoneWork;
- // sysPromptToneType=InfusionTone;//静音回复后,之前的状态回复
- // }
- // }
-
- /* 按airout键进入呼叫功能,在任何情况下都可呼叫 */
- /*if( KeyActionFlag.keyAirout == emKeyflagLongPress )//Airout键
- {
- //airout键用来呼叫
- KeyActionFlag.keyAirout = emKeyflagLongRelease;//长按释放按键
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;//清锁屏时间
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_CLEAR;//清锁屏标志
- if( TaskSchedulerFlag.callFunctionFlag == TASK_FLAG_CLEAR )
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.callFunctionFlag = TASK_FLAG_CLEAR;
- }
- // TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- emDisplayPicture = TransfuseOverDisp;
- // SysHornToneType = WarringTone;//蜂鸣器-PCA未到追加时间报警
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- }*/
- }
- /*************************************************************************************
- * Function: CntlEvaluateTransfusePicture
- * Object: 控制随访画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择
- * 2、运行停止键短按进行前一项选择
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- **************************************************************************************/
- void CntlEvaluateTransfusePicture( void )
- {
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case Pruritus://瘙痒
- emEvaluateTransfuseChoose = RASS;
- break;
- case RASS://镇静评分
- emEvaluateTransfuseChoose = PONV;
- break;
- case PONV://恶心呕吐
- emEvaluateTransfuseChoose = LimbMyodynamia;
- break;
- case LimbMyodynamia://四肢肌力
- emEvaluateTransfuseChoose = PainEvaluate;
- break;
- case PainEvaluate://疼痛评价
- emEvaluateTransfuseChoose = VerifyEvaluate;
- break;
- case VerifyEvaluate://确认评价
- emEvaluateTransfuseChoose = VerifyEvaluate;
- break;
- default:break;
- }
- emSysWorkStep = EnterEvaluateTransfuse;
- emDisplayPicture = EvaluateTransfuseDisp;
- }
- if(( KeyActionFlag.keyRunPause == emKeyflagShortPress)||(KeyActionFlag.keyPS == emKeyflagShortPress) )//运行/停止键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case Pruritus://瘙痒
- emEvaluateTransfuseChoose = Pruritus;
- break;
- case RASS://镇静评分
- emEvaluateTransfuseChoose = Pruritus;
- break;
- case PONV://恶心呕吐
- emEvaluateTransfuseChoose = RASS;
- break;
- case LimbMyodynamia://四肢肌力
- emEvaluateTransfuseChoose = PONV;
- break;
- case PainEvaluate://疼痛评价
- emEvaluateTransfuseChoose = LimbMyodynamia;
- break;
- case VerifyEvaluate://确认评价
- emEvaluateTransfuseChoose = PainEvaluate;
- break;
- default:break;
- }
- emSysWorkStep = EnterEvaluateTransfuse;
- emDisplayPicture = EvaluateTransfuseDisp;
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case Pruritus://瘙痒 0~3
- if( evaluateTransfuseValue.pruritus >= 3 )
- {
- evaluateTransfuseValue.pruritus = 0;
- }
- else
- {
- evaluateTransfuseValue.pruritus++;
- }
- emDisplayPicture = EvaluateTransfuseDisp;
- break;
- case RASS://镇静评分 0~2
- if( evaluateTransfuseValue.RASS >= 2 )
- {
- evaluateTransfuseValue.RASS = 0;
- }
- else
- {
- evaluateTransfuseValue.RASS++;
- }
- emDisplayPicture = EvaluateTransfuseDisp;
- break;
- case PONV://恶心呕吐 0~2
- if( evaluateTransfuseValue.PONV >= 2 )
- {
- evaluateTransfuseValue.PONV = 0;
- }
- else
- {
- evaluateTransfuseValue.PONV++;
- }
- emDisplayPicture = EvaluateTransfuseDisp;
- break;
- case LimbMyodynamia://四肢肌力
- emEvaluateTransfuseChoose = LeftArm;
- emSysWorkStep = EnterLimbMyodynamia;
- emDisplayPicture = LimbMyodynamiaDisp;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- break;
- case PainEvaluate://疼痛评价
- emEvaluateTransfuseChoose = Static;
- emSysWorkStep = EnterEvaluatePain;
- emDisplayPicture = EvaluatePainDisp;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- break;
- case VerifyEvaluate://确认评价
- emEvaluateTransfuseChoose = Valuer;
- emSysWorkStep = EnterEvaluateVerify;
- emDisplayPicture = EvaluateUploadEnterDisp;
- modifyStep = 1;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- break;
- default:
- emEvaluateTransfuseChoose = Pruritus;
- emDisplayPicture = EvaluateTransfuseDisp;
- break;
- }
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case Pruritus://瘙痒 0~3
- if( evaluateTransfuseValue.pruritus <= 0 )
- {
- evaluateTransfuseValue.pruritus = 3;
- }
- else
- {
- evaluateTransfuseValue.pruritus--;
- }
- break;
- case RASS://镇静评分 0~2
- if( evaluateTransfuseValue.RASS <= 0 )
- {
- evaluateTransfuseValue.RASS = 2;
- }
- else
- {
- evaluateTransfuseValue.RASS--;
- }
- break;
- case PONV://恶心呕吐 0~2
- if( evaluateTransfuseValue.PONV <= 0 )
- {
- evaluateTransfuseValue.PONV = 2;
- }
- else
- {
- evaluateTransfuseValue.PONV--;
- }
- break;
- default:break;
- }
- emDisplayPicture = EvaluateTransfuseDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- realTimeData.stateRun = Poweroff;//关机发送
- // 切断电源,关机
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlEvaluatePainPicture
- * Object: 控制疼痛评价画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择
- * 2、运行停止键短按进行前一项选择
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- **************************************************************************************/
- void CntlEvaluatePainPicture( void )
- {
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case Static://静止
- emEvaluateTransfuseChoose = Activity;
- emDisplayPicture = EvaluatePainDisp;
- break;
- case Activity://活动
- emEvaluateTransfuseChoose = CACSI;
- emDisplayPicture = EvaluatePainDisp;
- break;
- case CACSI://满意度
- emEvaluateTransfuseChoose = VerifyEvaluate;
- emDisplayPicture = EvaluateTransfuseDisp;
- emSysWorkStep = EnterEvaluateTransfuse;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- break;
- default:
- emDisplayPicture = EvaluatePainDisp;
- break;
- }
- }
- if(( KeyActionFlag.keyRunPause == emKeyflagShortPress)||(KeyActionFlag.keyPS == emKeyflagShortPress) )//运行/停止键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case Static://静止
- emEvaluateTransfuseChoose = Static;
- emDisplayPicture = EvaluatePainDisp;
- break;
- case Activity://活动
- emEvaluateTransfuseChoose = Static;
- emDisplayPicture = EvaluatePainDisp;
- break;
- case CACSI://满意度
- emEvaluateTransfuseChoose = Activity;
- emDisplayPicture = EvaluatePainDisp;
- break;
- default:
- emDisplayPicture = EvaluatePainDisp;
- break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case Static://静止 0~3
- if( evaluateTransfuseValue.Static >= 3 )
- {
- evaluateTransfuseValue.Static = 3;
- }
- else
- {
- evaluateTransfuseValue.Static++;
- }
- break;
- case Activity://活动 0~3
- if( evaluateTransfuseValue.Activity >= 3 )
- {
- evaluateTransfuseValue.Activity = 3;
- }
- else
- {
- evaluateTransfuseValue.Activity++;
- }
- break;
- case CACSI://满意度 0~3
- if( evaluateTransfuseValue.CACSI >= 3 )
- {
- evaluateTransfuseValue.CACSI = 3;
- }
- else
- {
- evaluateTransfuseValue.CACSI++;
- }
- break;
- default:break;
- }
- emDisplayPicture = EvaluatePainDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case Static://静止 0~3
- if( evaluateTransfuseValue.Static <= 0 )
- {
- evaluateTransfuseValue.Static = 0;
- }
- else
- {
- evaluateTransfuseValue.Static--;
- }
- break;
- case Activity://活动 0~3
- if( evaluateTransfuseValue.Activity <= 0 )
- {
- evaluateTransfuseValue.Activity = 0;
- }
- else
- {
- evaluateTransfuseValue.Activity--;
- }
- break;
- case CACSI://满意度 0~3
- if( evaluateTransfuseValue.CACSI <= 0 )
- {
- evaluateTransfuseValue.CACSI = 0;
- }
- else
- {
- evaluateTransfuseValue.CACSI--;
- }
- break;
- default:break;
- }
- emDisplayPicture = EvaluatePainDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Poweroff;//关机发送
- //切断电源,关机
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlLimbMyodynamiaPicture
- * Object: 控制四肢肌力评价画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择
- * 2、运行停止键短按进行前一项选择
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- **************************************************************************************/
- void CntlLimbMyodynamiaPicture( void )
- {
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case LeftArm://左上肢
- emEvaluateTransfuseChoose = LeftLeg;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- case LeftLeg://左下肢
- emEvaluateTransfuseChoose = RightArm;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- case RightArm://右上肢
- emEvaluateTransfuseChoose = RightLeg;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- case RightLeg://右下肢
- emEvaluateTransfuseChoose = PainEvaluate;
- emDisplayPicture = EvaluateTransfuseDisp;
- emSysWorkStep = EnterEvaluateTransfuse;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- break;
- default:
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- }
- }
- if(( KeyActionFlag.keyRunPause == emKeyflagShortPress)||(KeyActionFlag.keyPS == emKeyflagShortPress) )//运行/停止键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case LeftArm://左上肢
- emEvaluateTransfuseChoose = LeftArm;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- case LeftLeg://左下肢
- emEvaluateTransfuseChoose = LeftArm;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- case RightArm://右上肢
- emEvaluateTransfuseChoose = LeftLeg;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- case RightLeg://右下肢
- emEvaluateTransfuseChoose = RightArm;
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- default:
- emDisplayPicture = LimbMyodynamiaDisp;
- break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case LeftArm://左上肢 0~2
- if( evaluateTransfuseValue.LeftArm >= 2 )
- {
- evaluateTransfuseValue.LeftArm = 2;
- }
- else
- {
- evaluateTransfuseValue.LeftArm++;
- }
- break;
- case LeftLeg://左下肢 0~2
- if( evaluateTransfuseValue.LeftLeg >= 2 )
- {
- evaluateTransfuseValue.LeftLeg = 2;
- }
- else
- {
- evaluateTransfuseValue.LeftLeg++;
- }
- break;
- case RightArm://右上肢 0~2
- if( evaluateTransfuseValue.RightArm >= 2 )
- {
- evaluateTransfuseValue.RightArm = 2;
- }
- else
- {
- evaluateTransfuseValue.RightArm++;
- }
- break;
- case RightLeg://右下肢 0~2
- if( evaluateTransfuseValue.RightLeg >= 2 )
- {
- evaluateTransfuseValue.RightLeg = 2;
- }
- else
- {
- evaluateTransfuseValue.RightLeg++;
- }
- break;
- default:break;
- }
- emDisplayPicture = LimbMyodynamiaDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case LeftArm://左上肢 0~2
- if( evaluateTransfuseValue.LeftArm <= 0 )
- {
- evaluateTransfuseValue.LeftArm = 0;
- }
- else
- {
- evaluateTransfuseValue.LeftArm--;
- }
- break;
- case LeftLeg://左下肢 0~2
- if( evaluateTransfuseValue.LeftLeg <= 0 )
- {
- evaluateTransfuseValue.LeftLeg = 0;
- }
- else
- {
- evaluateTransfuseValue.LeftLeg--;
- }
- break;
- case RightArm://右上肢 0~2
- if( evaluateTransfuseValue.RightArm <= 0 )
- {
- evaluateTransfuseValue.RightArm = 0;
- }
- else
- {
- evaluateTransfuseValue.RightArm--;
- }
- break;
- case RightLeg://右下肢 0~2
- if( evaluateTransfuseValue.RightLeg <= 0 )
- {
- evaluateTransfuseValue.RightLeg = 0;
- }
- else
- {
- evaluateTransfuseValue.RightLeg--;
- }
- break;
- default:break;
- }
- emDisplayPicture = LimbMyodynamiaDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- realTimeData.stateRun = Poweroff;//关机发送
-
- // 切断电源,关机
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlEvaluateVerifyPicture
- * Object: 控制确认评价画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择
- * 2、运行停止键短按进行前一项选择
- * 3、power键长按关机
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- **************************************************************************************/
- void CntlEvaluateVerifyPicture( void )
- {
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( emEvaluateTransfuseChoose )
- {
- case Valuer://评价人
- emEvaluateTransfuseChoose = VerifyUpload;
- emDisplayPicture = EvaluateUploadEnterDisp;
- break;
- case VerifyUpload://上传确认
- // TaskSchedulerFlag.zigbeeETXmitFlag = TASK_FLAG_WAIT;
- // TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送评价数据
- emEvaluateTransfuseChoose = Uploading;
- emDisplayPicture = EvaluateUploadEnterDisp;
- // sysPromptToneCounts = 0;//蜂鸣器-计数
- sysPromptToneType = VerificationTone;//蜂鸣器-确认
- break;
- case Uploading:
- //EvaluateToZigbeeHandle();
- emEvaluateTransfuseChoose = UploadFinshed;
- emDisplayPicture = EvaluateUploadEnterDisp;
- break;
- default:break;
- }
- }
- if(( KeyActionFlag.keyRunPause == emKeyflagShortPress)||(emEvaluateTransfuseChoose == UploadFinshed) )//运行/停止键
- {
- emEvaluateTransfuseChoose = VerifyEvaluate;
- if(realTimeData.inputDose >= runParamInfo.totalDose)
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- emDisplayPicture = TransfuseOverDisp;
- emSysWorkStep = EnterTransfuseOver;//EnterEvaluateTransfuse;
- SysHornToneType = InfusionTone;
- }
- else
- {
- emSysWorkStep = EnterRunMain;//EnterEvaluateTransfuse;
- emDisplayPicture = RunMainDisp;
- }
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- // sysPromptToneCounts = 0;//蜂鸣器-计数
- // sysPromptToneType = VerificationTone;//蜂鸣器-确认
- }
- if( KeyActionFlag.keyPS == emKeyflagShortPress )
- {
- switch( emEvaluateTransfuseChoose )
- {
- case Valuer://评价人
- emEvaluateTransfuseChoose = Valuer;
- emDisplayPicture = EvaluateUploadEnterDisp;
- break;
- case VerifyUpload://上传确认
- emEvaluateTransfuseChoose = Valuer;
- emDisplayPicture = EvaluateUploadEnterDisp;
- break;
- default:break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case Valuer://评价人 0~10
- if( evaluateTransfuseValue.Valuer >= 10 )
- {
- evaluateTransfuseValue.Valuer = 10;
- }
- else
- {
- evaluateTransfuseValue.Valuer++;
- }
- break;
- default:break;
- }
- emDisplayPicture = EvaluateUploadEnterDisp;
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按操作释放按键
- switch( emEvaluateTransfuseChoose )
- {
- case Valuer://评价人 0~10
- if( evaluateTransfuseValue.Valuer <= 0 )
- {
- evaluateTransfuseValue.Valuer = 0;
- }
- else
- {
- evaluateTransfuseValue.Valuer--;
- }
- break;
- default:break;
- }
- emDisplayPicture = EvaluateUploadEnterDisp;
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- realTimeData.stateRun = Poweroff;//关机发送
- // 切断电源,关机
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlAlarmPicture
- * Object: 控制报警画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、根据sysAlarmFlag变量中相应项目标志位置位来选择报警项,报警有先后顺序
- * 2、运行停止键长按返回输注暂停界面
- * 3、power键长按关机
- * 4、密码/静音键短按静音
- * 5、其它键无效
- * 6、此页面有自动关机功能
- * 7、解除电池电量低报警
- * 8、增加手动解除堵塞报警,回到输注前界面
- **************************************************************************************/
- void CntlAlarmPicture( void )
- {
- //uint16_t i=0;
- uint8_t InputTotalDoseBuff[4];
- /*if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- {
- TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- }*/
- if( KeyActionFlag.keyRunPause == emKeyflagLongPress )//运行/停止键
- {
- KeyActionFlag.keyRunPause = emKeyflagNonePress;
- /*接触报警后,解除所有报警标志和报警检测次数,防止多报警同时发生或者临近发生对下次报警造成影响*/
- SysAlarmJudge.BubbleFaultJudgeCounts = 0; //气泡无液报警检测次数清零
- ElectSmallCount = 0; //未装药盒报警检测次数清零
- ElectLargeCount = 0; //堵塞报警检测次数清零
- BlockageRecovery=0; //堵塞自检恢复标志
- SysAlarmJudge.JamFaultJudgeFlag = TASK_FLAG_CLEAR; //堵塞报警标志清除
- SysAlarmJudge.BubbleFaultJudgeFlag = TASK_FLAG_CLEAR; //气泡无液报警标志清除
- SysAlarmJudge.NonePillCaseJudgeFlag = TASK_FLAG_CLEAR; //未装药盒报警标志清除
- /*********************************************************************************************/
- if( sysAlarmFlag.VoltLowest == ALARM_ON) //如果电量耗尽报警,按暂停键不可以进入主运行界面
- return;
- if( sysAlarmFlag.InputTotal == ALARM_ON) //如果输入总量报警,按暂停键不可以进入主运行界面
- return;
- if( sysAlarmFlag.VoltLowest == ALARM_PREPARE )//电池电量低
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- }
- if( sysAlarmFlag.MaxFault == ALARM_ON )//极限值故障
- {
- sysAlarmFlag.MaxFault = ALARM_OFF;
- if( realTimeData.inputDose >= runParamInfo.totalDose )
- {
- alarmRecord.alarmType = 8;//输注结束
- // return;//最新添加
- }
- else
- {
- SysHornToneType = SoundOff;
- }
- }
- // SysHornToneType = SoundOff;
- if( sysAlarmFlag.BubbleFault == ALARM_ON )//气泡或无液故障
- {
- sysAlarmFlag.BubbleFault = ALARM_OFF;
- SysHornToneType = SoundOff;
- }
- if( sysAlarmFlag.NonePillCase == ALARM_ON )//未装药盒故障
- {
- sysAlarmFlag.NonePillCase = ALARM_OFF;
- SysHornToneType = SoundOff;
- }
- if( sysAlarmFlag.LineLost == ALARM_ON )//管道脱落
- {
- sysAlarmFlag.LineLost = ALARM_OFF;
- SysHornToneType = SoundOff;
- }
- if( sysAlarmFlag.JamFault == ALARM_ON )
- {
- sysAlarmFlag.JamFault = ALARM_OFF;
- TaskSchedulerFlag.JamSelfcheckingFlag = TASK_FLAG_WAIT; //堵塞自检标志等待
- TaskSchedulerTimer.JamSelfcheckingTimer = FIVE_MINUTE_TIMER;//堵塞自检计时5min
- SysHornToneType = SoundOff;
- // speakerWorkStep = emSpeakerNoneWork;
- }
- historyRefreshFlag = 0;//清除历史数据存储刷新标志
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//清除蜂鸣器响
- sysPromptToneType = SoundOff;
- realTimeData.stateRun = Pause;
- //emSysWorkStep = emAlarmRecordStep;
- /* if(realTimeData.firstDose != 0)//
- {
- emSysWorkStep = EnterRunFirstDose;
- emDisplayPicture = RunFirstDoseDisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }
- else
- {
- emSysWorkStep = EnterRunMain;//2017.04.10修改自控时报警,按暂停键暂停,再启动乱码问题,现在直接进入主运行界面
- emDisplayPicture = RunMainDisp;
- //emDisplayPicture = emAlarmRecordPicture;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }*/
- if(realTimeData.firstDose != 0)//堵塞自检通过后返回首次量未完成状态
- {
- emSysWorkStep = EnterRunFirstDose;
- emDisplayPicture = RunFirstDoseDisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }
- else if(realTimeData.superaddition != 0)//堵塞自检通过后返回PCA未完成状态
- {
- PCADontRun_Flag = 1;
- // TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_CLEAR;
- // realTimeData.lockTime = runParamInfo.lockTime;
- // TaskSchedulerTimer.pcaLockTimer = runParamInfo.lockTime * 60000;
- // realTimeData.superaddition = 0;
- emSysWorkStep = EnterRunMain;
- emDisplayPicture = RunPCADisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }
- else
- {
- emSysWorkStep = EnterRunMain;
- emDisplayPicture = RunMainDisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- }
- TaskSchedulerTimer.rtdXmitTimer = TEN_SECOND_TIMER;//准备快速发送实时数据
- //--------------------------
- // TaskSchedulerFlag.pcaLockFlag = TASK_FLAG_CLEAR;
- // TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_CLEAR;
- // runParamInfo.superaddition = setParamInfo.superaddition1;
- // realTimeData.superaddition=0;
-
- // TaskSchedulerFlag.silenceFlag = TASK_FLAG_CLEAR;//静音标志,清除
- // DrawSilenceDisplay();//静音
- // speakerWorkStep = emSpeakerNoneWork;
- //--------------------------------
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
-
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- WriteHistoryRecord();
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- realTimeData.stateRun = Pause;//等待状态
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emPictureRunState = FirstEnter;
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
-
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR; //关闭蜂鸣器
- LcdFlicker_Flag = TASK_FLAG_CLEAR; //关闭led灯
-
- emLockPasswordStep = EnterPowerOFF;
- emLockPassowrdPicture = ClearDisp;
- emLockPasswordFailStep = emAlarmRememberStep;
- emLockPassowrdFailPicture = emAlarmRememberPicture;
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- modifyStep = 1;
- return;
- }
- else
- {
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
- }
-
- /* 按PS静音 */
- // if( KeyActionFlag.keyPS == emKeyflagShortPress )//密码/静音键
- // {
- // KeyActionFlag.keyPS = emKeyflagNonePress;
- // Key_Quiet_Cont=1;
- // Quiet_Timedata=1000;
- // Quiet_Timedata_flag=0;
- // }
- if( historyRefreshFlag == 0 )
- {
- // historyRecordQTY++; //报警和关机在同一条保存信息里面,不能把指针变量改变
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- if( Alarm_flag == 1)
- {
- WriteHistoryRecord();
- Alarm_flag=0;
- }
- // CntOpenHornInit();//报警前打开功放管脚的初始化
- // if( (Key_Quiet_Cont == 1) && (Quiet_Timedata_flag == 1))
- // {
- // Key_Quiet_Cont=0;
- // Quiet_Timedata_flag=0;
- // if(TaskSchedulerFlag.silenceFlag == TASK_FLAG_CLEAR)
- // {
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- // TaskSchedulerFlag.silenceFlag = TASK_FLAG_SET;//静音标志
- // emDisplayPicture = emCurrentPicture;
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_CLEAR;//清除自动关机标志
- // }
- // else if(TaskSchedulerFlag.silenceFlag == TASK_FLAG_SET)
- // {
- // TaskSchedulerFlag.silenceFlag = TASK_FLAG_CLEAR;//静音标志
- // DrawSilenceDisplay();//静音
- // TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- // speakerWorkStep = emSpeakerNoneWork;
- // sysPromptToneType=WarringTone;//静音回复后,之前的状态回复
- // }
- // }
- if(TaskSchedulerFlag.JamSelfcheckingFlag == TASK_FLAG_CLEAR)
- {
- motorWorkState = MOTOR_WORK_ON; //自检一次
- if(realTimeData.firstDose != 0)
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER; //闪烁标志清除
- if( sysAlarmFlag.VoltLowest == ALARM_PREPARE )//电池电量低
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- LcdFlicker_Flag = TASK_FLAG_CLEAR; //关闭报警指示灯
- Y_LED_OFF ;
- }
- sysPromptToneType = SoundOff;
- speakerWorkStep = emSpeakerNoneWork; //关闭蜂鸣器报警
- sysAlarmFlag.JamFault = ALARM_OFF;//结束报警
- emSysWorkStep = EnterRunFirstDose;
- emDisplayPicture = RunFirstDoseDisp;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- infusionMode = FirstDoseMode;
- InfusionControl( FirstDoseMode );
- // realTimeData.firstDose = FirstSurplusDose;
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
- realTimeData.stateRun = FirstRun;//运行发送
- }
- else if(realTimeData.superaddition != 0)//堵塞自检通过后返回PCA未完成状态
- {
- TaskSchedulerFlag.SuperadditionFlag = TASK_FLAG_SET;
- // TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;
- if( sysAlarmFlag.VoltLowest == ALARM_PREPARE )//电池电量低
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- LcdFlicker_Flag = TASK_FLAG_CLEAR; //关闭报警指示灯
- Y_LED_OFF ;
- }
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER; //闪烁标志清除
- sysPromptToneType = SoundOff; //关闭蜂鸣器报警
- speakerWorkStep = emSpeakerNoneWork;
- sysAlarmFlag.JamFault = ALARM_OFF;//结束报警
- emSysWorkStep = EnterRunMain;
- emDisplayPicture = RunPCADisp;
- realTimeData.stateRun = PCARun;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- infusionMode = SuperadditionMode;
- InfusionControl( SuperadditionMode );
- // realTimeData.superaddition = PCASurplusDose;
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- }
- else
- {
- if( sysAlarmFlag.VoltLowest == ALARM_PREPARE )//电池电量低
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//报警LCD闪屏次数显示计时
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- }
- else
- {
- TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- LcdFlicker_Flag = TASK_FLAG_CLEAR; //关闭报警指示灯
- Y_LED_OFF ;
- }
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER; //闪烁标志清除
- sysPromptToneType = SoundOff; //关闭蜂鸣器报警
- speakerWorkStep = emSpeakerNoneWork;
- sysAlarmFlag.JamFault = ALARM_OFF;//结束报警
- emSysWorkStep = EnterRunMain;
- emDisplayPicture = RunMainDisp;
- realTimeData.stateRun = MainRun;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- infusionMode = ContinueMode;
- InfusionControl( ContinueMode );
- TaskSchedulerTimer.motorStopTimer = InfusionStopTimer;//电机停止等待时间
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- }
- TaskSchedulerFlag.JamSelfcheckingFlag = TASK_FLAG_WCLEAR;
- }
-
- if(TaskSchedulerFlag.PasswordTimeOverFlag == TASK_FLAG_SET)
- {
- if((sysAlarmFlag.NonePillCase == ALARM_ON)||(sysAlarmFlag.BubbleFault == ALARM_ON)||(sysAlarmFlag.LineLost == ALARM_ON)
- ||(sysAlarmFlag.JamFault == ALARM_ON)||(sysAlarmFlag.MaxFault == ALARM_ON)||(sysAlarmFlag.InputTotal == ALARM_ON)||
- ( sysAlarmFlag.VoltLowest == ALARM_ON) )
- {
- realTimeData.stateRun = Alarm;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- SysHornToneType = WarringTone;
- TaskSchedulerFlag.PasswordTimeOverFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- /*************************************************************************************
- * Function: CntMechanicalFaultPicture
- * Object: 控制机械报警画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、此报警是不可恢复,一旦发生只能关机
- * 3、power键长按关机
- * 4、密码/静音键短按静音
- * 5、其它键无效
- * 6、此页面有自动关机功能
- * 7、关闭自动关机,增加关机输入密码,密码界面3min,3min过后回到原来界面
- **************************************************************************************/
- void CntMechanicalFaultPicture( void )
- {
- uint8_t InputTotalDoseBuff[4];
- // if( TaskSchedulerFlag.autoPowerOffFlag == TASK_FLAG_CLEAR )//从进入此界面开始自动关机倒计时
- // {
- // TaskSchedulerFlag.autoPowerOffFlag = TASK_FLAG_WAIT;
- // TaskSchedulerTimer.autoPowerOffTimer = THIRTY_MINUTE_TIMER;
- // }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- // historyRecordQTY++;
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- realTimeData.stateRun = Pause;//关机发送
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- emSysWorkStep = EnterLockPassword;
- emDisplayPicture = LockPasswordDisp;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;//关闭蜂鸣器
- LcdFlicker_Flag = TASK_FLAG_CLEAR; //关闭led灯
-
- emLockPasswordStep = EnterPowerOFF;
- emLockPassowrdPicture = ClearDisp;
- emLockPasswordFailStep = emAlarmRememberStep;
- emLockPassowrdFailPicture = emAlarmRememberPicture;
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- modifyStep = 1;
- return;
- }
- else
- {
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emSysWorkStep = EnterPowerOFF;
- emDisplayPicture = ClearDisp;
- return;
- }
- }
- /* 按keyAirout静音 */
- /* if( KeyActionFlag.keyAirout == emKeyflagShortPress )//密码/静音键
- {
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_CLEAR;
- TaskSchedulerFlag.silenceFlag = TASK_FLAG_SET;//静音标志
- emDisplayPicture = AlarmDeviceDisp;
- }
- if(TaskSchedulerFlag.PasswordTimeOverFlag == TASK_FLAG_SET)
- {
- if(sysAlarmFlag.MechanicalFault == ALARM_ON)
- {
- realTimeData.stateRun = Alarm;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;
- sysPromptToneType = WarringTone;
- TaskSchedulerFlag.PasswordTimeOverFlag = TASK_FLAG_CLEAR;
- }
- }*/
- }
- /*************************************************************************************
- * Function: CntlEngineeringMode1Picture
- * Object: 控制工程1画面
- * 输入: 无
- * 输出: 无
- * 备注: 1、enter键短按下一项选择,循环选择
- * 2、运行停止键短按进行前一项选择
- * 3、power键长按关机,并保存工程模式参数
- * 4、加减键短按选项数字加减
- * 5、其它键无效
- **************************************************************************************/
- void CntlEngineeringMode1Picture( void )
- {
- uint8_t InputTotalDoseBuff[4];
- if( KeyActionFlag.keyEnter == emKeyflagShortPress )//enter键
- {
- switch( emEngineeringMode1Choose)
- {
- case SickroomQty://病区
- emEngineeringMode1Choose = NetworkState;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case NetworkState://网络
- emEngineeringMode1Choose = BedNOQty;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case BedNOQty://病床
- emEngineeringMode1Choose = SeachState;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case SeachState://查询
- emEngineeringMode1Choose = Selfcontrol;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case Selfcontrol://自控流速
- emEngineeringMode1Choose = PasswordState;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case PasswordState://密码
- emEngineeringMode1Choose = HospitalNOQty;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case HospitalNOQty://住院号
- emEngineeringMode1Choose = DeviceAlarm;
- emPictureRunState = FirstEnter;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case DeviceAlarm://机械报警
- emEngineeringMode1Choose = SilenceState;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case SilenceState://静音
- emEngineeringMode1Choose = BubbleAlarm;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case BubbleAlarm://气泡/无液
- emEngineeringMode1Choose = ClosedState;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case ClosedState://扣合
- emEngineeringMode1Choose = Automatic;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case Automatic://自动调整
- emEngineeringMode1Choose = JamAlarm;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case JamAlarm://堵塞
- emEngineeringMode1Choose = pressure_button;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case pressure_button://压力显示
- emEngineeringMode1Choose = test;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case test:
- emEngineeringMode1Choose = test;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- default:break;
- }
- }
- if((KeyActionFlag.keyRunPause == emKeyflagShortPress )||(KeyActionFlag.keyPS == emKeyflagShortPress))//暂停键具有返回功能
- {
- switch( emEngineeringMode1Choose)
- {
- case SickroomQty://病区
- emEngineeringMode1Choose = SickroomQty;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case NetworkState://网络
- emEngineeringMode1Choose = SickroomQty;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case BedNOQty://病床
- emEngineeringMode1Choose = NetworkState;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case SeachState://查询
- emEngineeringMode1Choose = BedNOQty;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case Selfcontrol://自控流速
- emEngineeringMode1Choose = SeachState;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case PasswordState://密码
- emEngineeringMode1Choose = Selfcontrol;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case HospitalNOQty://住院号
- emEngineeringMode1Choose = PasswordState;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case DeviceAlarm://机械报警
- emPictureRunState = FirstEnter;
- emEngineeringMode1Choose = SickroomQty;
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case SilenceState://静音
- emEngineeringMode1Choose = DeviceAlarm;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case BubbleAlarm://气泡/无液
- emEngineeringMode1Choose = SilenceState;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case ClosedState://扣合
- emEngineeringMode1Choose = BubbleAlarm;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case Automatic://自动调整
- emEngineeringMode1Choose = ClosedState;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case JamAlarm://堵塞
- emEngineeringMode1Choose = Automatic;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case pressure_button://压力显示
- emEngineeringMode1Choose = JamAlarm;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case test:
- emEngineeringMode1Choose = pressure_button;
- emDisplayPicture = EngineeringMode2Disp;
- break;
- default:break;
- }
- }
- if( ( KeyActionFlag.keyPlus == emKeyflagShortPress ) || ( KeyActionFlag.keyPlus == emKeyflagLongPress ) )//加键
- {
- KeyActionFlag.keyPlus = emKeyflagShortRelease;//短按释放按键
- switch( emEngineeringMode1Choose)
- {
- case SickroomQty://病区
- if( EngineeringModeValue.sickroomQty >= 3 )
- {
- EngineeringModeValue.sickroomQty = 1;
- }
- else
- {
- EngineeringModeValue.sickroomQty++;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case NetworkState://网络
- if( EngineeringModeValue.networkState == ENGINEERINGMODE_OFF )
- {
- EngineeringModeValue.networkState = ENGINEERINGMODE_ON;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case BedNOQty://病床
- if( EngineeringModeValue.bedNOQty >= 3 )
- {
- EngineeringModeValue.bedNOQty = 1;
- }
- else
- {
- EngineeringModeValue.bedNOQty++;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- /*case EvaluateState://随访
- if( EngineeringModeValue.evaluateState == 0 )
- {
- EngineeringModeValue.evaluateState = 1;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;*/
- case Selfcontrol://自控流速
- if( EngineeringModeValue.selfcontrol >= 100 )
- {
- EngineeringModeValue.selfcontrol = 0;
- }
- else
- {
- EngineeringModeValue.selfcontrol++;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case SeachState://查询
- if( EngineeringModeValue.seachState == 1 )
- {
- EngineeringModeValue.seachState = 0;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case HospitalNOQty://住院号
- if( EngineeringModeValue.hospitalNOQty >= 9 )
- {
- EngineeringModeValue.hospitalNOQty = 1;
- }
- else
- {
- EngineeringModeValue.hospitalNOQty++;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case PasswordState://密码
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_OFF )
- {
- EngineeringModeValue.passwordState = ENGINEERINGMODE_ON;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case DeviceAlarm://机械报警
- if( EngineeringModeValue.deviceAlarm == 1 )
- {
- EngineeringModeValue.deviceAlarm = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case SilenceState://声音
- if( EngineeringModeValue.silenceState == 0)
- {
- EngineeringModeValue.silenceState = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case BubbleAlarm://气泡/无液
- if( EngineeringModeValue.bubbleAlarm == 1 )
- {
- EngineeringModeValue.bubbleAlarm = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case ClosedState://扣合
- if( EngineeringModeValue.closedState == 1 )
- {
- EngineeringModeValue.closedState = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case Automatic://自动调整
- if( EngineeringModeValue.automatic == 1 )
- {
- EngineeringModeValue.automatic = 0;
- TotalDoesChange0 = 1;
- TotalDoesChange1 = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case JamAlarm://堵塞
- if( EngineeringModeValue.jamAlarm == 1 )
- {
- EngineeringModeValue.jamAlarm = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case pressure_button://压力显示
- if( EngineeringModeValue.pressure_switch == 1 )
- {
- EngineeringModeValue.pressure_switch = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case test:
- if(EngineeringModeValue.test == 1)
- {
- EngineeringModeValue.test = 0; //测试关
- // TestSwitch = 0; //测试关闭,正常发送其他数据
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- default:break;
- }
- }
- if( ( KeyActionFlag.keyMinus == emKeyflagShortPress ) || ( KeyActionFlag.keyMinus == emKeyflagLongPress ) )//减键
- {
- KeyActionFlag.keyMinus = emKeyflagShortRelease;//短按释放按键
- switch( emEngineeringMode1Choose)
- {
- case SickroomQty://病区
- if( EngineeringModeValue.sickroomQty <= 1 )
- {
- EngineeringModeValue.sickroomQty = 3;
- }
- else
- {
- EngineeringModeValue.sickroomQty--;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case NetworkState://网络
- if( EngineeringModeValue.networkState == ENGINEERINGMODE_ON )
- {
- EngineeringModeValue.networkState = ENGINEERINGMODE_OFF;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case BedNOQty://病床
- if( EngineeringModeValue.bedNOQty <= 1 )
- {
- EngineeringModeValue.bedNOQty = 3;
- }
- else
- {
- EngineeringModeValue.bedNOQty--;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- /*case EvaluateState://随访
- if( EngineeringModeValue.evaluateState == 1 )
- {
- EngineeringModeValue.evaluateState = 0;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;*/
- case Selfcontrol://自控流速
- if( EngineeringModeValue.selfcontrol <= 0 )
- {
- EngineeringModeValue.selfcontrol = 100;
- }
- else
- {
- EngineeringModeValue.selfcontrol--;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case SeachState://查询
- if( EngineeringModeValue.seachState == 0 )
- {
- EngineeringModeValue.seachState = 1;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case HospitalNOQty://住院号
- if( EngineeringModeValue.hospitalNOQty <= 1 )
- {
- EngineeringModeValue.hospitalNOQty = 9;
- }
- else
- {
- EngineeringModeValue.hospitalNOQty--;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case PasswordState://密码
- if( EngineeringModeValue.passwordState == ENGINEERINGMODE_ON )
- {
- EngineeringModeValue.passwordState = ENGINEERINGMODE_OFF;
- }
- emDisplayPicture = EngineeringMode1Disp;
- break;
- case DeviceAlarm://机械报警
- if( EngineeringModeValue.deviceAlarm == 0 )
- {
- EngineeringModeValue.deviceAlarm = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case SilenceState://声音
- if( EngineeringModeValue.silenceState == 1 )
- {
- EngineeringModeValue.silenceState = 0;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case BubbleAlarm://气泡/无液
- if( EngineeringModeValue.bubbleAlarm == 0 )
- {
- EngineeringModeValue.bubbleAlarm = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case ClosedState://扣合
- if( EngineeringModeValue.closedState == 0 )
- {
- EngineeringModeValue.closedState = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case Automatic://自动调整
- if( EngineeringModeValue.automatic == 0 )
- {
- EngineeringModeValue.automatic = 1;
- TotalDoesChange0 = 0;
- TotalDoesChange1 = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case JamAlarm://堵塞
- if( EngineeringModeValue.jamAlarm == 0 )
- {
- EngineeringModeValue.jamAlarm = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case pressure_button://压力显示
- if( EngineeringModeValue.pressure_switch == 0)
- {
- EngineeringModeValue.pressure_switch = 1;
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
- case test:
- if(EngineeringModeValue.test == 0)
- {
- EngineeringModeValue.test = 1; //测试开
- }
- emDisplayPicture = EngineeringMode2Disp;
- break;
-
- default:break;
- }
- }
- if( KeyActionFlag.keyPower == emKeyflagLongPress )//power键
- {
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- WriteParameterRecord();//设置完成在此处保存一下
- if( EngineeringModeValue.automatic == 1 )//自动调整
- {
- if(TotalDoesChange1 == 1)
- {
- InputTotalDoseBuff[0]=0;
- InputTotalDoseBuff[1]=0;
- InputTotalDoseBuff[2]=0;
- InputTotalDoseBuff[3]=0;
- //Write_Multi31256RAM(HISTORY31256_DATA_InputTotalDose,InputTotalDoseBuff,4);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- }
- }
- else
- {
- if(TotalDoesChange0 == 1)
- {
- InputTotalDoseBuff[0]=(uint8_t)(149000>>24);
- InputTotalDoseBuff[1]=(uint8_t)(149000>>16);
- InputTotalDoseBuff[2]=(uint8_t)(149000>>8);
- InputTotalDoseBuff[3]=(uint8_t)149000;
- //Write_Multi31256RAM(HISTORY31256_DATA_InputTotalDose,InputTotalDoseBuff,4);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- }
- }
-
- realTimeData.stateRun = Poweroff;//关机发送
- /* 切断电源,关机 */
- emDisplayPicture = ClearDisp;
- emSysWorkStep = EnterPowerOFF;
- }
- }
- /*************************************************************************************
- * Function: CntlSystemWorkStep
- * Object: 控制系统工作流程
- * 输入: 无
- * 输出: 无
- * 备注: 此函数是整个系统最重要的函数,其中包括所有控制流程
- * 其中最重要的变量emSysWorkStep,通过此变量赋值来控制当前工作流程
- **************************************************************************************/
- void CntlSystemWorkStep( void )
- {
- switch( emSysWorkStep )
- {
- //进入供电状态
- case EnterPowerON:
- CntlPowerONWork();
- break;
-
- //进入断电状态
- case EnterPowerOFF:
- CntlPowerOFFWork();
- break;
-
- //进入开机页
- case EnterStartup:
- CntlStartupPicture();
- break;
-
- //进入历史回顾
- case EnterHistory:
- CntlHistoryPicture();
- break;
-
- //进入设备ID设置
- case EnterDeviceID:
- CntlDeviceIDPicture();
- break;
-
- //进入时间显示
- case EnterDispTime:
- CntlDispTimePicture();
- break;
-
- //进入时间设置
- case EnterSetTime:
- CntlSetTimePicture();
- break;
-
- /*//进入密码设置
- case EnterSetPassword:
- CntlSetPasswordPicture();
- break;*/
-
- //进入确认住院信息
- case EnterVerifyInfo:
- CntlVerifyInfoPicture();
- break;
-
- //进入设置确认住院信息
- case EnterSetVerifyInfo:
- CntlSetVerifyInfoPicture();
- break;
-
- //进入参数设置
- case EnterSetParam:
- CntlSetParamPicture();
- break;
-
- //进入排气
- case EnterAirout:
- CntlAiroutPicture();
- break;
-
- //进入锁定密码
- case EnterLockPassword:
- CntlLockPasswordPicture();
- break;
-
- //进入运行首次量
- case EnterRunFirstDose:
- CntlRunFirstDosePicture();
- break;
-
- //进入运行主界面
- case EnterRunMain:
- CntlRunMainPicture();
- break;
-
- //输液完毕
- case EnterTransfuseOver:
- CntlTransfuseOverPicture();
- break;
-
- //随访
- case EnterEvaluateTransfuse://
- CntlEvaluateTransfusePicture();
- break;
-
- //疼痛评价
- case EnterEvaluatePain://
- CntlEvaluatePainPicture();
- break;
-
- //四肢肌力评价
- case EnterLimbMyodynamia://
- CntlLimbMyodynamiaPicture();
- break;
-
- //确认评价
- case EnterEvaluateVerify://
- CntlEvaluateVerifyPicture();
- break;
-
- //机械故障,只能关机
- case EnterMechanicalFault://
- CntMechanicalFaultPicture();
- break;
-
- case EnterJamFault:
- case EnterMaxFault:
- case EnterBubbleFault:
- case EnterNonePillCaseFault:
- case EnterLineLost:
- case EnterInputTotal: //输入总量超限
-
- //电池电量低
- case EnterBatteryVoltLow:
- CntlAlarmPicture();
- break;
-
- //进入工程模式1
- case EnterEngineeringMode1:
- CntlEngineeringMode1Picture();
- break;
- case EnterInpatien:
- CntlInpatienPicture();
- break;
-
- default:break;
- }
- }
- /*************************************************************************************
- * Function: CntlSystemWorkTimer
- * Object: 控制系统工作计时
- * 输入: 无
- * 输出: 无
- * 备注: 根据emSysWorkStep变量,相应步骤执行时有特定的工作计时
- **************************************************************************************/
- void CntlSystemWorkTimer( void )
- {
- switch( emSysWorkStep )
- {
- case EnterStartup://5秒enter键没有动作直接跳入设备ID页面
- if(TaskSchedulerFlag.motorSelfTestFlag == TASK_FLAG_SET)
- {
- if( TaskSchedulerTimer.dispAutoJumpTimer != 0 )
- {
- TaskSchedulerTimer.dispAutoJumpTimer--;
- }
- else
- {
- controlTimerCounts++;
- if( controlTimerCounts >= 2 )//如果时间加载2次,则按自动跳转处理
- {
- controlTimerCounts = 0;
- emSysWorkStep = EnterDeviceID;
- emDisplayPicture = DeviceID;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- realTimeData.stateRun = StartWork;//系统运行状态:工作
-
- /* 电机停止工作,将电机停止标志置位,运行标志清除,电机工作状态为停止 */
- // motorWorkState = MOTOR_WORK_OFF;
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- }
- else
- {
- //如果在自动跳转时间内有按键按下,则再等待一个长按键的时间
- if( KeyScanStatus.keyEnter == emKyeActionScanSet )//表明在自动跳转过程中有按下按键的动作,重新进入自动跳转倒计时
- {
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- }
- else
- {
- controlTimerCounts = 0;
- emSysWorkStep = EnterDeviceID;
- emDisplayPicture = DeviceID;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- realTimeData.stateRun = StartWork;//系统运行状态:工作
-
- /* 电机停止工作,将电机停止标志置位,运行标志清除,电机工作状态为停止 */
- // motorWorkState = MOTOR_WORK_OFF;
- TaskSchedulerFlag.motorStopFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- }
- break;
- case EnterHistory:
- if( TaskSchedulerTimer.dispAutoJumpTimer != 0 )
- {
- TaskSchedulerTimer.dispAutoJumpTimer--;
- }
- else
- {
- if( emCurrentPicture == HistoryFisrtDisp )
- {
- emDisplayPicture = HistorySecondDisp;
- }
- else if( emCurrentPicture == HistorySecondDisp )
- {
- emDisplayPicture = HistoryFisrtDisp;
- }
- emSysWorkStep = EnterHistory;
-
- TaskSchedulerTimer.dispAutoJumpTimer = FIVE_SECOND_TIMER;
- }
- break;
- case EnterDeviceID:
- if( TaskSchedulerTimer.dispAutoJumpTimer != 0 )
- {
- TaskSchedulerTimer.dispAutoJumpTimer--;
- }
- else
- {
- controlTimerCounts++;
- if( controlTimerCounts >= 2 )//如果时间加载2次,则按自动跳转处理
- {
- controlTimerCounts = 0;
- emSysWorkStep = EnterDispTime;
- emDisplayPicture = TimeDisp;
- // emSysWorkStep = EnterVerifyInfo;
- // emDisplayPicture = VerifyInfoDisp;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- //TaskSchedulerFlag.zigbeeXmitFlag = TASK_FLAG_SET;
- }
- else
- {
- //如果在自动跳转时间内有按键按下,则再等待一个长按键的时间
- if( KeyScanStatus.keyPower == emKyeActionScanSet )
- {
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- }
- else
- {
- controlTimerCounts = 0;
- emSysWorkStep = EnterDispTime;
- emDisplayPicture = TimeDisp;
- // emSysWorkStep = EnterVerifyInfo;
- // emDisplayPicture = VerifyInfoDisp;
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;
- // TaskSchedulerFlag.zigbeeXmitFlag = TASK_FLAG_SET;
- }
- }
- }
- break;
- case EnterRunFirstDose:
- // if( motorWorkState == MOTOR_WORK_ON )//从电机开始工作开始计时一小时总输注量
- {
- // if( TaskSchedulerTimer.totalDoseOneHourTimer != 0 )
- // {
- // TaskSchedulerTimer.totalDoseOneHourTimer--;
- // }
- // else
- // {
- // TaskSchedulerTimer.totalDoseOneHourTimer = ONE_HOUR_TIMER;
- // }
- }
- if( TaskSchedulerFlag.lockDispFlag == TASK_FLAG_CLEAR )
- {
- if( TaskSchedulerTimer.lockDispTimer != 0 )
- {
- TaskSchedulerTimer.lockDispTimer--;
- }
- else
- {
- TaskSchedulerTimer.lockDispTimer = runParamInfo.lockTime;
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- /*emDisplayPicture = RunFirstDoseDisp;*/
- }
- }
- if( realTimeData.stateRun != Pause )//用来做进度条显示控制
- {
- if( TaskSchedulerTimer.universalTimer != 0 )
- {
- TaskSchedulerTimer.universalTimer--;
- }
- else
- {
- TaskSchedulerFlag.rtdUpdateFlag = TASK_FLAG_SET;
- // emDisplayPicture = RunFirstDoseDisp;
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- TaskSchedulerTimer.universalTimer = ONE_SECOND_TIMER;
- }
- }
- // if( TaskSchedulerFlag.sensorPWPressureFlag == TASK_FLAG_CLEAR )//每10s打开一次主芯片,以保证节能
- // {
- // if( TaskSchedulerTimer.hostPowerSaveTimer != 0 )
- // {
- // TaskSchedulerTimer.hostPowerSaveTimer--;
- // }
- // else
- // {
- // TaskSchedulerFlag.sensorPWPressureFlag = TASK_FLAG_SET;//传感器电源-压力打开
- // TaskSchedulerTimer.hostPowerSaveTimer = TEN_SECOND_TIMER;
- // }
- // }
- break;
- case EnterRunMain:
- // if( TaskSchedulerTimer.totalDoseOneHourTimer != 0 )
- // {
- // TaskSchedulerTimer.totalDoseOneHourTimer--;
- // }
- // else
- // {
- // TaskSchedulerFlag.limitJudgeFlag = TASK_FLAG_CLEAR;
- // TaskSchedulerTimer.totalDoseOneHourTimer = ONE_HOUR_TIMER;
- // }
- LimitBeginsTime = 1;
- /*PCA锁时计时处理,暂停时时间继续计时*/
- /* if(realTimeData.stateRun != Pause)
- {
- if( TaskSchedulerFlag.pcaLockFlag == TASK_FLAG_SET )
- {
- if( TaskSchedulerTimer.pcaLockTimer != 0 )
- {
- TaskSchedulerTimer.pcaLockTimer--;
- if( TaskSchedulerTimer.pcaLockTimer % 60000 == 0 )
- {
- realTimeData.lockTime--;//每60s锁时减1
- }
- }
- else
- {
- realTimeData.lockTime = 0;
- TaskSchedulerFlag.pcaLockFlag = TASK_FLAG_CLEAR;//清除PCA锁时
- TaskSchedulerTimer.pcaLockTimer = runParamInfo.lockTime * 60000;
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除,防止PCA锁时为0的情况下,进入PCA有效次数不显示
- }
- }
- }
- */
- // if(realTimeData.stateRun != Pause)
- {
- if(TaskSchedulerFlag.PCAOneTimeFlag==TASK_FLAG_SET)
- {
- if(TaskSchedulerTimer.pcaOneHourTimer!=0)
- {
- TaskSchedulerTimer.pcaOneHourTimer--;
- }
- else
- {
- TaskSchedulerFlag.PCAOneTimeFlag=TASK_FLAG_CLEAR;
- }
- }
- }
- /*PCA有效无效次数闪烁显示*/
- if( TaskSchedulerFlag.pcaCountDispFlag == TASK_FLAG_SET )
- {
- if( TaskSchedulerTimer.pcaCountsDispTimer != 0 )
- {
- TaskSchedulerTimer.pcaCountsDispTimer--;
- if( TaskSchedulerTimer.pcaCountsDispTimer % 500 == 0 )
- {
- if(TaskSchedulerFlag.lcdFlashFlag == TASK_FLAG_CLEAR)
- {
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.lcdFlashFlag1 = TASK_FLAG_SET;//
- }
- else if(TaskSchedulerFlag.lcdFlashFlag == TASK_FLAG_WAIT)
- {
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_WSET;
- TaskSchedulerFlag.lcdFlashFlag1 = TASK_FLAG_SET;//仅用于刷新PCA有无效此数
- }
- // if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )//界面刷新时间更新,有效无效次数闪烁处理
- // {
- // emDisplayPicture = RunPCADisp;
- // }
- // else
- // {
- // emDisplayPicture = RunMainDisp;
- // }
- /*if( emCurrentPicture == RunMainDisp )
- {
- emDisplayPicture = RunMainDisp;
- }
- else if( emCurrentPicture == RunPCADisp )
- {
- emDisplayPicture = RunPCADisp;
- }*/
- }
- }
- else
- {
- TaskSchedulerFlag.pcaCountDispFlag = TASK_FLAG_CLEAR;//无效显示清除
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- TaskSchedulerTimer.pcaCountsDispTimer = TEN_SECOND_TIMER;//无效次数显示计时
- }
- }
- /*PCA锁时闪烁显示*/
- if( TaskSchedulerFlag.pcaLockTimeFlag == TASK_FLAG_SET )
- {
- if( TaskSchedulerTimer.pcaLockTimeDispTimer != 0 )
- {
- TaskSchedulerTimer.pcaLockTimeDispTimer--;
- if( TaskSchedulerTimer.pcaLockTimeDispTimer % 500 == 0 )
- {
- if(TaskSchedulerFlag.PCATimerFlashFlag == TASK_FLAG_CLEAR)
- {
- TaskSchedulerFlag.PCATimerFlashFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.PCATimerFlashFlag1 = TASK_FLAG_SET;
- }
- else if(TaskSchedulerFlag.PCATimerFlashFlag == TASK_FLAG_WAIT)
- {
- TaskSchedulerFlag.PCATimerFlashFlag = TASK_FLAG_WSET;
- TaskSchedulerFlag.PCATimerFlashFlag1 = TASK_FLAG_SET;
- }
- /*界面刷新时间更新,PCA锁时闪烁处理*/
- // if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )
- // {
- // emDisplayPicture = RunPCADisp;
- // }
- // else if(realTimeData.stateRun == MainRun)
- // {
- // emDisplayPicture = RunMainDisp;
- // }
- /*if( emCurrentPicture == RunMainDisp )
- {
- emDisplayPicture = RunMainDisp;
- }
- else if( emCurrentPicture == RunPCADisp )
- {
- emDisplayPicture = RunPCADisp;
- }*/
- }
- }
- else
- {
- TaskSchedulerFlag.pcaLockTimeFlag = TASK_FLAG_CLEAR;//无效显示清除
- TaskSchedulerFlag.PCATimerFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- TaskSchedulerTimer.pcaLockTimeDispTimer = FIVE_SECOND_TIMER;//无效次数显示计时
- }
- }
- if( TaskSchedulerFlag.lockDispFlag == TASK_FLAG_CLEAR )
- {
- if( TaskSchedulerTimer.lockDispTimer != 0 )
- {
- TaskSchedulerTimer.lockDispTimer--;
- }
- else
- {
- TaskSchedulerFlag.lockDispFlag = TASK_FLAG_SET;
- TaskSchedulerTimer.lockDispTimer = DISP_TIME_LOCK_JUMP;
- TaskSchedulerFlag.LcdLogoFlag = TASK_FLAG_SET;
- /*if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )
- {
- emDisplayPicture = RunPCADisp;
- }
- else
- {
- emDisplayPicture = RunMainDisp;
- }*/
- }
- }
- if( realTimeData.stateRun != Pause )//用来做进度条显示控制
- {
- if( TaskSchedulerTimer.universalTimer != 0 )
- {
- TaskSchedulerTimer.universalTimer--;
- }
- else
- {
- TaskSchedulerFlag.rtdUpdateFlag = TASK_FLAG_SET;
- /*if( emCurrentPicture == RunMainDisp )
- {
- emDisplayPicture = RunMainDisp;
- }
- else if( emCurrentPicture == RunPCADisp )
- {
- emDisplayPicture = RunPCADisp;
- }*/
- // if(realTimeData.stateRun == MainRun)
- // {
- // emDisplayPicture = RunMainDisp;
- // }
- // else if( (realTimeData.stateRun == PCARun)||(realTimeData.superaddition != 0) )
- // {
- // emDisplayPicture = RunPCADisp;
- // }
- TaskSchedulerTimer.universalTimer = ONE_SECOND_TIMER;
- }
- }
- break;
- /*case EnterRunPressure:
- if( TaskSchedulerTimer.dispAutoJumpTimer != 0 )
- {
- TaskSchedulerTimer.dispAutoJumpTimer--;
- if( TaskSchedulerTimer.dispAutoJumpTimer % 500 == 0 )//显示时每500ms更新一次数据
- {
- emDisplayPicture = RunPressureDisp;
- }
- }
- else
- {
- emSysWorkStep = EnterRunMain;
- if( realTimeData.stateRun == PCARun )
- {
- emDisplayPicture = RunPCADisp;
- }
- else
- {
- emDisplayPicture = RunMainDisp;
- }
-
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
-
- TaskSchedulerTimer.dispAutoJumpTimer = DISP_TIME_AUTO_JUMP;//因为只跳转一次,所以赋通用时间值
- }
- break;*/
- case EnterLockPassword:
- if( TaskSchedulerTimer.lockPassWordTimer != 0 )
- {
- TaskSchedulerTimer.lockPassWordTimer--;
- }
- else
- {
- modifyStep = 1;
- emSysWorkStep = emLockPasswordFailStep;
- emDisplayPicture = emLockPassowrdFailPicture;
- emPictureRunState = FirstEnter;//判断页面是否是第一次被执行,更新数据用
- TaskSchedulerTimer.lockPassWordTimer = THREE_MINUTE_TIMER;
- TaskSchedulerFlag.unlockPasswordFlag = TASK_FLAG_CLEAR;//解锁不成功
- TaskSchedulerFlag.PasswordTimeOverFlag = TASK_FLAG_SET;
- TaskSchedulerFlag.speakerFlag = TASK_FLAG_SET;//密码界面未操作返回报警界面时报警声音打开
- }
- break;
- case EnterEvaluateVerify:
- if(emEvaluateTransfuseChoose == Uploading)
- {
- if(TaskSchedulerTimer.PainAssessmentUploadTimer != 0)
- {
- TaskSchedulerTimer.PainAssessmentUploadTimer --;
- }
- else
- {
- emEvaluateTransfuseChoose = UploadFinshed;
- emDisplayPicture = EvaluateUploadEnterDisp;
- TaskSchedulerTimer.PainAssessmentUploadTimer = ONE_SECOND_TIMER;//疼痛评价确认上传时间,假时间
- }
- }
- break;
- // case EnterJamFault:
- // case EnterMaxFault:
- // case EnterBubbleFault:
- // case EnterNonePillCaseFault:
- // case EnterLineLost:
- // case EnterBatteryVoltLow:
- // case EnterMechanicalFault:
- // case EnterTransfuseOver:
- // case EnterInputTotal:
- // /*if( TaskSchedulerTimer.alarmLCDFlashTimer != 0 )
- // {
- // TaskSchedulerTimer.alarmLCDFlashTimer--;
- // if( TaskSchedulerTimer.alarmLCDFlashTimer % 3300 == 0 )
- // {
- // TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_SET;
- // }
- // }
- // else
- // {
- // TaskSchedulerFlag.lcdBlackFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除
- // }*/
- //
- // if( TaskSchedulerTimer.alarmLCDFlashTimer != 0 )
- // {
- // TaskSchedulerTimer.alarmLCDFlashTimer--;
- // if( TaskSchedulerTimer.alarmLCDFlashTimer >= TWO_SECOND_TIMER )
- // {
- // LcdFlicker_Flag = TASK_FLAG_SET;
- // }
- // else if( TaskSchedulerTimer.alarmLCDFlashTimer < TWO_SECOND_TIMER )
- // {
- // LcdFlicker_Flag = TASK_FLAG_CLEAR;
- // }
- // }
- // else
- // {
- // TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//闪烁标志清除
- // }
- // break;
- default:break;
- }
- if((emSysWorkStep == EnterJamFault) || (emSysWorkStep == EnterMaxFault) || (emSysWorkStep == EnterBubbleFault)
- || (emSysWorkStep == EnterNonePillCaseFault) || (emSysWorkStep == EnterLineLost) || (emSysWorkStep == EnterBatteryVoltLow)
- || (emSysWorkStep == EnterMechanicalFault) || (emSysWorkStep == EnterTransfuseOver) || (emSysWorkStep == EnterInputTotal) )
- {
- if( TaskSchedulerTimer.alarmLCDFlashTimer != 0 )
- {
- TaskSchedulerTimer.alarmLCDFlashTimer--;
- if( TaskSchedulerTimer.alarmLCDFlashTimer >= TWO_SECOND_TIMER )
- {
- LcdFlicker_Flag = TASK_FLAG_SET;
- if(LCDBlackFlashCount < 3)
- {
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_SET;
- }
- }
- else if( TaskSchedulerTimer.alarmLCDFlashTimer < TWO_SECOND_TIMER )
- {
- LcdFlicker_Flag = TASK_FLAG_CLEAR;
- if(LCDBlackFlashCount < 3)
- {
- TaskSchedulerFlag.lcdBlackFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- else
- {
- TaskSchedulerTimer.alarmLCDFlashTimer = TWO_FIVE_SECOND_TIMER;//闪烁标志清除
- LCDBlackFlashCount ++;
- if(LCDBlackFlashCount >= 3)
- {
- LCDBlackFlashCount = 3;
- }
- }
- if(TaskSchedulerFlag.JamSelfcheckingFlag == TASK_FLAG_SET)
- {
- if(TaskSchedulerTimer.JamSelfcheckingTimer != 0)
- {
- TaskSchedulerTimer.JamSelfcheckingTimer--;
-
- }
- else
- {
- TaskSchedulerTimer.JamSelfcheckingTimer = FIVE_MINUTE_TIMER;
- TaskSchedulerFlag.JamSelfcheckingFlag = TASK_FLAG_CLEAR;
- }
- }
- }
- else
- {
- LCDBlackFlashCount = 0;
- }
- /*PCA锁时不约束于任何暂停报警界面,都将进行计时*/
- if( TaskSchedulerFlag.pcaLockFlag == TASK_FLAG_SET )
- {
- if( TaskSchedulerTimer.pcaLockTimer != 0 )
- {
- TaskSchedulerTimer.pcaLockTimer--;
- if( TaskSchedulerTimer.pcaLockTimer % 60000 == 0 )
- {
- realTimeData.lockTime--;//每60s锁时减1
- TaskSchedulerFlag.PCATimerFlashFlag1 = TASK_FLAG_SET;
- }
- }
- else
- {
- realTimeData.lockTime = 0;
- TaskSchedulerFlag.pcaLockFlag = TASK_FLAG_CLEAR;//清除PCA锁时
- TaskSchedulerTimer.pcaLockTimer = runParamInfo.lockTime * 60000;
- TaskSchedulerFlag.lcdFlashFlag = TASK_FLAG_CLEAR;//闪烁标志清除,防止PCA锁时为0的情况下,进入PCA有效次数不显示
- }
- }
-
- }
- /*************************************************************************************
- * Function: RealTimeStateUpdate
- * Object: 实时数据及状态更新
- * 输入: 无
- * 输出: 无
- * 备注: 在电机工作时根据当前工作状态(此变量motorWorkState)更新输注值
- **************************************************************************************/
- void RealTimeStateUpdate( void )
- {
- uint8_t InputTotalDoseBuff[4];
- if( motorWorkState == MOTOR_WORK_ON )//电机工作
- {
- if( ( realTimeData.stateRun == FirstRun ) || ( realTimeData.stateRun == MainRun ) || ( realTimeData.stateRun == Airout ) || ( realTimeData.stateRun == PCARun ) )
- {
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_WAIT;//检测电机动作是否超时
- TaskSchedulerFlag.sysStandbyFlag = TASK_FLAG_CLEAR;//关闭待机模式
- realTimeData.ctlSlaveRun = StartWork;
- }
- TaskSchedulerFlag.sensorPWHallFlag = TASK_FLAG_SET;//传感器电源-霍尔打开
- if( ( emSysWorkStep == EnterRunFirstDose ) || ( emSysWorkStep == EnterRunMain ) )
- {
- TaskSchedulerFlag.sensorPWPressureFlag = TASK_FLAG_SET;//传感器电源-压力打开
- }
- if(GPIO_ReadInputDataBit( GPIOB,GPIO_Pin_13 ) != 0) //判断电机是否运行,避免重复赋值
- {
- if( sysAlarmFlag.VoltLowest != ALARM_PREPARE )//当预报警时,指示灯亮黄色
- {
- G_LED_ON;//电机运行,点亮绿地
- }
- G_Led_Time=TWO_MSEC_TIMER;//自检LED点亮500ms
- BubbleCheckTime = TWO_MSEC_TIMER;//电机开始运行,给气泡检测传感器重新赋值
- BubbleCountFlag=TASK_FLAG_CLEAR;//在电机运行时,清除该标志进行气泡采集
- ElectricityCheckTime = SEVEN_MSECOND_TIMER; // 电机开始运行,给电流检测传感器重新赋值
- ElectCountFlag=TASK_FLAG_CLEAR;//在电机运行时,清除该标志进行电流采集
- ElectricityOffTime = ONE_SECOND_TIMER; //1s检测一下
- ElectricityOFFflag=0;//定时到,置位该标志
- }
- CntlMotorWork( 10 );
-
- }
- else
- {
- if( ( realTimeData.stateRun == FirstRun ) || ( realTimeData.stateRun == MainRun ) || ( realTimeData.stateRun == Airout ) || ( realTimeData.stateRun == PCARun ) )
- {
- TaskSchedulerFlag.motorRunFlag = TASK_FLAG_SET;//电机停止工作时清除电机等待标志,等待下次启动
- TaskSchedulerTimer.motorSignalCollectTimer = MOTOR_TESTSELF_TIMER;
- TaskSchedulerFlag.sysStandbyFlag = TASK_FLAG_SET;//开启待机模式
- }
- CntlMotorWork(0);
- TaskSchedulerFlag.sensorPWHallFlag = TASK_FLAG_CLEAR;//传感器电源-霍尔关闭
- TaskSchedulerFlag.sensorPWPressureFlag = TASK_FLAG_CLEAR;//传感器电源-压力关闭
- }
-
- if( TaskSchedulerFlag.ipnutFlag == TASK_FLAG_SET )//输注完一次参数变化一次
- {
- switch( realTimeData.stateRun )
- {
- case FirstRun:
- if(TaskSchedulerFlag.JamSelfcheckingFlag == TASK_FLAG_WAIT)//其他量堵塞时,自恢复过程中不计入已输入量
- {
- realTimeData.inputDose += 1;//实时数据的已输入量增加1ml
- inputDose_bf=realTimeData.inputDose;
- realTimeData.InputTotalDose += 1;//实时数据的已输入总量增加1ml
- if( (realTimeData.inputDose % 10) == 0)
- {
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
- if( historyRefreshFlag == 0 )
- {
- // historyRecordQTY++;
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
- }
- realTimeData.firstDose -= 1;//实时数据的首次量每运行一次增加1ml
- realTimeData.surplusDose -= 1;//剩余量减1ml
- TaskSchedulerFlag.ipnutFlag = TASK_FLAG_CLEAR;
- emDisplayPicture = RunFirstDoseDisp;
- }
- break;
- case MainRun:
- case PCARun:
- if(TaskSchedulerFlag.JamSelfcheckingFlag == TASK_FLAG_WAIT)//其他量堵塞时,自恢复过程中不计入已输入量
- {
- if( TaskSchedulerFlag.SuperadditionFlag == TASK_FLAG_SET )
- {
- realTimeData.superaddition -= 1;
- }
- realTimeData.inputDose += 1;//实时数据的已输入量增加1ml
- inputDose_bf=realTimeData.inputDose;
- realTimeData.InputTotalDose += 1;//实时数据的已输入总量增加1ml
- if( (realTimeData.inputDose % 10) == 0)
- {
- InputTotalDoseBuff[0]=(uint8_t)((realTimeData.InputTotalDose>>24)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[1]=(uint8_t)((realTimeData.InputTotalDose>>16)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[2]=(uint8_t)((realTimeData.InputTotalDose>>8)&0x00ff); //输入量变化,向FM31256里写入新的数据
- InputTotalDoseBuff[3]=(uint8_t)(realTimeData.InputTotalDose&0x00ff);
- FlashWriteOperate( InputTotalDoseBuff,4,HISTORY31256_DATA_InputTotalDose );
-
- if( historyRefreshFlag == 0 )
- {
- // historyRecordQTY++;
- HistoryQtyAdd();
- WriteHistoryRecordQTY();
- historyRefreshFlag = 1;
- }
- WriteHistoryRecord();
- }
- realTimeData.surplusDose -= 1;//剩余量减
- realTimeData.inputLimitDose += 1;//极限量值累加
- TaskSchedulerFlag.ipnutFlag = TASK_FLAG_CLEAR;
- if( emCurrentPicture == RunMainDisp )
- {
- emDisplayPicture = RunMainDisp;
- }
- else if( emCurrentPicture == RunPCADisp )
- {
- emDisplayPicture = RunPCADisp;
- }
- // if(realTimeData.stateRun == MainRun)
- // {
- // emDisplayPicture = RunMainDisp;
- // }
- // else if( realTimeData.stateRun == PCARun )
- // {
- // emDisplayPicture = RunPCADisp;
- // }
- }
- break;
- case Pause:
- if(ran == 1)
- {
- if(realTimeData.firstDose != 0)
- {
- realTimeData.firstDose -= 1;
- realTimeData.inputDose += 1;//实时数据的已输入量增加1ml
- inputDose_bf=realTimeData.inputDose;
- realTimeData.InputTotalDose += 1;//实时数据的已输入总量增加1ml
- // emPictureRunState = FirstEnter ;
- DrawRunFirstDosePicture();
-
- }
- else
- {
- realTimeData.inputDose += 1;//实时数据的已输入量增加1ml
- inputDose_bf=realTimeData.inputDose;
- realTimeData.InputTotalDose += 1;//实时数据的已输入总量增加1ml
- // emPictureRunState = FirstEnter ;
- DrawRunMainPicture();
- }
- TaskSchedulerFlag.ipnutFlag = TASK_FLAG_CLEAR;
- }
- break;
- case Airout:
- realTimeData.airoutValue++;//排气量就是电机转动次数
- TaskSchedulerFlag.ipnutFlag = TASK_FLAG_CLEAR;
- if(realTimeData.airoutValue == 20)
- {
- emDisplayPicture = SetParamDisp;
- }
- else
- {
- emDisplayPicture = AiroutDisp;
- }
- break;
- default:
- TaskSchedulerFlag.ipnutFlag = TASK_FLAG_CLEAR;
- break;
- }
- }
- }
|