using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Afis_7seg { public partial class Form1 : Form { public Form1() { InitializeComponent(); } System.Drawing.Graphics zona_desen; string txt, val_af; int dig; int[,] car; int[] car_z; static String[] Nume_porturi = new String[11]; int x0, y0, w; private void afis_7seg(Graphics desen, int px0, int py0, int dig_w, int dig) { System.Drawing.Pen cr_verde, cr_gri; cr_verde = new System.Drawing.Pen(System.Drawing.Color.Red, dig_w / 4); cr_gri = new System.Drawing.Pen(System.Drawing.Color.WhiteSmoke, dig_w / 4); UInt16[] digit = new UInt16[10] { 123, 40, 93, 109, 46, 103, 119, 41, 127, 111 }; int[] px = new int[7] { px0, px0, px0, px0 + dig_w, px0, px0 + dig_w, px0 }; int[] px_f = new int[7] { px0 + dig_w, px0, px0 + dig_w, px0 + dig_w, px0, px0 + dig_w, px0 + dig_w }; int[] py = new int[7] { py0, py0, py0 + dig_w, py0, py0 + dig_w, py0 + dig_w, py0 + 2 * dig_w }; int[] py_f = new int[7] { py0, py0 + dig_w, py0 + dig_w, py0 + dig_w, py0 + 2 * dig_w, py0 + 2 * dig_w, py0 + 2 * dig_w }; UInt16 nr = digit[dig]; int i; // sterg digit for (i = 6; i >= 0; i--) desen.DrawLine(cr_gri, px[i], py[i], px_f[i], py_f[i]); for (i = 6; i >= 0; i--) { UInt16 bit = Convert.ToUInt16((nr >> (i)) & 1); if (bit == 1) desen.DrawLine(cr_verde, px[i], py[i], px_f[i], py_f[i]); } } private void Form1_Load(object sender, EventArgs e) { zona_desen = this.CreateGraphics(); // pozitie afisaj 7 seg x0 = 200; y0 = 15; w = 20; // Listez porturile seriale Nume_porturi = System.IO.Ports.SerialPort.GetPortNames(); this.Porturi_s.Items.Clear(); //Adaug porturile exixtente for (int i = 0; i < Nume_porturi.Length; i++) { this.Porturi_s.Items.Add(Nume_porturi[i]); } //Pozitionarea listei pe primul element this.Porturi_s.SelectedIndex = 0; this.label3.Text = "Conectati-va la portul serial!"; car_z = new int[10] { 123, 40, 93, 109, 46, 103, 119, 41, 127, 111 }; car = new int[10, 8]; // caracterul 0 car[0, 0] = 1; car[0, 1] = 1; car[0, 2] = 0; car[0, 3] = 1; car[0, 4] = 1; car[0, 5] = 1; car[0, 6] = 1; car[0, 7] = 0; // caracterul 1 car[1, 0] = 0; car[1, 1] = 0; car[1, 2] = 0; car[1, 3] = 1; car[1, 4] = 0; car[1, 5] = 1; car[1, 6] = 0; car[1, 7] = 0; // caracterul 2 car[2, 0] = 1; car[2, 1] = 0; car[2, 2] = 1; car[2, 3] = 1; car[2, 4] = 1; car[2, 5] = 0; car[2, 6] = 1; car[2, 7] = 0; // caracterul 3 car[3, 0] = 1; car[3, 1] = 0; car[3, 2] = 1; car[3, 3] = 1; car[3, 4] = 0; car[3, 5] = 1; car[3, 6] = 1; car[3, 7] = 0; // caracterul 4 car[4, 0] = 0; car[4, 1] = 1; car[4, 2] = 1; car[4, 3] = 1; car[4, 4] = 0; car[4, 5] = 1; car[4, 6] = 0; car[4, 7] = 0; // caracterul 5 car[5, 0] = 1; car[5, 1] = 1; car[5, 2] = 1; car[5, 3] = 0; car[5, 4] = 0; car[5, 5] = 1; car[5, 6] = 1; car[5, 7] = 0; // caracterul 6 car[6, 0] = 1; car[6, 1] = 1; car[6, 2] = 1; car[6, 3] = 0; car[6, 4] = 1; car[6, 5] = 1; car[6, 6] = 1; car[6, 7] = 0; // caracterul 7 car[7, 0] = 1; car[7, 1] = 0; car[7, 2] = 0; car[7, 3] = 1; car[7, 4] = 0; car[7, 5] = 1; car[7, 6] = 0; car[7, 7] = 0; // caracterul 8 car[8, 0] = 1; car[8, 1] = 1; car[8, 2] = 1; car[8, 3] = 1; car[8, 4] = 1; car[8, 5] = 1; car[8, 6] = 1; car[8, 7] = 0; // caracterul 9 car[9, 0] = 1; car[9, 1] = 1; car[9, 2] = 1; car[9, 3] = 1; car[9, 4] = 0; car[9, 5] = 1; car[9, 6] = 1; car[9, 7] = 0; } private void timer1_Tick(object sender, EventArgs e) { if (this.serialPort1.IsOpen) { //metoda 1: utilizare matrice //val_af = "O" + (car[dig, 0] + 2 * car[dig, 1] + 4 * car[dig, 2] + 8 * car[dig, 3] + 16 * car[dig, 4] + 32 * car[dig, 5] + 64 * car[dig, 6] + 128 * car[dig, 7]).ToString(); //metoda 2:utilizare vector val_af = "O" + car_z[dig]; this.label4.Text = "Digit=" + dig.ToString(); this.serialPort1.Write(val_af); this.label2.Text = "Tx=" + val_af; //txt = ""; txt = this.serialPort1.ReadExisting(); this.label1.Text = "Rx=" + txt; if (txt.Length > 0) { //val = System.Convert.ToInt16(txt); } } } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { dig = System.Convert.ToInt16(this.numericUpDown1.Value); afis_7seg(zona_desen, x0, y0, w, dig); } private void but_con_Click(object sender, EventArgs e) { // sterg afisaj 7 seg afis_7seg(zona_desen, x0, y0, w, 0); if (!this.serialPort1.IsOpen) { this.serialPort1.PortName = System.Convert.ToString(this.Porturi_s.Items[this.Porturi_s.SelectedIndex]); this.serialPort1.Open(); this.label3.Text = "Portul a fost deschis"; } else { this.label1.Text = "Portul este deja deschis deschis"; } this.serialPort1.Write("AA"); } private void but_dec_Click(object sender, EventArgs e) { this.serialPort1.Close(); this.label3.Text = "Portul este deconectat!"; } } }