Სარჩევი:

კომპიუტერის აპარატურის მონიტორი: 6 ნაბიჯი (სურათებით)
კომპიუტერის აპარატურის მონიტორი: 6 ნაბიჯი (სურათებით)

ვიდეო: კომპიუტერის აპარატურის მონიტორი: 6 ნაბიჯი (სურათებით)

ვიდეო: კომპიუტერის აპარატურის მონიტორი: 6 ნაბიჯი (სურათებით)
ვიდეო: კომპიუტერის უკაბელოდ დაკავშირება ტელევიზორთან 2024, ივლისი
Anonim
კომპიუტერის აპარატურის მონიტორი
კომპიუტერის აპარატურის მონიტორი
კომპიუტერის აპარატურის მონიტორი
კომპიუტერის აპარატურის მონიტორი
კომპიუტერის აპარატურის მონიტორი
კომპიუტერის აპარატურის მონიტორი

Გამარჯობა ყველას. მე დავიწყე ეს პროექტი ორი მიზეზის გამო: მე ახლახანს ავაშენე წყლის გამაგრილებელი მარყუჟი ჩემს კომპიუტერში და მჭირდებოდა რაღაც ვიზუალურად შეავსო ადგილი ამ საქმეში და მე მინდოდა რომ შემეძლოს ტემპერატურისა და სხვა სტატისტიკის შემოწმება სწრაფი დაკვირვებით OSD- ის შუქების გარეშე ეკრანის კუთხე. რა თქმა უნდა, არსებობს მზა გადაწყვეტილებები, მაგრამ მათი უმეტესობა უბრალოდ არ ჯდება ჩემს ფენგ შუიში. ასე რომ, იმის ნაცვლად, რომ ჩემს შემთხვევაში HDMI 7”ეკრანი ჩადებულიყო კაბელით, რომელსაც ქეისი გამოჰქონდა და Windows- ის ამოცანების ზოლი ყოველთვის ჩართული იყო, მე გადავწყვიტე ავაშენო საკუთარი სათამაშო.

ვინაიდან მე არ ვარ ინჟინერი და არც პროგრამისტი, არამედ მხოლოდ ბიჭი, რომელსაც აქვს რკინა და თვითნასწავლი ცოდნა, ეს არ იქნება მხოლოდ ნაბიჯ ნაბიჯ ინსტრუქცია, ასევე შევეცდები პრობლემაზე გავამახვილო ყურადღება გადაჭრის და კვლევის ასპექტები, რამაც მიმიყვანა ამ შენობამდე.

უარყოფა: ყველა ჩემი ნამუშევარი გაზიარებულია, როგორც შემოქმედებითი საერთო ატრიბუცია-შორეული 4.0. მე ავიღე შთაგონება მრავალი მაგალითიდან მთელ ინტერნეტში, თუკი ამ სამუშაოს ზოგიერთ ნაწილს აღიარებთ, როგორც თქვენსას, გთხოვთ, დამიკავშირდეთ ატრიბუციისთვის. არანაირი დარღვევა არ არის განზრახული, მე ბედნიერი ვიქნები ნებისმიერი შეცდომის გამოსწორებაზე. ᲒᲛᲐᲓᲚᲝᲑᲗ

მეორე უარყოფა: ჩემი ნამუშევარი ასევე გაზიარებულია. მე არ ვარ პასუხისმგებელი ნებისმიერი ზიანისთვის, რომელიც გამოწვეულია ნებისმიერი ჩემი კოდის ან ინსტრუქციის გამოყენებით

მარაგები

  • არდუინო ნანო (ან გაერო თუ გინდა)
  • TFT ჩვენება. ჩემს შემთხვევაში, ეს არის ILI9486 / ILI9488L თავსებადი 3.5 დიუმიანი ეკრანი.
  • ტემპერატურა სენსო. ამ შემთხვევაში, ანალოგიური TMP36 ტემპერატურის სენსორი.
  • კაბელები, მავთულები, დუპონტის კონექტორები (ამის შესახებ მოგვიანებით)
  • (სურვილისამებრ) პურის დაფა ტესტირებისთვის
  • (სურვილისამებრ, მაგრამ რეკომენდირებული) პატარა პერფორი

ნაბიჯი 1: მიზანშეწონილობის შესწავლა (სახის)

როგორც ვთქვი, მე არ მინდოდა და HDMI დისპლეი ჩამჯდარიყო ჩემს კომპიუტერში, ასე რომ, საკუთარი გენიალურობით დაფარული, დავიწყე მსგავსი იდეების ძებნა ინტერნეტში. და ეს არის რჩევა ნომერ პირველი: Google არის თქვენი მეგობარი (კარგი, ნებისმიერი ღირსეული საძიებო სისტემა …). ჩვენ ვცხოვრობთ სამყაროში, სადაც არაფერია ორიგინალური, მაგრამ ნაცვლად იმისა, რომ ამ ფრაზას შევხედოთ უარყოფითი მნიშვნელობით, ჩვენ შეგვიძლია გამოვიყენოთ ეს ჩვენი უპირატესობისთვის: რისი შექმნაც გსურთ, ალბათ ვიღაცამ სადმე უკვე გააკეთა მსგავსი რამ, ასე რომ, თუ თქვენ არ ვიცი როგორ განვახორციელო იდეა, დიდი შანსია იქ იპოვო სასარგებლო ინფორმაცია. ინტერნეტში ძებნისას ხშირად სასარგებლოა ორი წესის გათვალისწინება:

  1. ნუ დაიზარებთ რაიმე ძიების მე -3 ან მე -4 გვერდების შემდეგ, ეს თითქმის ყოველთვის დროის დაკარგვაა. სამაგიეროდ
  2. შეცვალეთ საძიებო ტერმინები, უბრალოდ გადააკეთეთ კითხვა სხვა თვალსაზრისით (ანუ: "arduino ტემპერატურის სენსორი" -> "ტემპერატურის წაკითხვა არდუინოსთან ერთად").

სინამდვილეში ის სავსეა კარგი პროექტებით და მე ვაღიარებ, რომ პირველი დღეები გავატარე ამ პროექტების უმეტესობის შესწავლაში. მაგრამ არცერთი მათგანი არ იყო მზად ჩემთან წასასვლელად, რადგან მინდოდა რაღაც, რაც ჩემს საჭიროებებს მოერგებოდა.

ვინაიდან რაღაც უნდა შემექმნა, მე გადავწყვიტე ყურადღება გამახვილდეს აპარატურაზე, რომელიც გამოვიყენო და პროგრამული უზრუნველყოფის მხარე მოგვიანებით დავტოვო, რადგან პროგრამული უზრუნველყოფა ყოველთვის შეიძლება შეიქმნას და მოერგოს საჭიროებებს, მეორეს მხრივ აპარატურის მხრივ მე ვარ შეზღუდული ხელმისაწვდომობით. და თვისებები.

მინდოდა რაღაც არდუინოზე დაფუძნებული, რადგან მე უკვე მქონდა ის, ეს კარგად არის დოკუმენტირებული და მისი საზოგადოება ყვავის. არანაირი პრობლემა არ არის, როგორც ვთქვი ადრე ბევრი ინფორმაცია.

მე მინდოდა იმხელა ეკრანი, რომ აშკარად დამენახა რამდენიმე მეტრის მოშორებით და რომელიც მოერგებოდა ჩემი აღნაგობის გარეგნობას, ეს გამორიცხავდა ნოკიას და LCD სიმბოლოების ჩვენებას. OLED ასევე გამორიცხულია, რადგან ისინი მცირეა. ასე რომ, მე ავირჩიე TFT ფერადი ჩვენება. არ არის საჭირო სენსორული ეკრანი, რადგან ის იქნება კომპიუტერის შიგნით. მე ვიპოვე 3.5 ერთი, უკვე შექმნილია Arduino- სთვის, 15 € Amazon ამაზონზე. საკმაოდ კარგი.

ახლა, მას შემდეგ, რაც აპარატურა ზუსტად იქნა განსაზღვრული, ყურადღება გამახვილდა პროგრამულ უზრუნველყოფაზე.

თითქმის ყველა პროექტი, არდუინოს მხრიდან, საკმაოდ მსგავსია. მე უბრალოდ მჭირდება კოდის ადაპტირება ჩვენებისთვის და საკომუნიკაციო პროტოკოლისთვის, რომ შევაგროვო მონაცემები სერვერის აპლიკაციიდან. კომპიუტერის მხრივ, პროექტების უმეტესობა დაფუძნებულია C, C ++, C#, პითონზე და პროექტების უმეტესობა გთავაზობთ მხოლოდ CLI ინტერფეისს ან Windows სერვისის მსგავს სერვერს. სამაგიეროდ მინდოდა GUI. მე არასოდეს გამომიყენებია C– ს მსგავსი ენა Windows– ში, დატოვე GUI შენობა. მაგრამ მე ვისწავლე Visual Basic 15 წლის წინ, ამიტომ ვცადე და გადმოვწერე Microsoft– დან Visual Studio– ს უფასო ვერსია.

ბევრი მსგავსი პროექტის შესწავლის შემდეგ, მე დავთანხმდი OpenHardwareMonitor– ის გამოყენებას, რომ მივიღო ყველა ტექნიკური ინფორმაცია და RivaTuner FPS– ისთვის, რადგან ეს არის უფასო და საკმარისად დოკუმენტირებული.

ნაბიჯი 2: აპარატურის ტესტირება

აპარატურის ტესტირება
აპარატურის ტესტირება
აპარატურის ტესტირება
აპარატურის ტესტირება
აპარატურის ტესტირება
აპარატურის ტესტირება

სანამ შედუღების რკინას ჩართავთ და სამუდამოდ დააფიქსირებთ დროსა და სივრცეში ნებისმიერ ელექტრონულ კომპონენტს, კარგი პრაქტიკაა საცდელი პროტოტიპის აგება (რჩევა ნომერი ორი). საბედნიეროდ, ეს 1995 წელი აღარაა. დღესდღეობით საკმაოდ ადვილია საკმაოდ რთული პროტოტიპების მოწყობა თუნდაც პატარა დაფაზე. ჩემს შემთხვევაში, TFT ეკრანს ჰქონდა ვარდნა Arduino Uno– სთვის, ამიტომ ჩავაგდე ის ჩემს Arduino uno– ში და დავიწყე თამაში ბიბლიოთეკებთან და წავიკითხე საცნობარო სახელმძღვანელოები, რომ გამეგო მისი მოქმედების პრინციპები და შეზღუდვები.

ამ დროს მივხვდი როგორ დავხატო ხაზები და ბიტმაპები და დავწერე ტექსტი, ამიტომ დავიწყე ჩხუბი პროგრამული უზრუნველყოფის კოდირებით, რის გამოც ყველა მეორეხარისხოვანი მასალა დავტოვე მოგვიანებით, მაგრამ აქ დავამატებ ტემპერატურის სენსორს.

რაღაც მომენტში, ეკრანზე მე მქონდა ცარიელი ადგილი, მაგრამ კომპიუტერის სენსორებიდან არცერთი მონაცემი არ იყო ნამდვილად გამოსადეგი, ამიტომ გადავწყვიტე გარემოს ტემპერატურის ტემპერატურის სენსორი ჩემოდნში ჩამეყენებინა. ეკრანი ჭამს Arduino– ს თითქმის ყველა ქინძისთავს, საბედნიეროდ, ანალოგური pin A5 გამოუყენებელია, ამიტომ მე TMP36 დავუკავშირე. მე კი გამოვცადე DHT22, მაგრამ ეს ძალიან გადაჭარბებულია ამ პროგრამისთვის.

TMP36– ის უამრავი მაგალითია, მე მხოლოდ ერთი მათგანი დავაკოპირე ფუნქციაში. TMP35– ს აქვს 3 ქინძისთავები, Vin მიდის 5V– მდე, GND მიდის მიწაზე და Out მიდის pin A5– ზე. მე მოვათავსე 0.1uF კერამიკული კონდენსატორი Vin- სა და GND- ს შორის. ისინი ამბობენ, რომ საჭიროა. ალბათ უსარგებლოა ამ შემთხვევაში, მაგრამ… მე კი Arduino– ს ანალოგური საცნობარო ძაბვა დავაყენე 3.3 ვ პინზე ტემპერატურის უკეთესი მაჩვენებლებისთვის. ამ შემთხვევაში ჯერ კიდევ უსარგებლოა, მაგრამ…

ნაბიჯი 3: Arduino კოდი

გთხოვთ გადმოწეროთ და გახსნათ ჩართული Arduino კოდი, რათა მიჰყევით ამ ნაბიჯის განმარტებას. მე შევეცადე საკმარისი კომენტარი დავტოვო კოდში, რომ გასაგები ყოფილიყო მისი დატბორვის გარეშე.

თქვენ აუცილებლად დაგჭირდებათ MCUFRIEND_kbv და Adafruit GFX ბიბლიოთეკები. ორივე ადვილად ინსტალაციადია Arduino IDE– დან.

პროგრამა შეიძლება დაიყოს შემდეგ ნაწილებად:

  1. განსაზღვრა და გამოაცხადოს ყველა გლობალური ცვლადი და სხვა საჭირო მასალა
  2. ჩვენების ინიციალიზაცია, გარე მითითების დაყენება და ინტერფეისის დახატვა (ეს ყველაფერი შეიცავს setup () ფუნქციას, რადგან ის მხოლოდ ერთხელ უნდა მუშაობდეს)
  3. წაიკითხეთ მონაცემები სერიული კავშირიდან და გამოყავით მასივში (loop () ფუნქცია)
  4. გარე ტემპერატურის სენსორის მონაცემების წაკითხვა (readExtTemp () ფუნქცია)
  5. მონაცემების დაბეჭდვა ეკრანზე (printData () ფუნქცია)
  6. დაბრუნება მარყუჟში

ნაწილი 1: დეკლარაციები და განმარტებები

კოდის საწყის ნაწილში, მე გამოვიყენე უამრავი მაჩვენებელი და მასივი, ასე რომ მე შევძელი კოდის მრავალი განმეორებითი სტრიქონის შემოკლება უფრო მოკლედ, რათა დამეწერა ციკლისთვის. დიახ, მე ზარმაცი ვარ. როგორც ხედავთ მე გამოვაცხადე მაჩვენებელი მასივი და შეავსო იგი pics.h ფაილიდან ყველა სურათებით. ამან შესაძლებელი გახადა FOR ციკლის ხრიკი ყველა ხატის დასახატად.

ნაწილი 2: კონფიგურაცია (), ძირითადად ინტერფეისის ნახაზი

მე დავსახლდი ნაგულისხმევი შრიფტით, რადგან მას არ აქვს გამჭვირვალე ფონი, ასე რომ, ის საშუალებას გაძლევთ დაწეროთ ახალი სტრიქონი ძველზე, მისი წაშლის საჭიროების გარეშე. სხვა შრიფტის გამოყენება გულისხმობდა ძველი ტექსტის შავი კვადრატის დახატვას ახალი სტრიქონის ჩაწერამდე, რაც გამოიწვევდა უსიამოვნო მბჟუტავ ეფექტს.

გარკვეული ტესტირების შემდეგ, მე მივიღე კარგი კომპრომისი წაკითხვადობასა და ნაჩვენებ ინფორმაციას შორის. ჩვენება დავყავი ორ სვეტად და 5 მწკრივში. მარცხენა სვეტი ეხება CPU– ს და დედაპლატის მონაცემებს, მათ შორის ზემოდან ქვემოდან CPU– ს სახელს, ტემპერატურას, დატვირთვას, RAM– ის გამოყენებას და დედაპლატის ტემპერატურას. მარჯვენა ეძღვნება GPU– ს და მოიცავს GPU– ს სახელს, ტემპერატურას, დატვირთვას, Frames Per Second მრიცხველს და გარე ტემპერატურის სენსორს.

როგორც ხედავთ კოდში, მე გადავწყვიტე თავიდან ავიცილო სურათების გამოყენება SD ბარათზე, რადგან ის მართლაც ნელა იტვირთება. მე გადავწყვიტე, რომ ყველა ხატი შევიდეს PROGMEM მეხსიერებაში და გავამახვილო ხაზები მიძღვნილი drawLine () ბრძანებით. ეს ასევე სასარგებლოა მცირე ინტერფეისის შესწორებისთვის.

უსუსური მცდელობისას, რომ ინტერფეისს სიღრმის სახე მიეცეს, მე დავხატე ორივეს (ხაზები, მართკუთხედები, სურათები) სხვადასხვა ფერის და მცირე ზომის ოფსეტურით. სამწუხაროდ, ეს არ არის შედეგი, რომლის იმედიც მქონდა, მაგრამ ის შეასრულა.

ამ ფუნქციის ბოლო ხაზები განკუთვნილია TFT- ზე ადგილის დასაბეჭდად, სანამ არდუინო არ მიიღებს მონაცემებს.

ნაწილი 3: ძირითადი მარყუჟი (), მონაცემების მოძიება და ფორმატირება

აქ ხდება მაგია: მონაცემები მიიღება სერიის საშუალებით, ენიჭება სწორ ცვლადს და შემდეგ იბეჭდება. ამ ყველაფრის მცირე რაოდენობის მისაღწევად, მე გამოვიყენე switch შემთხვევის ბრძანება და for for cycle.

საკომუნიკაციო პროტოკოლი, რომლითაც მოვედი, იყოფა ორ ნაწილად: პირველადი შესრულება ერთხელ ხელის ჩამორთმევისა და ფაქტობრივი მონაცემების ნაწილისა.

ხელის ჩამორთმევა საჭიროა კომპიუტერის პროგრამის დაწყებისას ავტომატური კავშირის ფუნქციის განსახორციელებლად. მიდის ასე:

  • კომპიუტერი აგზავნის ხელის ჩამორთმევის სტრიქონს (ამ შემთხვევაში არის მხოლოდ "*****;")
  • არდუინო აგზავნის პასუხს

მარტივი პეასი.

მონაცემთა ნაწილი ასე გამოიყურება: "i: xxx, yyy, zzz, aaa,;" მნიშვნელობა არის:

"მე" არის ინდექსი, მე მას ვუწოდებ კომპონენტის შერჩევას კოდში. "მე" მნიშვნელობებია:

  • i = 0 - სახელები. შემდეგი მნიშვნელობები არის სახელები, რომლებიც ნაჩვენებია ეკრანზე პირველ რიგში. ეს იქნება მხოლოდ ერთხელ გაგზავნილი და დაბეჭდილი ეკრანზე, რადგან დღეისათვის საკმაოდ რთულია პროცესორისა და გრაფიკული პროცესორის გადატვირთვა…
  • i = 1 - 1 სვეტის მონაცემები - შემდეგი მნიშვნელობები ნაჩვენებია ეკრანის მარცხენა ნახევარში ზემოდან ქვემოდან. ჩემს შემთხვევაში: პროცესორის ტემპერატურა, პროცესორის დატვირთვა, ოპერატიული მეხსიერება, დედაპლატის ტემპერატურა.
  • i = 2 - მე -2 სვეტის მონაცემები - როგორც ზემოთ, მაგრამ ეკრანის მარჯვენა ნახევრისთვის
  • i = 3 - ბეჭდვის ბრძანება. ამ შემთხვევაში ნედლი სერიული სტრიქონი იქნება მხოლოდ "3:;" რადგან სხვა მონაცემები არ არის საჭირო.

"xxx, yyy, zzz, aaa" არის რეალური მნიშვნელობები. ისინი წაკითხულია როგორც სტრიქონები arduino– ს მიერ და მთელი ფორმატირება ხდება PC პროგრამით. I = 0 –ისთვის ეს მნიშვნელობები არის 14 სიმბოლო თითოეული აპარატურის სახელებისთვის. I = 1 ან 2 -ისთვის ეს იქნება მხოლოდ სამი სიმბოლო, თითოეული საკმარისია ტემპერატურისა და კადრების ჩვენებისათვის წამში. რა თქმა უნდა, ":", "," და ";" სიმბოლოები აკრძალულია ამ სფეროებში.

":" არის გამყოფი componentSelector და მნიშვნელობებს შორის, "," არის მნიშვნელობების გამყოფი და ";" არის ხაზის დასასრული

მონაცემების მიღებისას არდუინო შეინახავს მას, როგორც სტრიქონი ";" - მდე. სიმბოლო ამოღებულია, შემდეგ ის ეძებს სიმბოლოს ":" და გამოიყენებს მას კომპონენტის სელექტორის მნიშვნელობის მისაღებად. ეს გამოყენებული იქნება გადართვის საქმის ფუნქციის შესარჩევად სწორი პროცედურის შესასრულებლად. იგი ასევე გამოიყენება allData მასივში სწორი ინდექსის შესარჩევად.

ამის შემდეგ არდუინო ეძებს "," სიმბოლოს და გააგრძელებს მნიშვნელობების დაყენებას allData მასივში.

თუ componentSelector არის 0, printName დროშა მითითებული იქნება true. თუ componentSelector არის 3, იწოდება readExtTemp () და printData () ფუნქციები.

ნაწილი 4: readExtTemp () ფუნქცია

აქ ბევრი არაფერია ნათქვამი, ის 32 -ჯერ იკითხება pin A5– დან და გამოაქვს ტემპერატურის მნიშვნელობა სიმებიანი სახით. მე ვარ მეამბოხეებთან, ამიტომ ვიყენებ ცელსიუსს. 100 ° C- ზე მეტი არაფერია არასწორი, ასე რომ ეკრანზე ნაჩვენები იქნება როგორც "---". 100 ° C- ზე ნაკლები არაფრისთვის იქნება ფორმატირებული, რომ ჰქონდეს საკმარისი სივრცე ეკრანზე 3 სიმბოლოს სივრცის დასაფარად. შესაძლებელია სენსორის ამოღება და ხელახლა ჩასმა და უცნაური მნიშვნელობა არ გამოჩნდება.

ნაწილი 5: printData () ფუნქცია

როგორც ყოველთვის, ციკლებს ვიყენებდი ეკრანზე პერსონალის თანმიმდევრულად დასაბეჭდად. თუ დროშა printNames არის ჭეშმარიტი, ის დაბეჭდავს სახელებს, დააყენებს დროშას ცრუ და გააგრძელებს.

ნაწილი 6: უკან მარყუჟზე

საკმარისად ამიხსნია, მე ვიტყოდი …

pics.h ფაილი

აქ შევინახე ყველა ხატი ინტერფეისისთვის. შესაძლებელია გამოვიყენო ეკრანზე ჩართული SD ბარათის წამკითხველი, მაგრამ მე მქონდა საკმარისი მეხსიერება არდუინოში ჩემი შავი და თეთრი ხატებისთვის.

მე დავამუშავე ისინი უმცროსი ხატის რედაქტორით, რადგან ის უფასოა და საკმაოდ კარგია პიქსელებისთვის პატარა ხატების ხატვისთვის. მე უნდა გადავიყვანო ხატის ფაილები (შენახულია როგორც PNG) SKAARHOJ ონლაინ ინსტრუმენტთან ერთად.

ნაბიჯი 4: ვიზუალური ძირითადი კოდი

Visual Basic კოდი
Visual Basic კოდი

აქ არის VB კოდი

შენიშვნა: ეს არის პირველი შემთხვევა, როდესაც ვიზიარებ Visual Studio– ს პროექტს. მე უბრალოდ დავაკოპირე პროექტის საქაღალდეები და ჩავკეტე ისინი. თუ ეს არ მუშაობს, გთხოვთ ნება მომეცით ვიცოდე უკეთესი გზა ამ სახის პროექტების გასაზიარებლად. Გმადლობთ

როგორც უკვე ვთქვი, მე არ შემიძლია GUI- ს შექმნა C# ან სხვა ენებზე, მაგრამ მე დიდი ხნის წინ მქონდა გარკვეული გამოცდილება Visual Basic– ში. გადმოვწერე Visual Studio Community გამოცემა (რა თქმა უნდა უფასოა) Visual Basic გარემოსთან ერთად. ისე, ბევრი რამის გარკვევა მომიწია, ვინაიდან ბოლოს VB გამოვიყენე ეს იყო 2005 წლის ვერსია ან სხვა… მაგრამ ინტერნეტი, როგორც ყოველთვის, სავსეა კარგი მინიშნებებით.

მას შემდეგ რაც გაერკვეს რაღაც ინტერფეისში, ახალი ვერსია რეალურად უფრო ადვილი და მოქნილია ვიდრე ძველი.

ამ პროგრამისთვის მინდოდა რაღაც ფანჯრის ფორმით, მაგრამ სრულად მართვადი სისტემის უჯრის ხატიდან. მე რეალურად გამოვიყენე ფორმა თითქმის მხოლოდ გამართვის მიზნით, რადგან მე მომწონს ტექსტური ყუთების და სიების დაყენება ფუნქციების გამომავალი მნიშვნელობების წასაკითხად და მათ შესამოწმებლად რამდენიმე ბრძანების ღილაკი.

"საბოლოო" პროგრამა არის მხოლოდ უჯრის ხატი ამომხტარი მენიუდან, რომელიც აჩვენებს სხვადასხვა კონტროლს და მთავარ ფორმას ორი ველით, რომელიც აჩვენებს არდუინოში გაგზავნილ მონაცემებს.

მე განვახორციელე ავტომატური კავშირის ფუნქცია და "დაწყების ჩატვირთვისას" ფუნქცია. ამის შესახებ მოგვიანებით.

მთავარი პროგრამა მხოლოდ ადაპტაციაა სხვადასხვა მაგალითებისა და კოდების ამონარიდების გამოყენებით OpenHardwareMonitor ბიბლიოთეკით და RivaTuner Shared Memory ბიბლიოთეკით.

პროგრამა ასე გამოიყურება:

  • მიიღეთ მონაცემები OpenHardwareMonitor და RTSSSm ბიბლიოთეკებიდან
  • საკომუნიკაციო პროტოკოლისთვის ყველა მონაცემის მომზადება და ფორმატირება
  • გაგზავნეთ მონაცემები არდუინოში
  • ჩამოიბანეთ და გაიმეორეთ

რა თქმა უნდა, ტექნიკის სახელები იკითხება დასაწყისში და იგზავნება მხოლოდ ერთხელ.

FPS მრიცხველი გააქტიურებულია მხოლოდ მაშინ, როდესაც თავსებადი აპლიკაცია გამოიყენება (მაგ. თამაში, 3D მოდელირების პროგრამა და სხვა), წინააღმდეგ შემთხვევაში "---" ადგილსამყოფელი იგზავნება ეკრანზე.

მე არ განვმარტავ, თუ როგორ უნდა მივიღოთ ბიბლიოთეკების ღირებულებები, რადგან ის კარგად არის დოკუმენტირებული ინტერნეტში და გარკვეულწილად გასაგებია კოდიდან. უბრალოდ მინდა გითხრათ დედაპლატის ტემპერატურის მიღების პრობლემების შესახებ OpenHardwareMonitor (ამიერიდან OHMonitor, რადგან სიცოცხლე ძალიან ხანმოკლეა) ბიბლიოთეკაში. მე მაქვს Asus Maximus VIII Gene MoBo, რომელიც აღჭურვილია fu ** ტონის ტემპერატურის სენსორებით დედაპლატაზე, მაგრამ OHMonitor ასახელებს მათ როგორც ტემპერატურის სენსორს #1, #2… #n და არსად არ არის მითითებული ტემპერატურის მდებარეობა. ასე რომ, მე მომიწია ინსტალაცია საშინელი Asus AI კომპლექტი პროგრამული უზრუნველყოფა, სადაც სენსორებს აქვთ მინიმუმ NAMES და შეადარებენ სხვადასხვა ტემპერატურას ორ პროგრამას შორის. როგორც ჩანს, ჩემი დედაპლატის ზოგადი ტემპერატურის სენსორი არის #2 OHMonitor– ისთვის, ასე რომ, როგორც ხედავთ Timer1_tick ქვეპუნქტში MoBo პერსონალის ქვეშ, მე უნდა ვეძებოთ სენსორის სახელი, რომელიც შეიცავს სტრიქონს „ #2“, სწორი კითხვის მისაღებად.

TL; DR: თქვენ უნდა მიხედოთ დედაპლატის ტემპერატურის სენსორებს თქვენთვის. დანარჩენი ალბათ კარგია წასასვლელად.

თუმცა ეს მხოლოდ 1 ვერსიაა, მე ვგეგმავ ამ სხვა მოწყობილობის დაყენებას ჩემი სხვა კომპიუტერისთვის, ასე რომ მე ალბათ განვახორციელებ სენსორების არჩევის გზას და შესაძლოა გადავიმუშაო ინტერფეისი Arduino– ზე, როდესაც გადაადგილდები.

ავტომატური კავშირის ფუნქცია

ეს ფუნქცია რეალურად მარტივია: თუ კომპიუტერი არ არის დაკავშირებული Arduino– სთან, ყოველ x მილიწამში (ტაიმერის 1 – ის საფუძველზე) ამ ფუნქციას ეწოდება. ის ცდილობს დაუკავშირდეს კომპიუტერის ყველა COM პორტს, წარმატების შემთხვევაში აგზავნის ხელის ჩამორთმევის სტრიქონს "*****;". თუ პასუხი არის "R", მაშინ სწორი მოწყობილობა არის დაკავშირებული და ნორმალური პროცედურა ხორციელდება. სხვაგვარად, ის ცდილობს მომდევნო COM პორტს.

როგორც ხედავთ, ამ ფუნქციაში ბევრი გამონაკლისია. ეს იმიტომ ხდება, რომ მე მინდოდა მისი სრულად ჩართვა და თამაში, შეცდომების გარეშე. გამონაკლისების გამოვლენისას, მე შევძელი ის, რომ უგულებელყო გარე მოწყობილობის სრული არარსებობა და მე შემიძლია მოწყობილობის ცხელი ჩართვა და გამორთვა ნებისმიერ დროს, როდესაც მსურს, პროგრამისათვის უხეში შეცდომის გამომუშავების გარეშე.

დაწყება ჩატვირთვის ფუნქცია

მინდოდა პროგრამა ჩატვირთვისას დაეწყო. საკმაოდ ადვილია, თქვენ ამბობთ. განათავსეთ ბმული შესაბამის საქაღალდეში. Მაგრამ არა. OHMonitor და RTSS ბიბლიოთეკების გამო, ჩვენ გვჭირდება ადმინისტრატორის შესრულების დონე ინფორმაციის შესაგროვებლად. ეს ნიშნავს სრულიად შემაშფოთებელ UAC ეკრანს ყოველ ჯერზე, როდესაც ეს აპლიკაცია ამოქმედდება. Არანაირად. ასე რომ, მე ადაპტირებული მეთიუ ვაის მიერ შექმნილი სცენარი (ბმული აქ) ჩამტვირთავი ჩუმად დაწყების მისაღწევად. მე უბრალოდ გადავაკოპირე სკრიპტი Resources1 ფაილში, დავყავი რამდენიმე ნაწილად, შემდეგ განვახორციელე ქვეგანაყოფი, რომელიც ქმნის (ან შლის) Windows ამოცანის ფაილს, მორგებულია მიმდინარე პროგრამის შესრულებადი ადგილმდებარეობისა და სხვა საკითხების შესაბამისად.

სისტემის უჯრის ხატულა

NotifyIcon და ContextMenu ობიექტების წყალობით, მე შევძელი მარტივი და ცხიმიანი ხერხის დანერგვა აპლიკაციის გასაკონტროლებლად. უბრალოდ დააწკაპუნეთ უჯრის ხატზე და გამოჩნდება მენიუ. არსებობს ეს ვარიანტები:

  • დაწყება ჩატვირთვისას: შეგიძლიათ შეამოწმოთ და მონიშნოთ ის ჩატვირთვის დაწყების ფუნქციის ჩართვის ან გამორთვისთვის
  • ავტომატური კავშირი: იგივე, რაც ზემოთ, მაგრამ ამუშავებს ავტომატური კავშირის ფუნქციას
  • დაკავშირება/გათიშვა: ის მართავს კავშირს. არ მუშაობს ავტომატური კავშირის ჩართვით
  • განახლების დრო: იძლევა ჩამოსაშლელ ქვემენიუს, შეგიძლიათ აირჩიოთ განახლების დრო 1 -დან ათ წამამდე
  • მაქსიმიზაცია: ხსნის მთავარ ფანჯარას. იგივეა რაც ხატზე ორმაგი დაწკაპუნება
  • გასვლა: ახსნადი

პროგრამული უზრუნველყოფის შედგენა

პროგრამული უზრუნველყოფის შესადგენად, თქვენ ალბათ უნდა გადმოწეროთ და დაამატოთ მითითება ბიბლიოთეკებზე, რომლებიც არ არის ჩართული კოდში.

თქვენ შეგიძლიათ იპოვოთ 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: საბოლოო აპარატურის დანერგვა

გირჩევთ: