Բովանդակություն:

ԱՀ սարքաշարի մոնիտոր. 6 քայլ (նկարներով)
ԱՀ սարքաշարի մոնիտոր. 6 քայլ (նկարներով)

Video: ԱՀ սարքաշարի մոնիտոր. 6 քայլ (նկարներով)

Video: ԱՀ սարքաշարի մոնիտոր. 6 քայլ (նկարներով)
Video: SDN 101: A Comprehensive Guide for IT Professionals 2024, Նոյեմբեր
Anonim
Համակարգչի ապարատային մոնիտոր
Համակարգչի ապարատային մոնիտոր
Համակարգչի ապարատային մոնիտոր
Համակարգչի ապարատային մոնիտոր
Համակարգչի ապարատային մոնիտոր
Համակարգչի ապարատային մոնիտոր

Բարեւ բոլորին. Ես սկսեցի այս նախագիծը երկու պատճառով. Ես վերջերս համակարգչումս ջրամատակարարման օղակ էի կառուցել և ինչ -որ բանի կարիք ունեի, որպեսզի տեսողականորեն լրացնեի ինչ -որ տեղ պատյանում, և ես ուզում էի, որ կարողանայի ջերմաստիճանը և այլ վիճակագրությունները ստուգել արագ հայացքով ՝ առանց OSD- ի նշանների լրացման: էկրանի անկյունը: Իհարկե, դրա համար կան պատրաստի լուծումներ, բայց դրանցից շատերը պարզապես չէին համապատասխանի իմ ֆենգ շուիին: Այսպիսով, իմ պատյանում HDMI 7 դյույմանոց էկրան տեղադրելու փոխարեն, որի պատյանը դուրս է գալիս պատուհանների առաջադրանքի տողը, ես որոշեցի կառուցել իմ սեփական խաղալիքը:

Քանի որ ես ոչ ինժեներ եմ, ոչ ծրագրավորող, այլ պարզապես զոդող երկաթով և որոշ ինքնակրթված գիտելիքներով տղա, սա պարզապես քայլ առ քայլ հրահանգիչ չի լինի, ես նաև կփորձեմ կենտրոնանալ խնդրի վրա լուծման և հետազոտման ասպեկտները, որոնք ինձ հասցրեցին այս կառուցմանը:

ՀՐԱԱՐՈԹՅՈՆ. ԻՄ ԱՄԲՈՐ ԱՇԽԱՏԱՆՔԸ ԿԻՍՎԵԼՈ AS ՄԻ ԱՐՏԱԴՐԱԿԱՆ ՀԱՆՐԱՊԵՏԱԿԱՆ ԱՐՏՐԻԲՈԹՅՈ -Ն-ԿԻՍՎԵԼ 4.0. Ո TՇԱԴՐՈԹՅՈՆ ԵՍ վերցրել բազմաթիվ օրինակներից ամբողջ ինտերնետում, ԵԹԵ THԱՆԱՉՈՄ ԵՔ ՁԵՐ ԱՅՍ ԱՇԽԱՏԱՆՔԻ ՈՐՈՇ ՄԱՍԻՆ, ԽՆԴՐՈՄ ԵՆՔ ՁԵՌՆԱՐԿՈ FORԹՅԱՆ ՀԱՄԱՐ ԴԻՄԵՔ ԻՆՁ: ՈՉ ԽՆԴԻՐ ՄՏԱՎՈՄ Է, ԵՐAPԱՆԻԿ ԵՍ YԱՆԿԱՆՈԹՅՈՆ CՈCTՈՄ: ՇՆՈՐՀԱԿԱԼՈՒԹՅՈՒՆ

ԵՐԿՐՈՐԴ ՀԱISՈՈԹՅՈՆ. ԻՄ ԱՇԽԱՏԱՆՔԸ ԿԻՍՎԵԼ Է, ինչպես և: Ես ՊԱՏԱՍԽԱՆԱՏՈ ՉԵՄ COԱՆԿԱԱ ՈՅԻ ՀԱՄԱՐ ԻՄ ԿՈԴԻ ԵՎ STRՈ INՈIONՄՆԵՐԻ:

Պարագաներ

  • Arduino Nano (կամ UNO, եթե ցանկանում եք)
  • TFT էկրան: Իմ դեպքում դա ILI9486 / ILI9488L համատեղելի 3.5 դյույմ էկրան է:
  • Senերմաստիճանը Senso. Իմ դեպքում անալոգային TMP36 ջերմաստիճանի տվիչ:
  • Մալուխներ, լարեր, դուպոնտի միակցիչներ (դրա մասին ավելի ուշ)
  • (ըստ ցանկության) Փորձարկման համար նախատեսված տախտակ
  • (ըստ ցանկության, բայց խորհուրդ է տրվում) մի փոքրիկ տախտակ

Քայլ 1: Իրագործելիության ուսումնասիրություն (տեսակ)

Ինչպես ասացի, ես չէի ուզում, և HDMI էկրանը խրված էր իմ համակարգչի պատյանում, այնպես որ, թաքցրած իմ հնարամտությամբ, ես սկսեցի նման գաղափարներ փնտրել ինտերնետում: Եվ սա հուշում թիվ մեկն է. Google- ը ձեր ընկերն է (լավ, ցանկացած արժանապատիվ որոնիչ…): Մենք ապրում ենք մի աշխարհում, որտեղ ոչինչ իրականում այլևս օրիգինալ չէ, բայց այս արտահայտությանը բացասական իմաստով նայելու փոխարեն մենք կարող ենք դա օգտագործել որպես մեր առավելություն. չգիտեք, թե ինչպես իրականացնել գաղափար, լավ հավանականություն կա, որ այնտեղ օգտակար տեղեկություններ կգտնեք: Ինտերնետում որոնելիս հաճախ օգտակար է հաշվի առնել երկու կանոն.

  1. մի անհանգստացեք, որևէ որոնման 3 -րդ կամ 4 -րդ էջերից հետո գնաք, դա գրեթե միշտ ժամանակի կորուստ է: Փոխարենը
  2. փոխեք որոնման տերմինները, պարզապես վերափոխեք հարցը մեկ այլ տեսանկյունից (այսինքն ՝ «arduino ջերմաստիճանի ցուցիչ» -> «կարդալ ջերմաստիճան arduino- ով»):

Իրականում այն լի է լավ նախագծերով, և ես խոստովանում եմ, որ առաջին օրերն անցկացրել եմ այս նախագծերի մեծ մասի ուսումնասիրության մեջ: Բայց նրանցից ոչ մեկը պատրաստ չէր գնալ ինձ համար, քանի որ ես ուզում էի մի բան, որը կհամապատասխաներ իմ կարիքներին:

Քանի որ ես ստիպված էի ինչ -որ բան սովորույթ դարձնել, որոշեցի կենտրոնանալ ճիշտ օգտագործվող սարքաշարի վրա և թողնել ծրագրակազմը հետագայում, քանի որ ծրագրակազմը միշտ կարող է ստեղծվել և հարմարվել կարիքներին, մյուս կողմից ՝ ապարատային կողմը ես կապված եմ հասանելիության հետ: և առանձնահատկություններ:

Ես ուզում էի ինչ -որ բան Arduino- ի հիման վրա, քանի որ այն արդեն ունեի, դա լավ փաստաթղթավորված է, և համայնքը ծաղկում է: Այստեղ խնդիր չկա, ինչպես ասացի նախքան շատ տեղեկատվություն:

Ես ցանկանում էի, որ բավականաչափ մեծ էկրան մի քանի մետր հեռավորության վրա հստակ երևա, և որը կհամապատասխանի իմ կառուցվածքի արտաքին տեսքին, սա բացառում էր ցանկացած Nokia և LCD բնույթի էկրաններ: OLED- ը նույնպես քննարկման ենթակա չէ, քանի որ դրանք փոքր են: Այսպիսով, ես ընտրեցի TFT գունավոր էկրան: Սենսորային էկրանի կարիք չկա, քանի որ այն կլինի ԱՀ -ի ներսում: Ես գտա 3.5 դյույմանոց, որն արդեն նախագծված էր Arduino- ի համար, € 15 € Amazon Amazon- ում: Բավական լավ:

Այժմ, երբ ապարատը ճշգրտվել է, ես կենտրոնացա ծրագրակազմի վրա:

Գրեթե բոլոր նախագծերը, Arduino- ի կողմից, բավականին նման են: Ես պարզապես պետք է հարմարեցնեմ կոդը ցուցադրման և հաղորդակցության արձանագրության համար ՝ սերվերի հավելվածից տվյալներ հավաքելու համար: Համակարգչային կողմից, նախագծերի մեծամասնությունը հիմնված էին C, C ++, C#, python- ի վրա և նախագծերի մեծ մասն առաջարկում էր ընդամենը CLI ինտերֆեյս կամ Windows ծառայության նման սերվեր: Փոխարենը ես GUI էի ուզում: Ես երբեք Windows- ում C- ի նման լեզու չեմ օգտագործել, միայնակ թողեք GUI շենքը: Բայց ես 15 տարի առաջ սովորեցի Visual Basic- ի մասին, ուստի փորձեցի և ներբեռնեցի Microsoft- ից Visual Studio- ի անվճար տարբերակը:

Շատ նմանատիպ նախագծեր ուսումնասիրելուց հետո ես որոշեցի օգտագործել OpenHardwareMonitor- ը ՝ ձեռք բերելու բոլոր ապարատային տվյալները և RivaTuner- ը FPS- ի համար, քանի որ դրանք անվճար են և բավականաչափ փաստաթղթավորված:

Քայլ 2: Սարքավորման փորձարկում

Սարքավորման փորձարկում
Սարքավորման փորձարկում
Սարքավորման փորձարկում
Սարքավորման փորձարկում
Սարքավորման փորձարկում
Սարքավորման փորձարկում

Beforeոդման երկաթը միացնելուց և ժամանակի և տարածության մեջ էլեկտրոնային որևէ բաղադրիչի ընդմիշտ ամրացումից առաջ փորձնական նախատիպ կառուցելը (հուշում թիվ երկու) լավ փորձ է: Բարեբախտաբար, այժմ 1995 թվականը չէ: Մեր օրերում բավականին բարդ նախատիպեր կազմակերպելը նույնիսկ փոքր գրատախտակների վրա է: Իմ դեպքում, TFT էկրանը Arduino Uno- ի համար նվազեցրեց քորոցը, ուստի այն թողեցի Arduino uno- ի վրա և սկսեցի խաղալ գրադարանների օրինակների հետ և կարդալ տեղեկատու ձեռնարկները `հասկանալու դրա գործունեության սկզբունքներն ու սահմանափակումները:

Այս պահին ես հասկացա, թե ինչպես գծեր և բիտ քարտեզներ նկարել և տեքստ գրել, այնպես որ ես սկսեցի զբաղվել ծրագրային կոդավորմամբ ՝ թողնելով բոլոր երկրորդական իրերը հետագայում, բայց ես այստեղ կներառեմ ջերմաստիճանի տվիչը:

Գծի ինչ -որ պահի ես էկրանին դատարկ տեղ ունեի, բայց համակարգչի տվիչների տվյալներից ոչ մեկն իսկապես օգտակար չէր, ուստի որոշեցի պատյանում տեղադրել ջերմաստիճանի տվիչ `շրջակա միջավայրի ջերմաստիճանի համար: Էկրանը ուտում է Arduino- ի գրեթե բոլոր կապում, բարեբախտաբար, A5 անալոգային կապը չօգտագործված է, այնպես որ ես կապեցի TMP36- ը: Ես նույնիսկ փորձարկել եմ DHT22, բայց դա չափազանց գերբեռնված է այս հավելվածի համար:

TMP36- ի համար շատ օրինակներ կան, ես պարզապես պատճենեցի դրանցից մեկը գործառույթում: TMP35- ն ունի 3 կապ, Vin- ը `5V, GND- ը` գետնին, իսկ Out- ը `A5 կապին: Ես տեղադրեցի 0.1uF կերամիկական կոնդենսատոր Vin- ի և GND- ի միջև: Նրանք ասում են, որ դա անհրաժեշտ է: Հավանաբար, այս դեպքում դա անօգուտ է, բայց… Ես նույնիսկ Arduino- ի անալոգային հղման լարումը դրել եմ 3.3 վ փինի վրա `ջերմաստիճանի ավելի լավ ընթերցման համար: Այս դեպքում դեռ անօգուտ է, բայց…

Քայլ 3: Arduino կոդ

Խնդրում ենք ներբեռնեք և բացեք ներառված Arduino ծածկագիրը ՝ այս քայլին տրված բացատրությանը հետևելու համար: Ես փորձեցի ծածկագրում թողնել բավականաչափ մեկնաբանություններ, որպեսզի պարզ լինի առանց այն հեղեղելու:

Ձեզ միանշանակ անհրաժեշտ կլինեն MCUFRIEND_kbv և Adafruit GFX գրադարանները: Երկուսն էլ հեշտությամբ տեղադրելի են Arduino IDE- ից:

Րագիրը կարելի է բաժանել հետևյալ բաժինների.

  1. սահմանել և հռչակել բոլոր գլոբալ փոփոխականները և անհրաժեշտ այլ իրեր
  2. սկզբնականացնել էկրանը, սահմանել արտաքին տեղեկանքը և նկարել UI- ն (այս ամենը պարունակվում է setup () գործառույթում, քանի որ այն պետք է գործի միայն մեկ անգամ)
  3. կարդալ տվյալները սերիական միացումից և դրանք տեղաբաշխել զանգվածում (loop () գործառույթում)
  4. կարդալ արտաքին ջերմաստիճանի տվիչի տվյալները (readExtTemp () գործառույթը)
  5. տպել տվյալները էկրանին (printData () գործառույթը)
  6. վերադառնալ հանգույց

ԲԱECԻՆ 1. Հռչակագրեր և սահմանումներ

Կոդի սկզբնական բաժնում ես օգտագործել եմ բազմաթիվ ցուցիչներ և զանգվածներ, ուստի ես կարողացել եմ սեղմել շատ կրկնվող տողեր կոդի ավելի կարճ ՝ FOR ցիկլեր գրելու համար: Այո, ես ծույլ եմ: Ինչպես տեսնում եք, ես հայտարարեցի ցուցիչի զանգված և այն լցրեցի pics.h ֆայլից բոլոր նկարներով: Սա հնարավորություն տվեց կատարել FOR ցիկլի հնարք ՝ բոլոր պատկերակները նկարելու համար:

ԲԱECԻՆ 2. Setup (), հիմնականում UI նկարչություն

Ես կարգավորեցի կանխադրված տառատեսակը, քանի որ այն չունի թափանցիկ ֆոն, ուստի այն թույլ է տալիս հին տեքստի վրա գրել նոր տող ՝ առանց այն ջնջելու: Մեկ այլ տառատեսակի օգտագործումը կնշանակեր հին տեքստի վրա սև քառակուսի գծել ՝ նախքան նոր տող գրել, ինչը կհանգեցներ տհաճ թարթման էֆեկտի:

Որոշ փորձարկումներից հետո ես լավ փոխզիջման հասա ընթերցելիության և ցուցադրված տեղեկատվության միջև: Ես ցուցադրումը բաժանեցի երկու սյունակի և 5 տողի: Ձախ սյունակը վերաբերում է պրոցեսորի և մայր տախտակի տվյալներին, ներառյալ վերևից ներքև պրոցեսորի անունը, ջերմաստիճանը, բեռը, RAM- ի օգտագործումը և մայրական տախտակի ջերմաստիճանը: Rightիշտը `նվիրված GPU- ին և ներառում է GPU- ի անունը, ջերմաստիճանը, բեռը, շրջանակներ մեկ վայրկյանում հաշվիչն ու արտաքին ջերմաստիճանի տվիչը:

Ինչպես տեսնում եք ծածկագրում, ես որոշեցի խուսափել SD քարտի վրա նկարներ օգտագործելուց, քանի որ այն իսկապես դանդաղ է բեռնում: Որոշեցի բոլոր պատկերակները ներառել PROGMEM հիշողության մեջ և գծեր գծել հատուկ drawLine () հրամանով: սա նաև օգտակար է փոքր UI ուղղումների համար:

UI- ին խորության տեսք տալու տկար փորձի ժամանակ ես նկարեցի ամեն ինչից երկուսը (տողեր, ուղղանկյուններ, նկարներ) տարբեր գույներով և փոքր օֆսեթով: Lyավոք, դա այն արդյունքը չէ, որի վրա ես հույս ունեի, բայց դա անելու է հնարքը:

Այս գործառույթի վերջին տողերը նախատեսված են TFT- ով տեղակալներ տպելու համար, մինչև Arduino- ն ստանա տվյալները:

ԲԱTԻՆ 3. Հիմնական հանգույց (), տվյալների հավաքում և ձևավորում

Այստեղ տեղի է ունենում կախարդանքը. Տվյալները ստացվում են սերիայի միջոցով, վերագրվում ճիշտ փոփոխականին և տպվում: Այս ամենին նվազագույն թվով տողերում հասնելու համար ես օգտագործեցի switch գործի հրաման և a for cycle:

Հաղորդակցության արձանագրությունը, որի հետ ես եկել եմ, բաժանված է երկու մասի. Մեկ անգամ ձեռքսեղմման սկզբնական կատարում և տվյալների իրական մաս:

Ձեռքի սեղմումը անհրաժեշտ է համակարգչային ծրագրի մեկնարկի ժամանակ ինքնակապի գործառույթը իրականացնելու համար: Այն անցնում է այսպես.

  • ԱՀ -ն ուղարկում է ձեռքսեղմման տողը (այս դեպքում պարզապես «*****;»)
  • Արդուինոն հետ է ուղարկում պատասխանը

Հեշտ քսուք:

Տվյալների հատվածն ունի այս տեսքը. "I: xxx, yyy, zzz, aaa,;" իմաստը հետևյալն է.

«i» - ն ինդեքսն է, ես այն անվանեցի componentSelector ծածկագրում: «i» արժեքներն են.

  • i = 0 - ԱՆՎԱՆՈՄՆԵՐ: Հետևյալ արժեքները էկրանին ցուցադրվող առաջին շարքում նշված անուններն են: Սա կուղարկվի և կտպվի էկրանին միայն մեկ անգամ, այսօրվա դրությամբ բավականին դժվար է հեռացնել պրոցեսորը և գրաֆիկական պրոցեսորը…
  • i = 1 - 1 -ին ՍՅՈՆԱԿԱՆ ՏՎՅԱԼՆԵՐ - վերևից ներքև ցուցադրված են հետևյալ արժեքները ցուցադրման ձախ կեսում: Իմ դեպքում `պրոցեսորի ջերմաստիճանը, պրոցեսորի բեռը, RAM- ի օգտագործումը, մայրական տերմինը:
  • i = 2 - 2 -րդ Սյունակի ՏՎՅԱԼՆԵՐ - ինչպես վերևում, բայց ցուցադրման աջ կեսի համար
  • i = 3 - ՏՊԱԳԻՐ ՀՐԱՄԱՆ: Այս դեպքում սերիական հումքը կլինի ընդամենը «3:;»: քանի որ այլ տվյալներ պետք չեն:

"xxx, yyy, zzz, aaa" իրական արժեքներն են: դրանք կարդում են arduino- ի կողմից որպես տողեր, և ամբողջ ձևաչափումը կատարվում է ԱՀ ծրագրով: I = 0 -ի դեպքում այս արժեքները 14 նիշ են `սարքավորման անունների համար: I = 1 -ի կամ 2 -ի դեպքում դրանք կլինեն ընդամենը երեք նիշ, բավարար վայրկյանում ջերմաստիճանի և շրջանակների ցուցադրման համար: Իհարկե ":", "," և ";" Այս դաշտերում նշաններն արգելված են:

«:» - ն բաղադրիչ ընտրողի և արժեքների միջև տարանջատիչն է, «,» - ն արժեքների անջատիչն է և «;» - ն է: տողի վերջն է

Տվյալները ստանալիս Arduino- ն այն կպահի որպես տող մինչև «;»: խորհրդանիշը վերականգնվում է, այնուհետև այն կփնտրի "" խորհրդանիշը և այն կօգտագործի componentSelecor արժեքը ստանալու համար: Սա կօգտագործվի անջատիչի գործի գործառույթի համար, որը պետք է ընտրի ճիշտ ընթացակարգը: Այն օգտագործվում է նաև allData զանգվածում ճիշտ ինդեքս ընտրելու համար:

Դրանից հետո Arduino- ն կփնտրի «» խորհրդանիշը և կշարունակի տեղադրել արժեքները allData զանգվածում:

Եթե componentSelector- ը 0 է, printName դրոշը կտեղադրվի true: Եթե componentSelector- ը 3 է, կանչվում են readExtTemp () և printData () գործառույթները:

Բաժին 4. ReadExtTemp () գործառույթը

Այստեղ շատ բան չկա ասելու, այն 32 անգամ կարդում է A5 կապից և դուրս է բերում ջերմաստիճանի արժեքը որպես տող: Ես ապստամբների հետ եմ, ուստի ես օգտագործում եմ elsելսիուսը: 100 ° C- ից բարձր որևէ բան սխալ է, այնպես որ այն էկրանին կցուցադրվի որպես «---»: 100 ° C- ից պակաս որևէ բանի համար կձևակերպվի այնպես, որ ունենա բավականաչափ տարածություններ `էկրանին 3 նիշ տարածություն ծածկելու համար: Հնարավոր է հեռացնել և նորից տեղադրել սենսորը, և ոչ մի տարօրինակ արժեք չի ցուցադրվի:

Բաժին 5: printData () գործառույթը

Ինչպես միշտ, ես օգտագործում էի ցիկլեր ՝ էկրանին իրեր հաջորդաբար տպելու համար: Եթե դրոշը printNames- ը ճշմարիտ է, այն տպում է անունները, դրոշը սահմանում է false և կշարունակի:

Բաժին 6. Վերադառնալ հանգույց

Ինքնաբավարարելով բավականաչափ, ես կասեի…

pics.h ֆայլ

Այստեղ ես պահեցի բոլոր պատկերակները UI- ի համար: Հնարավոր է օգտագործել ցուցադրման մեջ ներառված SD քարտի ընթերցողը, բայց Arduino- ում բավականաչափ հիշողություն էր մնացել իմ սև ու սպիտակ պատկերակների համար:

Ես դրանք նախագծել եմ Junior Icon Editor- ով, քանի որ այն անվճար է և բավականին լավ է փոքր սրբապատկերներ պիքսել նկարելու համար: Ստիպված էի SKAARHOJ առցանց գործիքի հետ փոխակերպել պատկերակի ֆայլերը (պահված են որպես PNG):

Քայլ 4: Visual Basic կոդ

Visual Basic կոդ
Visual Basic կոդ

Ահա VB ծածկագիրը

NOTԱՆՈԹՈԹՅՈՆ. Սա առաջին անգամն է, որ ես կիսում եմ Visual Studio- ի նախագիծը: Ես պարզապես պատճենեցի նախագծի թղթապանակները և սեղմեցի դրանք: Եթե դա չի աշխատում, խնդրում եմ ինձ տեղեկացրեք այս տեսակի նախագծերը կիսելու ավելի լավ եղանակի մասին: Շնորհակալություն

Ինչպես ավելի վաղ ասացի, ես չեմ կարող C# կամ այլ լեզուներով GUI ստեղծել, բայց ես վաղուց որոշ փորձեր ունեի Visual Basic- ում: Ես ներբեռնեցի Visual Studio Community հրատարակությունը (իհարկե անվճար է) Visual Basic միջավայրով: Դե, ես ստիպված էի շատ բաներ պարզել, քանի որ VB- ն վերջին անգամ օգտագործել եմ 2005 -ի կամ նման այլ տարբերակով … Բայց ինտերնետը, ինչպես միշտ, լի է լավ հուշումներով:

Ինտերֆեյսի որոշ իրեր պարզելուց հետո նոր տարբերակն իրականում ավելի հեշտ և ճկուն է, քան հինը:

Այս ծրագրի համար ես ուզում էի ինչ -որ բան պատուհանների ձևով, բայց լիովին կառավարելի համակարգի սկուտեղի պատկերակից: Իրականում ես ձևը օգտագործեցի գրեթե միայն վրիպազերծման նպատակների համար, քանի որ սիրում եմ տեղադրել տեքստային տուփեր և ցուցակներ `գործառույթների ելքային արժեքները կարդալու համար և որոշ հրամանների կոճակներ` դրանք ստուգելու համար:

«Վերջնական» ծրագիրը պարզապես սկուտեղի պատկերակ է ՝ թռուցիկ ընտրացանկով, որը ցույց է տալիս տարբեր կառավարման տարրերը և հիմնական ձևը ՝ երկու ցուցակներով, որոնք ցույց են տալիս Arduino- ին ուղարկված տվյալները:

Ես իրականացրեցի ավտոմատ միացման գործառույթ և «սկսել բեռնաթափումից» գործառույթը: Այդ մասին ավելի ուշ:

Հիմնական ծրագիրը պարզապես կոդի տարբեր օրինակների և հատվածների հարմարեցում է `օգտագործելով OpenHardwareMonitor գրադարանը և RivaTuner Shared Memory գրադարանը:

Րագիրն այսպիսին է.

  • ստացեք տվյալները OpenHardwareMonitor և RTSSSm գրադարաններից
  • պատրաստել և ձևակերպել բոլոր տվյալները հաղորդակցության արձանագրության համար
  • ուղարկեք տվյալները Arduino- ին
  • լվանալ և կրկնել

իհարկե, ապարատային անվանումները սկզբում կարդացվում են և ուղարկվում են միայն մեկ անգամ:

FPS հաշվիչն ակտիվանում է միայն այն դեպքում, երբ օգտագործվում է համատեղելի ծրագիր (օրինակ ՝ խաղ, 3D մոդելավորման ծրագիր և այլն), հակառակ դեպքում «---» տեղապահը կուղարկվի ցուցադրման:

Ես չեմ խորանա ՝ բացատրելով, թե ինչպես կարելի է արժեքներ ստանալ գրադարաններից, քանի որ դա լավ փաստագրված է ինտերնետում և որոշ չափով հասկանալի է ծածկագրից: Պարզապես ուզում եմ պատմել OpenHardwareMonitor (այսուհետ OHMonitor, քանի որ կյանքը չափազանց կարճ է) գրադարանի միջոցով մայրիկի ջերմաստիճանը ցուցադրելու խնդիրների մասին: Ես ունեմ Asus Maximus VIII Gene MoBo, որը հագեցած է մայր տախտակի վրա fu ** տոն ջերմաստիճանի տվիչներով, բայց OHMonitor- ը դրանք անվանում է որպես ջերմաստիճանի տվիչ #1, #2… #n Ո now ոչ մի տեղ նշված չէ ջերմաստիճանի վայրը: Այսպիսով, ես ստիպված էի տեղադրել սարսափելի Asus AI փաթեթային ծրագրակազմ, որտեղ սենսորներն ունեն առնվազն NAMES և համեմատում են երկու ծրագրերի միջև եղած տարբեր ջերմաստիճանները: Կարծես թե իմ մայրական տախտակի ընդհանուր ջերմաստիճանի տվիչը #2 է OHMonitor- ի համար, այնպես որ ինչպես կարող եք տեսնել Timer1_tick ենթակետում MoBo- ի իրերի ներքո, ես պետք է փնտրեի « #2» տող պարունակող սենսորի անուն ՝ ճիշտ ընթերցում ստանալու համար:

TL; DR. Դուք ինքներդ պետք է հոգաք մայրական տախտակի ջերմաստիճանի ճիշտ տվիչների համար: Մնացածը երևի լավ է գնալ:

Այնուամենայնիվ, սա միայն 1 -ին տարբերակն է, ես մտադիր եմ տեղադրել այս գործիքը իմ մյուս համակարգչում, այնպես որ ես, հավանաբար, կիրառում եմ սենսորների ընտրության միջոց և գուցե նույնիսկ վերափոխելու Arduino- ի ինտերֆեյսը շարժման մեջ:

Ավտոմատ միացման գործառույթը

Այս գործառույթը իրականում պարզ է. Եթե ԱՀ -ն միացված չէ Arduino- ի հետ, յուրաքանչյուր x միլիվայրկյան (ժամանակաչափի հիման վրա) այս գործառույթը կոչվում է: Այն փորձում է միանալ ԱՀ -ի յուրաքանչյուր COM պորտին, հաջողության դեպքում այն ուղարկում է ձեռքսեղմման տող «*****;»: Եթե պատասխանը «R» է, ապա ճիշտ սարքը միացված է, և կատարվում է սովորական ընթացակարգը: Այլապես, այն փորձում է հաջորդ COM նավահանգիստը:

Ինչպես տեսնում եք, այս գործառույթում կան բազմաթիվ բացառություններ: Դա պայմանավորված է նրանով, որ ես ուզում էի, որ այն ամբողջությամբ միացված և խաղարկվեր, առանց որևէ սխալի ելքի: Բացառությունների դեպքում ես կարողացա այնպես անել, որ անտեսվի արտաքին սարքի լիակատար բացակայությունը, և ես նույնիսկ կարող եմ սարքը տաք միացնել և միացնել այն, երբ ուզում եմ, առանց ծրագրի կոտրող սխալ առաջացնելու:

Սկսել բեռնաթափման գործառույթը

Ես ուզում էի, որ ծրագիրը սկսվի boot- ից: Բավականին հեշտ է, ասում եք: Հղում տեղադրեք համապատասխան թղթապանակում, ասում եք: Բայց ոչ. OHMonitor- ի և RTSS գրադարանների շնորհիվ տեղեկատվություն հավաքելու համար մեզ անհրաժեշտ է ադմինիստրատորի կատարման մակարդակ: Սա նշանակում է UAC- ի բոլորովին նյարդայնացնող էկրան ամեն անգամ, երբ այս ծրագիրը գործարկվում է: Ոչ մի դեպքում. Այսպիսով, ես հարմարեցրի Մեթյու Վայի պատրաստած սցենարը (հղումը այստեղ) `բեռնախցիկի լուռ մեկնարկին հասնելու համար: Ես պարզապես պատճենեցի Resource1 ֆայլի սցենարը, բաժանվեց մի քանի մասի, այնուհետև կիրառեցի մի ենթածրագիր, որը ստեղծում (կամ հեռացնում է) windows- ի առաջադրանքի ֆայլը ՝ հարմարեցված ընթացիկ ծրագրի կատարման վայրի և նման բաների հետ:

Համակարգի սկուտեղի պատկերակը

NotifyIcon- ի և ContextMenu- ի օբյեկտների շնորհիվ ես կարողացա կիրառել ծրագիրը վերահսկելու հեշտ և ճարպոտ եղանակ: Պարզապես աջ կտտացրեք սկուտեղի պատկերակին և հայտնվում է ընտրացանկը: Կան այս տարբերակները.

  • Սկսել boot- ից. Կարող եք ստուգել և չեղարկել այն ՝ միացման կամ անջատման մեկնարկը բեռնման գործառույթը միացնելու կամ անջատելու համար
  • Ավտոմատ միացում. Նույնը, ինչ վերևում է, բայց կարգավորում է ինքնակապի գործառույթը
  • Միացում/անջատում. Այն կարգավորում է կապը: Չի աշխատում, երբ միացված է ավտոմատ միացումը
  • Թարմացման ժամանակը. Տալիս է բացվող ենթամենյու, կարող եք ընտրել թարմացման ժամանակը 1 -ից տասը վայրկյան
  • Մեծացնել. Բացում է հիմնական պատուհանը: Նույնը, ինչ կրկնակի կտտացնելով պատկերակին
  • Ելք ՝ ինքնաբացատրվող

Ilingրագրակազմի կազմում

Theրագրակազմը կազմելու համար հավանաբար անհրաժեշտ կլինի ներբեռնել և տեղեկանք ավելացնել այն գրադարաններին, որոնք ներառված չեն ծածկագրում:

Այստեղ կարող եք գտնել OpenHardwareMonitor գրադարանը: Դուք պետք է ներբեռնեք ծրագրակազմը, բացեք zip ֆայլը և պատճենեք OpenHardwareMonitorLib. DLL ֆայլը ծրագրի թղթապանակում:

Ահա RTSSharedMemoryNET գրադարանի հղումը, դուք պետք է ներբեռնեք և կազմեք ձեր ճարտարապետության համար, այնուհետև պատճենեք RTSS [TL; DR] moryNET. DLL ձեր ծրագրի թղթապանակում:

Այժմ դուք պետք է տեղեկանք ավելացնեք ձեր ծածկագրում, հրահանգներն այստեղ

Համոզվեք, որ կազմեք երկու RTSS [TL; DR] moryNET և PCHwMon սերվերային նախագծերը նույն ճարտարապետության համար:

Ես ներառեցի պատրաստի տեղադրման ծրագիր, այնպես որ կարող եք ամբողջը տեղադրել առանց Visual Basic- ի հետ խառնաշփոթության: Այն կազմված է x86- ի համար, աշխատելու է ինչպես x86, այնպես էլ x64 ճարտարապետությունների վրա: Այն պահանջում է. NET շրջանակ 4.7.2 գործարկումը:

Ամեն դեպքում, ձեզ հարկավոր կլինի տեղադրել RivaTuner: Այն կարող եք գտնել այստեղ որպես ինքնուրույն ծրագիր կամ կարող եք տեղադրել Msi Afterburner- ը, որը պետք է ներառի RTServer- ը:

Քայլ 5. Սարքավորման վերջնական ներդրում

Խորհուրդ ենք տալիս: