eHouse ควบคุมอาคาร – สร้างภาพซ้อนทับของ Windows ซอฟแวร์ที่กำหนดเองและขั้นตอนวิธี

บ้านอัตโนมัติ eHouse กับซอฟต์แวร์คอมพิวเตอร์ช่วยให้คุณสามารถสร้างภาพซ้อนทับสำหรับระบบอาคารอัตโนมัติ .
นี้ช่วยให้คุณสร้างของคุณเอง , อัลกอริทึมของแต่ละบุคคล , ยังไม่ได้ดำเนินการในซอฟต์แวร์เฟิร์มแวร์หรือไดรเวอร์ที่ควบคุมอนุกรม บ้านอัตโนมัติ eHouse .
ด้วยเหตุนี้ , เราให้ผู้ใช้ที่มีรหัสแหล่งที่มาซอฟแวร์ (ใน Delphi 5) . พวกเขาสามารถรวบรวมกับรุ่นใหม่ของ Delphi หรือใช้สำหรับการเขียนโปรแกรมภาษาอื่น ๆ .
เรา consciously เลือกรุ่นโบราณนี้เป็นพวกเขามีอยู่แล้วสามารถใช้ได้ฟรีสำหรับโปรแกรมมือสมัครเล่น .
พวกเขาทำงานได้อย่างน่าเชื่อถือเช่นเดียวกับใน Windows XP , ทิวทัศน์ , Windows 7 ทั้ง 32 และ 64 บิต .
ซอฟต์แวร์นี้เรียกว่า eHouseLogAnalizer และโปรแกรมเหล่านี้แม่แบบบันทึกที่อ่านไฟล์ข้อความได้ถึงวันที่ .
ที่จะสามารถจัดการและตรวจสอบโดยโปรแกรม KillWdt . exe .
คุณสมบัติที่สำคัญของโปรแกรม:

  • การอ่านออกสถานะและชื่อของไดรเวอร์ทั้งหมด
  • อ่านสถานะและใส่ชื่อของไดรเวอร์ทั้งหมด
  • อ่านวัดและชื่อของโปรแกรมควบคุมทั้งหมดวัดปัจจัย
  • โหลดข้อมูลทั้งหมดไปยังหน่วยความจำโปรแกรมภายใน , ซึ่งสามารถดำเนินการต่อไปโดยการประยุกต์ใช้

โปรแกรมประยุกต์ที่ใช้สถานะของไฟล์ที่สร้างขึ้นไปยังแฟ้มข้อความในไดเรกทอรี ‘ logs / สถานะ / ‘ นามสกุล ‘ . สถานะ ‘ .
ไฟล์จะถูกอ่านได้เฉพาะในกรณีที่มีการเปลี่ยนแปลงในการประยุกต์ใช้ eHouse . exe .

ควบคุมข้อมูลจะถูกโหลดในกรณีดังต่อไปประวัติ ” ehouse_rm_em_hm ” ที่ระบุไว้ในอาเรย์ RM .

นอกจากนี้ , ข้อมูลจะถูกเก็บไว้ HeatManager ตัวแปรต่อไปนี้:
bonfire_status: สตริง ; / / สถานะของกองสำหรับ HeatManager – เตาผิงร้อนสถานะ eHouse แผง . exe
boiler_status: สตริง ; / / สถานะของหม้อไอน้ำสำหรับ HM – สถานะของหม้อไอน้ำร้อน eHouse แผง . exe
Solar_status: สตริง ; / / สถานะของระบบสุริยะ – สถานะของ eHouse แผงร้อนจากแสงอาทิตย์ . exe
recuperator_status: สตริง ; / / สถานะของการพักฟื้น , การระบายอากาศ , ความร้อนของอากาศ – สถานะของการระบายอากาศที่ร้อนและการกู้คืนความร้อน
HADC: อาร์เรย์ [0 . . 15] คู่ ; / / ความร้อนอุณหภูมิผู้จัดการ – อุณหภูมิ HeatManager วัด
/ ความร้อน / ดัชนีผู้จัดการสำหรับการเข้าถึงโดยตรงของอาร์เรย์ HADC – ดัชนีอุณหภูมิคงที่สำหรับการอ่านโดยตรงของ HeatManager อุณหภูมิ
CONST HM_GWC = 3 ; / / GWC – แลกเปลี่ยนความร้อนพื้นดิน
HM_KOM1 = 4 ; / Fireplace / 1 Coat – แจ็คเก็ตน้ำกองไฟ 1
HM_KOMKONV = 5 ; / Fireplace / konvekcyjne – กองการหมุนเวียน
HM_KOM2 = 6 ; / ดับเพลิง / 2 เครื่องบิน – แจ็คเก็ตน้ำกองไฟ 2 (สำรอง)
7 HM_TWEWN = ; / อุณหภูมิห้อง / ภายใน – อุณหภูมิห้องภายใน
HM_SOLAR = 9 ; / อาทิตย์สะสม / – ระบบสุริยะ
HM_ZEWNPN = 8 ; / / ภายนอกเหนืออุณหภูมิ – อุณหภูมิภายนอกเหนือ
HM_ZEWNPD = 1 ; อุณหภูมิ / / ภายนอกของภาคใต้ – อุณหภูมิภายนอกใต้
HM_KOC = 10 ; / หม้อไอน้ำอุณหภูมิ / – อุณหภูมิหม้อน้ำ
HM_BANDOL = 11 ; / CO / ถังน้ำร้อน / ลง – หลังกันชนด้านล่างร้อน
HM_REQIN = 12 ; / / สะอาดใส่อากาศ recuperator – ใส่อากาศพักฟื้นที่ชัดเจน
HM_REQOUT = 13 ; / Output / recuperator บ้าน – พักฟื้นสดเป่าอากาศไปที่ห้อง heaten – อุณหภูมิ
HM_NAG = 14 ; / / อุณหภูมิควบคุมสาม – วาล์วทางสำหรับการทำความร้อนและหม้อน้ำ – อุณหภูมิหลังจากสามตัดวิธีสำหรับเครื่องทำน้ำอุ่นหรือระบบทำความร้อนอื่น ๆ
HM_REQWYC = 15 ; / / Home สกปรก recuperator สารสกัด – พักฟื้นจากบ้านสกปรกไอเสียอุณหภูมิ
= 2 HM_BANGORA ; เครื่องทำความร้อน / / / ถังน้ำร้อน Gora – น้ำร้อน TOP บัฟเฟอร์
HM_BANSRO = 0 ; เครื่องทำความร้อน / / / ถังน้ำร้อนที่เก็บความหมายของ – บัฟเฟอร์น้ำร้อนกลาง
HADCNames var: array [0 . . 15] ของสตริง ; / / ชื่อของเซ็นเซอร์ (วัดปัจจัย) HeatManagera
EhouseLogAnalizer ฟังก์ชันพื้นฐาน:
init_heat_temperature_names ขั้นตอน ; / / เริ่มต้นและ / หรือเซ็นเซอร์อุณหภูมิอ่านชื่อของ HM
loadnames_rm ขั้นตอน ; / โหลด / ชื่อRoomManagerĂłw (1 eHouse)
readethernetdevs ขั้นตอน ; / / อ่านชื่อโปรแกรมควบคุม Ethernet (2 eHouse)
ฟังก์ชั่น get_index_rm (STR: เชือก): จำนวนเต็ม ; / คืน / ดัชนีของตารางที่มีการค้นหา roomManagerami ตามสถานะชื่อไฟล์
ฟังก์ชั่น GB (chr: char): บูลี ; / / คืนค่า boolean สำหรับสถานะอ่าน
ขั้นตอน adc_hm (STR: สตริง ; ดัชนี: จำนวนเต็ม) ; / / แปลงสตริงที่มีอุณหภูมิบันทึก HeatManagera อ่านสถานะ
ขั้นตอน adc_rm (STR: สตริง ; ดัชนี: จำนวนเต็ม) ; / / แปลงสตริงของการวัดแบบอะนาล็อกเมื่ออ่านRoomManagerĂłwสถานะ
GBS ฟังก์ชัน (b: boolean): String ; / / เขียนแบบบูลในรูปแบบข้อความ (0 , 1)
ฟังก์ชั่น RMDeviceIndexByName (STR: เชือก): จำนวนเต็ม ; / คืน / ดัชนีของตารางที่มีการค้นหาโดยการขับรถ RoomManagerami ชื่อ
ฟังก์ชั่น RMGetOutputStateNr (ดัชนี: จำนวนเต็ม ; OutputNr: จำนวนเต็ม): บูลี ; / กลับ / RM รัฐเอาท์พุท [index] และ OutputNR ตัวเลขส่งออก
ฟังก์ชั่น RMGetOutputState (ดัชนี: จำนวนเต็ม ; OutputName: เชือก): บูลีน ; / / คืน RM รัฐเอาท์พุท [index] และเรียกออก OutputName
ฟังก์ชั่น RMGetInputStateNr (ดัชนี: จำนวนเต็ม ; InputNr: จำนวนเต็ม): บูลี ; / คืน / สถานะของ RM ใส่ [index] และจำนวนของรายการ InputNr
ฟังก์ชั่น RMGetInputState (ดัชนี: จำนวนเต็ม ; InputName: เชือก): บูลีน ; / คืน / สถานะของ RM ใส่ [index] และชื่อของ InputName รายการ
ฟังก์ชั่น RMGetTempNr (ดัชนี: จำนวนเต็ม ; InputNr: จำนวนเต็ม): คู่ ; / / คืนอุณหภูมิ RM [index] และจำนวนของรายการ InputNr
ฟังก์ชั่น RMGetTemp (ดัชนี: จำนวนเต็ม ; InputName: เชือก): double ; / / คืนอุณหภูมิ RM [index] และชื่อของ InputName รายการ
ฟังก์ชั่น RMGetInvPercent (ดัชนี: จำนวนเต็ม ; InputName: เชือก): double ; / / คืนวัดร้อยละของ 100 reverse % – x [ดัชนี] RM และชื่อของ InputName รายการ (ในความสัมพันธ์กับตัวควบคุมแรงดัน)
ฟังก์ชั่น RMGetInvPercentNr (ดัชนี: จำนวนเต็ม ; InputNr: จำนวนเต็ม): คู่ ; / / คืนวัดร้อยละของ 100 reverse % – x [ดัชนี] RM และจำนวนของ InputNr รายการ (ในความสัมพันธ์กับตัวควบคุมแรงดัน)
ฟังก์ชั่น RMGetPercent (ดัชนี: จำนวนเต็ม ; InputName: เชือก): double ; / / คืนวัดร้อยละของ [index] RM และชื่อของ InputName รายการ (ในความสัมพันธ์กับตัวควบคุมแรงดัน)
ฟังก์ชั่น RMGetPercentNr (ดัชนี: จำนวนเต็ม ; InputNr: จำนวนเต็ม): คู่ ; / / คืนวัดร้อยละของ 100 reverse % – x [ดัชนี] RM และชื่อของ InputNr รายการ (ในความสัมพันธ์กับตัวควบคุมแรงดัน)
ฟังก์ชั่น RMGetDeviceOutputState (Devname: สตริง ; OutputName: เชือก): บูลีน ; / / คืนรัฐของไดรเวอร์เอาท์พุทที่เรียกว่า Devname และร้องออกมา OutputName
ฟังก์ชั่น RMGetDeviceInputState (Devname: สตริง ; InputName: เชือก): บูลีน ; / คืน / สถานะของท่านขับชื่อและชื่อของ InputName Devname รายการ
ฟังก์ชั่น HMGetTemp (InputName: เชือก): double ; อุณหภูมิ / กลับ / วัดของท่านเรียก HeatManagera InputName
HMGetTempNr ฟังก์ชัน (InputNr: จำนวนเต็ม): คู่ ; อุณหภูมิ / กลับ / ของจำนวนอินพุทวัดความสามารถของ HeatManagera InputNr (1 . . 16)
ฟังก์ชั่น chk_int (st: เชือก): จำนวนเต็ม ; / / ความปลอดภัยในการแปลงสตริงเป็นจำนวนเต็ม
update_status ขั้นตอน ; / / ปรับปรุงสถานะของไดรเวอร์ทั้งหมดในตาราง (ต้องทำงานเป็นระยะ ๆ )
Test_save ขั้นตอน ; / Test / ขั้นตอนการเขียนผลไปยังแฟ้มข้อความสำหรับการที่ง่าย
เริ่มต้นขับรถและชื่อทั้งหมดจะทำทันทีที่ใบสมัครจะเริ่มต้น (FormCreate)
TForm1 ขั้นตอน . FormCreate (Sender: TObject) ;
เริ่ม
เส้นทาง: getcurrentdir = () ; / / Get เส้นทางปัจจุบันของโปรแกรมต้องอยู่ในไดเรกทอรี % eHouse_DIR % \ \ BIN
เส้นทาง: = stringreplace เส้นทาง ( , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Get เส้นทางของแอพลิเคชัน eHouse – ชุด eHouse เส้นทางที่สมัคร
loadnames_rm ; / โหลด / ชื่อตัวควบคุม ehouse1 – โหลดไดรเวอร์ชื่อ eHouse 1
init_heat_temperature_names ; / / โหลดชื่อ heatManagera เซ็นเซอร์
readethernetdevs ; ควบคุม / / โหลด Ethernet ชื่อ eHouse – อ่านอุปกรณ์ eHouse ชื่อ 2
Timer1 . ช่วงเวลา: = 3000 ; / วงจรช่วงชุด / งานในหน่วยมิลลิวินาที – กำหนดระยะเวลาที่จะเริ่มต้นการตรวจสอบข้อมูลวงจร
Timer1 . เปิดใช้งาน: = true ; / / เริ่มงานโดยอัตโนมัติ (update สถานะ – รวมถึงการตรวจสอบปกติของข้อมูล
update_status ; / / อ่านสถานะแรก
ปลาย ;
การตรวจสอบข้อมูลวงจรจะกระทำโดย Timer1 ฟังก์ชัน (Timer1Timer) ทำงานในช่วงเวลาที่กำหนดไว้ในพารามิเตอร์ Timer1 . ช่วงเวลา (มิลลิวินาที) .
TForm1 ขั้นตอน . Timer1Timer (Sender: TObject) ;
var TF: textfile ;
เริ่ม
update_status ; / / แปลงสถานะของไดรเวอร์
Test_save ; / / สำหรับการทดสอบเขียนผลทั้งหมดไปยังแฟ้มข้อความ
ลอง / / สร้างไฟล์เครื่องหมายสำหรับการประยุกต์ใช้ KillExec . exe ที่สามารถ ” ชม ” โปรแกรมก่อนที่จะตก
AssignFile (TF , เส้นทาง + ‘ บันทึก \ log – analizer . stp ‘ ) ;
/ / แจ้ง WDT ว่าโปรแกรมทำงานอย่างถูกต้องโดยใช้ stampfile ” ล็อก \ – analizer . stp ”
เขียน (TF) ;
writeln (TF , ‘ 1 ‘ ) ;
ในที่สุด ;
closefile (TF) ;
ปลาย ;
ปลาย ;