using System;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
using System.Drawing;
using System.Drawing.Drawing2D;
namespace ServoArduino_01_cs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button_0_Click(object sender, EventArgs e)
{
int pasos_0;
int.TryParse(button_0.Tag.ToString(), out pasos_0);
trackBar1.Value = pasos_0;
}
private void button_45_Click(object sender, EventArgs e)
{
int pasos_45;
int.TryParse(button_45.Tag.ToString(), out pasos_45);
trackBar1.Value = pasos_45;
}
private void button_90_Click(object sender, EventArgs e)
{
int pasos_90;
int.TryParse(button_90.Tag.ToString(), out pasos_90);
trackBar1.Value = pasos_90;
}
private void button_135_Click(object sender, EventArgs e)
{
int pasos_135;
int.TryParse(button_135.Tag.ToString(), out pasos_135);
trackBar1.Value = pasos_135;
}
private void button_180_Click(object sender, EventArgs e)
{
int pasos_180;
int.TryParse(button_180.Tag.ToString(), out pasos_180);
trackBar1.Value = pasos_180;
}
#region Conectar puerto.
private void Form1_Load(object sender, EventArgs e)
{
button_0.Tag = 0;
button_45.Tag = 45;
button_90.Tag = 90;
button_135.Tag = 135;
button_180.Tag = 180;
// Añado los puertos disponible en el PC con SerialPort.GetPortNames() al comboBox_Puerto.
try
{
comboBox_Puerto.DataSource = SerialPort.GetPortNames();
}
catch
{
MessageBox.Show("No encuentra ningún puerto físico ni virtual.", "Aviso:",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
// Añado los puertos disponible en el PC con SerialPort.GetPortNames() al comboBox_Puerto.
comboBox_Puerto.DataSource = SerialPort.GetPortNames();
// // Añade puertos disponibles físicos y virtuales.
serialPort1.PortName = comboBox_Puerto.Text.ToString();
}
// Detecta USB o puerto serie virtual cuando lo conecta y desconecta del cable.
protected override void WndProc(ref Message USB)
{
if (USB.Msg == 0x219)
{
comboBox_Puerto.DataSource = SerialPort.GetPortNames();
}
base.WndProc(ref USB); // Detecta si hay cambios en el usb y si los hay los refleja.
}
private void button_Conectar_Click(object sender, EventArgs e)
{
try
{
serialPort1.PortName = comboBox_Puerto.Text.ToString(); // Puerto seleccionado previamente.
serialPort1.Open(); // Abrir puerto.
comboBox_Puerto.Enabled = false;
button_Conectar.Enabled = false;
button_Desconectar.Enabled = true;
// Botones grados.
button_0.Enabled = true;
button_45.Enabled = true;
button_90.Enabled = true;
button_135.Enabled = true;
button_180.Enabled = true;
trackBar1.Enabled = true;
progressBar1.Enabled = true;
}
catch
{
MessageBox.Show("El puerto no existe.", "Aviso:",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void button_Desconectar_Click(object sender, EventArgs e)
{
serialPort1.Close(); // Cerrar puerto.
comboBox_Puerto.Enabled = true;
button_Conectar.Enabled = true;
button_Desconectar.Enabled = false;
// Botones grados.
button_0.Enabled = false;
button_45.Enabled = false;
button_90.Enabled = false;
button_135.Enabled = false;
button_180.Enabled = false;
trackBar1.Enabled = false;
progressBar1.Enabled = false;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) // ¿El puerto está abierto?
{
serialPort1.Close(); // Cerrar puerto.
}
}
#endregion
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
string valor = trackBar1.Value.ToString();
byte[] mBuffer = Encoding.ASCII.GetBytes(valor);
serialPort1.Write(mBuffer, 0, mBuffer.Length);
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
// Crear brocha sólida.
SolidBrush fondoNegro = new SolidBrush(Color.Black);
// Crear localización y tamaño del eclipse.
int x = 0;
int y = 0;
int anchura = 100;
int altura = 100;
// Dibujamos un círculo negro.
e.Graphics.FillEllipse(fondoNegro, x, y, anchura, altura);
Pen pen = new Pen(Color.Gray, 8);
pen.StartCap = LineCap.ArrowAnchor;
pen.EndCap = LineCap.RoundAnchor;
e.Graphics.DrawLine(pen, 50, 0, 50, 50);
}
}
}