Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
gửi một số từ windownform C# xuống arduino
11:49 28-04-2017
2.803 lượt xem
4 bình luận
14:21 28-04-2017
e viết code giử số xung từ windownform xuống arduino để điều khiển động cơ bước.Chương trình e gửi số xuống arduino nhận mà led không
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;
namespace Serial_Port_COM
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
getAvailablePorts();
}
void getAvailablePorts()
{
String[] ports = SerialPort.GetPortNames();
comboBox1.Items.AddRange(ports);
}
private void ComputeCoefficients(int NumOfPulses,int[] coeffs)
{
coeffs[0] = NumOfPulses / 10000;
coeffs[1] = (NumOfPulses % 10000) / 100;
coeffs[2] = (NumOfPulses % 10000) % 100;
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void buttonOpen_Click(object sender, EventArgs e)
{
try
{
if (comboBox1.Text == "" || comboBox2.Text == "")
{
textBox2.Text = " please slect port setting";
}
else
{
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
serialPort1.Open();
progressBar1.Value = 100;
buttonSent.Enabled = true;
buttonRead.Enabled = true;
textBox1.Enabled = true;
buttonOpen.Enabled = false;
buttonClose.Enabled = true;
}
}
catch (UnauthorizedAccessException)
{
textBox2.Text = "unauthorized Access";
}
}
private void buttonClose_Click(object sender, EventArgs e)
{
serialPort1.Close();
progressBar1.Value = 0;
buttonSent.Enabled = false;
buttonRead.Enabled = false;
buttonOpen.Enabled = true;
buttonClose.Enabled = false;
textBox1.Enabled = false;
}
private void SendDataToSerialPort(int[] paramaters,int length)
{
if (this.serialPort1.IsOpen)
{
serialPort1.DiscardInBuffer();
serialPort1.DiscardOutBuffer();
byte[] buf = new byte[length];
for (int i = 0; i < length; i++)
{
byte[] temp = BitConverter.GetBytes(paramaters[i]);
buf[i] = temp[0];
}
serialPort1.Write(buf, 0, length);
//buf[0] =label4.Text;
}
}
private void buttonSent_Click(object sender, EventArgs e)
{
//int NumOfPulses = int.Parse(this.textBox1.Text);
int NumOfPulses = Convert.ToInt32(textBox1.Text);
// int NumOfPulses = 0;
// if(Int32.TryParse(textBox1.Text, out NumOfPulses))
//NumOfPulses
int[] coeffs = { 0, 0, 0 };
ComputeCoefficients((int)NumOfPulses, coeffs);
int[] paramaters = new int[3];
paramaters[0] = coeffs[0];
paramaters[1] = coeffs[1];
paramaters[2] = coeffs[2];
int length = 3;
SendDataToSerialPort(paramaters,length);
textBox1.Text = "da gui";
}
private void buttonRead_Click(object sender, EventArgs e)
{
try
{
textBox2.Text = serialPort1.ReadLine();
}
catch(TimeoutException)
{
textBox2.Text = "khong nhan dc";
}
}
}
}
.
code aruino:
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);// put your setup code here, to run once:
}
void loop()
{
char mybytes[3];
for(int i=0;i<3;i++)
{
mybytes[i]=Serial.read();
// put your main code here, to run repeatedly:
}
int a;
a=mybytes[2]+mybytes[1]*100+mybytes[0]*10000;
if(a==9600)
{
digitalWrite(13,HIGH);
}
if(a==0)
{
digitalWrite(13,LOW);
}
}
sáng.a xem e mắc lỗi gì ạ
bạn debug thử cái chỗ
Xem giá trị đã truyền tới được chưa nhé.