Phần mềm giao diện trên máy tính

Một phần của tài liệu Điều khiển cơ cấu từ xa sử dụng sự trợ giúp của máy tính (Trang 81 - 98)

c. Biến hằng và toán tử

3.2.1 Phần mềm giao diện trên máy tính

Phần mềm giao diện trên máy tính đƣợc viết bằng chƣơng trình visual basic 2012. Lập trình hƣớng đối tƣợng. Trên chƣơng trình chứa dữ liệu điều khiển cơ cấu chấp hành ở phía nhận là vi điều khiển.

Với phần mềm lập trình trên máy tính là Visual Studio, ở đây sử dụng ngôn ngữ lập trình là C#, lập trình hƣớng đối tƣợng, một phần mềm rất mạnh, ta có thể xây dựng giao diện điều khiển nhƣ ý muốn. Trong luận văn này, chỉ sử dụng một số tính năng nhỏ của phần mềm, còn công việc khai thác sử dụng hết phần mềm này là cả một công việc đồ sộ. Ta chỉ sử dụng một số tính năng của phần mềm này để phục vụ công việc trong phạm vi sử dụng của luận văn.

Lập trình giao diện:

82

Hình 31. Môi trường thiết kế của luận văn

Chƣơng trình điều khiển trên máy tính gồm 2 phần. Phần 1 – cửa sổ đăng nhập:

Hình 32. Cửa sổ Login

Xây dựng cửa sổ này nhƣ sau: trong giao diện chƣơng trình vào File/New/Project nhƣ hình dƣới

Hình 33. Mô tả các bước tạo Project

83

Hình 34. Mô tả các bước đặt tên và lưu trữ Project

1: chọn kiểu lập trình. Dạng windows Forms 2: Đặt tên cho Project

3: Chọn nơi lƣu trữ Project 4: nhấn chọn OK

Sau đó ta sẽ đƣợc:

84

Trong Form1 ta sẽ sử dụng Toolbox để chọn các đối tƣợng nhƣ sau:

Hình 36. Cửa sổ Toolbox trong môi trường lập trình

Trong Toolbox này chứa tất cả các nút điều khiển của visual Studio

Sử dụng 3 nhãn Label, 2 nút nhấn Button, và 2 Panel để đặt các đối tƣợng tách riêng từng khu vực.

85

Hình 37. Các bước vào cửa sổ đặc tính của đối tượng

Trong Properties ta tiến hành thay tên các đối tƣợng bằng cách:

Thay tên hiển thị ta chọn Properties/Text và thay tên. Thay tên thuộc tính ta chọn Properties/Name và thay đổi.

Sau khi làm các bƣớc trên với tất cả các đối tƣợng ta đƣợc giao diện Login nhƣ sau:

Hình 38. Cửa sổ Login khi hoàn thành

86 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace DIEU_KHIEN_TU_MAY_TINH {

publicpartialclassForm1 : Form

{

public Form1() {

InitializeComponent(); }

privatevoid label1_Click(object sender, EventArgs e) {

}

privatevoid button1_Click(object sender, EventArgs e) {

this.Close(); }

privatevoid bt_Login_Click(object sender, EventArgs e) {

SqlConnection con = newSqlConnection(@"Data

Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Admin\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30;");

SqlDataAdapter sda = newSqlDataAdapter("Select Count(*) From Login where User= ' " + textBox1.Text +

" ' and Pass= ' " + textBox2.Text + " ' ",con); DataTable dt = newDataTable(); sda.Fill(dt);

if (dt.Rows[0][0].ToString() == "0") {

this.Hide();

Main ss = newMain(); ss.Show();

} else

{

MessageBox.Show("Hay chon Ten dang nhap va mat khau khac!"); }

} } }

Chức năng của các nút điều khiển EXIT và LOGIN.

Nút EXIT có chức năng thoát khỏi chƣơng trình. LOGIN có chức năng đăng nhập vào chƣơng trình chính (sẽ nhắc đến ở phần sau).

87

Khi nhấn LOGIN chƣơng trình sẽ chạy và duyệt tìm 2 ô User và pass. Nếu đúng user và pass thì chƣơng trình sẽ chạy vào chƣơng trình chính. Nếu không nó sẽ yêu cầu nhập lại pass hoặc user.

Ngoài những đối tƣợng nhìn thấy trong Form này còn chứa một phần rất quan trọng đó là cơ sở dữ liệu lƣu trữ tên user và pass.

Hình 39. Cơ sở dữ liệu tên đăng nhập và mật khẩu

Thêm cơ sở dữ liệu này bằng cách sử dụng:

88

Ta sẽ thêm vào 1 bảng dữ liệu nhƣ sau

Hình 41. Kết quả sau khi add cơ sở dữ liệu

Khi chƣơng trình chạy thì sẽ duyệt các giá trị của các ô trong cơ sở dữ liệu này và kiểm tra. Code để thực hiện công việc này nhƣ sau:

SqlConnection con = newSqlConnection(@"Data

Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Admin\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30;");

SqlDataAdapter sda = newSqlDataAdapter("Select Count(*) From Login where User= ' " + textBox1.Text +

" ' and Pass= ' " + textBox2.Text + " ' ",con); DataTable dt = newDataTable(); sda.Fill(dt);

if (dt.Rows[0][0].ToString() == "0") {

this.Hide();

Main ss = newMain(); ss.Show();

}

Nhƣ vậy ta đã xây dựng đƣợc phần giao diện mở đầu của chƣơng trình điều khiển trên máy tính.

Từ giao diện LOGIN đăng nhập thành công ta sẽ vào đƣợc chƣơng trình chính có tên

MAIN. Để tạo đƣợc Form Main ta click chuột phải vào tên Project trong thanh Solution Explorer nhƣ sau:

89

Hình 42. Các bước add thêm Form vào chương trình

Sau đó sẽ đƣợc

Hình 43. Chọn item để thêm

Ta đặt tên cho Form này là Main.cs.

90

Trên đây là giao diện chính của chƣơng trình điều khiển. Trên giao diện chia ra làm 4 khu vực với các chức năng khác nhau ở ứng dụng thực tế.

Khu vực thứ nhất:

Chức năng của khu vực này là lựa chọn và kết nối với cổng COM. Do giao diện điều khiển từ máy tính và phần nhận điều khiển là một mạch điều khiển, giao tiếp giữa mạch điều khiển và máy tính qua cổng COM, ta phải lựa chọn cổng kết nối chính xác với cổng COM mà ta đang sử dụng. Để thiết kế đƣợc đối tƣợng điều khiển này đã sử dụng: 1 Button, trên hình ảnh là Button có tên Connect. Bên cạnh đó phải sử dụng 1 Combobox, có tác dụng để lựa chọn cổng COM, và cuối cùng là 1 Label để hiển thị trạng thái kết nối của cổng COM. Tất cả các đối tƣợng điều khiển trên đƣợc đặt vào 1 Panel để tách riêng từng khu vực. Phần chính của khối chức năng này ta phải đƣa vào cổng SerialPort trên Visual Studio. Để đƣa chức năng này vào chƣơng trình, ta chọn

Toolbox/Component/SerialPort

Hình 45. Các cửa sổ để thiết lập đặc tính cổng COM

Trên đây là hình ảnh cài đặt cổng COM trong chƣơng trình. Để quét thời gian và tìm sự thay đổi trong lựa chọn cổng ta sử dụng 1 Timer trong chƣơng trình và cài đặt nhƣ sau:

91

Hình 46. Cửa sổ để thiết lập đặc tính cổng timer

Sau khi đã chọn đầy đủ các đối tƣợng, tiến hành viết code cho khối điều khiển này. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; using System.IO; namespace DIEU_KHIEN_TU_MAY_TINH {

publicpartialclassMain : Form

{

public Main() {

InitializeComponent(); }

conststring message = "Chua Mo Cong COM! Ban Co Muon Mo Cong COM"; conststring message1 = "XIN DONG CHUONG TRINH";

conststring caption = "COM open";

conststring message2 = " XIN CHON CONG COM"; conststring caption2 = " SELECT_COM";

int intlent = 0;

privatevoid timer1_Tick(object sender, EventArgs e) {

string[] ports = SerialPort.GetPortNames(); if (intlent != ports.Length)

{

intlent = ports.Length; cbb_com1.Items.Clear(); for (int j = 0; j < intlent; j++) {

cbb_com1.Items.Add(ports[j]); }

} }

privatevoid bt_connect_Click(object sender, EventArgs e) {

92 if (lb_status.Text == "Disconnect") { if (cbb_com1.Text != "") { com.PortName = cbb_com1.Text; lb_status.Text = "Connect"; bt_connect.Text = "Disconnect"; com.Open(); } else {

var result2 = MessageBox.Show(message2, caption2); } } else { com.Close(); lb_status.Text = "Disconnect"; bt_connect.Text = "Connect"; } }

Nhƣ đã nói ở phần đầu, nội dung chủ yếu của luận văn là điều khiển :

+ Đóng mở các cửa phòng. (điều khiển các cơ cấu chấp hành từ xa nhƣ xi lanh khí nén, động cơ, van từ….)

+ Cấp điện ánh sáng cho từng phòng. (thực hiện nhiệm vụ đóng cắt các thiết bị điện công suất nhỏ)

+ Cấp điện động lực cho các phòng. (Đóng cắt các thiết bị điện công suất lớn)

Chính vì vậy trên giao diện chƣơng trình có chia ra 3 khối điều khiển tiếp theo. Khối điều khiển đóng mở các cửa phòng có có mô phỏng trạng thái của các phòng. Khôi điều khiển cấp điện động lực cho một số phòng đại diện. Khối điều khiển ánh sáng cho các phòng đại diện.

Khối điều khiển ánh sáng các phòng.

Hình 47. Giao diện khối điều khiển ánh sáng các phòng

Hình ảnh trên là khối chọn và xuất tín hiệu điều khiển đến mạch điều khiển. Các ô từ P1 đến P32 lần lƣợt là thứ tự các phòng mô phỏng. khi tích chọn một hoặc một số phòng sau đó click nút ON hoặc

OFF. Để tắt mở các phòng, tƣơng ứng với thao tác nhƣ trên là chƣơng trình sẽ xuất tín hiệu điều khiển tới mạch điều khiển nhƣ đoạn code dƣới đây:

private void bt_On_Click(object sender, EventArgs e) {

if (lb_status.Text == "Connect") {

93

{

label1.BackColor = System.Drawing.Color.Green; label1.Text = "ON";

com.WriteLine("1"); }

if (cb_P2.Checked == true) {

label2.BackColor = System.Drawing.Color.Green; label2.Text = "ON";

com.WriteLine("2"); }

if (cb_P3.Checked == true) {

label3.BackColor = System.Drawing.Color.Green; label3.Text = "ON";

com.WriteLine("3"); }

if (cb_P4.Checked == true) {

label4.BackColor = System.Drawing.Color.Green; label4.Text = "ON";

com.WriteLine("4"); }

if (cb_P5.Checked == true) {

label5.BackColor = System.Drawing.Color.Green; label5.Text = "ON";

com.WriteLine("5"); }

if (cb_P6.Checked == true) {

label6.BackColor = System.Drawing.Color.Green; label6.Text = "ON";

com.WriteLine("6"); }

if (cb_P7.Checked == true) {

label7.BackColor = System.Drawing.Color.Green; label7.Text = "ON";

com.WriteLine("7"); }

if (cb_P8.Checked == true) {

label8.BackColor = System.Drawing.Color.Green; label8.Text = "ON";

com.WriteLine("8"); }

if (cb_P9.Checked == true) {

label9.BackColor = System.Drawing.Color.Green; label9.Text = "ON";

com.WriteLine("9"); }

if (cb_P10.Checked == true) {

label10.BackColor = System.Drawing.Color.Green; label10.Text = "ON";

com.WriteLine("10"); }

94

if (cb_P11.Checked == true) {

label11.BackColor = System.Drawing.Color.Green; label11.Text = "ON";

com.WriteLine("11"); }

if (cb_P12.Checked == true) {

label12.BackColor = System.Drawing.Color.Green; com.WriteLine("12");

label12.Text = "ON"; }

if (cb_P13.Checked == true) {

label13.BackColor = System.Drawing.Color.Green; com.WriteLine("13");

label13.Text = "ON"; }

if (cb_P14.Checked == true) {

label14.BackColor = System.Drawing.Color.Green; com.WriteLine("14");

label14.Text = "ON"; }

if (cb_P15.Checked == true) {

label15.BackColor = System.Drawing.Color.Green; com.WriteLine("15");

label15.Text = "ON"; }

if (cb_P16.Checked == true) {

label16.BackColor = System.Drawing.Color.Green; com.WriteLine("16");

label16.Text = "ON"; }

if (cb_P17.Checked == true) {

label17.BackColor = System.Drawing.Color.Green; com.WriteLine("17");

label17.Text = "ON"; }

if (cb_P18.Checked == true) {

label18.BackColor = System.Drawing.Color.Green; com.WriteLine("18");

label18.Text = "ON"; }

if (cb_P19.Checked == true) {

label19.BackColor = System.Drawing.Color.Green; com.WriteLine("19");

label19.Text = "ON"; }

if (cb_P20.Checked == true) {

label20.BackColor = System.Drawing.Color.Green; com.WriteLine("20");

label20.Text = "ON"; }

95

if (cb_P21.Checked == true) {

label21.BackColor = System.Drawing.Color.Green; com.WriteLine("21");

label21.Text = "ON"; }

if (cb_P22.Checked == true) {

label22.BackColor = System.Drawing.Color.Green; com.WriteLine("22");

label22.Text = "ON"; }

if (cb_P23.Checked == true) {

label23.BackColor = System.Drawing.Color.Green; com.WriteLine("23");

label23.Text = "ON"; }

if (cb_P24.Checked == true) {

label24.BackColor = System.Drawing.Color.Green; com.WriteLine("24");

label24.Text = "ON"; }

if (cb_P25.Checked == true) {

label25.BackColor = System.Drawing.Color.Green; com.WriteLine("25");

label25.Text = "ON"; }

if (cb_P26.Checked == true) {

label26.BackColor = System.Drawing.Color.Green; com.WriteLine("26");

label26.Text = "ON"; }

if (cb_P27.Checked == true) {

label27.BackColor = System.Drawing.Color.Green; com.WriteLine("27");

label27.Text = "ON"; }

if (cb_P28.Checked == true) {

label28.BackColor = System.Drawing.Color.Green; com.WriteLine("28");

label28.Text = "ON"; }

if (cb_P29.Checked == true) {

label29.BackColor = System.Drawing.Color.Green; com.WriteLine("29");

label29.Text = "ON"; }

if (cb_P30.Checked == true) {

label30.BackColor = System.Drawing.Color.Green; com.WriteLine("31");

label30.Text = "ON"; }

96

if (cb_P31.Checked == true) {

label31.BackColor = System.Drawing.Color.Green; com.WriteLine("31");

label31.Text = "ON"; }

if (cb_P32.Checked == true) {

label32.BackColor = System.Drawing.Color.Green; com.WriteLine("32"); label32.Text = "ON"; } } else {

var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.Yes) { if (cbb_com1.Text != "") { com.PortName = cbb_com1.Text; lb_status.Text = "Connect"; bt_connect.Text = "Disconnect"; com.Open(); } else {

var result2 = MessageBox.Show(message2, caption2); }

} else {

var hienthi = MessageBox.Show(message1); }

} }

Đồng thời với chức năng tắt mở tại các phòng. Trên giao diện của chƣơng trình cũng kèm theo các ô hiển thị trạng thái tắt, mở của các phòng:

97

Hình 48. Giao diện khối hiển thị trạng thái các phòng

98

Hình 50. Giao diện khối hiển thị trạng thái tắt các phòng

Một phần của tài liệu Điều khiển cơ cấu từ xa sử dụng sự trợ giúp của máy tính (Trang 81 - 98)

Tải bản đầy đủ (PDF)

(134 trang)