Arduino üzerinden c# a veri yollama

ceku7878

Üye
Katılım
28 May 2020
Mesajlar
47
Puanları
1
Yaş
26
Merhaba
Arduinodan C# a veri göndermek istiyorum. 40,50,60,70 sayılarını 4 farklı labela yazdırmak istiyorum.
Yapmaya çalıştığım kod aşağıda;


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;
using Microsoft.Win32;


namespace WindowsFormsApp6
{
public partial class Form1 : Form
{
string[] ports = SerialPort.GetPortNames();

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

foreach (string port in ports)
{
comboBox1.Items.Add(port);
comboBox1.SelectedIndex = 0;
}
comboBox2.Items.Add("2400");
comboBox2.Items.Add("4800");
comboBox2.Items.Add("9600");
comboBox2.Items.Add("19200");
comboBox2.Items.Add("115200");
comboBox2.SelectedIndex = 2;

label2.Text = "Bağlantı Kapalı";
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
{

if (serialPort1.IsOpen == true)
{
serialPort1.Close();

}
}
}

private void timer1_Tick(object sender, EventArgs e)
{
try
{
//int sonuc = serialPort1.ReadByte();

/* byte[] intBytes = BitConverter.GetBytes(sonuc);
Array.Reverse(intBytes);
byte[] result = intBytes;*/
byte[] buffer = new byte[6];
serialPort1.Read(buffer, 0,6);


label1.Text = buffer[2]+ "";


}



catch (Exception ex)
{
MessageBox.Show(ex.Message);
timer1.Stop();
}

}

private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
if (serialPort1.IsOpen == false)
{
if (comboBox1.Text == "")
return;
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text);
try
{
serialPort1.Open();
label2.ForeColor = Color.Green;
label2.Text = "Bağlantı Açık";
}
catch (Exception hata)
{
MessageBox.Show("Hata:" + hata.Message);
}
}
else
{
label2.Text = "Bağlantı kurulu !!!";


}

}

private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
if (serialPort1.IsOpen == true)
{
serialPort1.Close();
label2.ForeColor = Color.Red;
label2.Text = "Bağlantı Kapalı";
}
}



private void label1_Click(object sender, EventArgs e)
{

}



private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int bytesToRead = serialPort1.BytesToRead;
System.Diagnostics.Debug.WriteLine(bytesToRead);
}



}
}
 
Bu konu hakkında bilgisi olan veya elinde kod bulunan var mı ? Günlerdir uğraşıyorum.
 
Bu projede seriport kullanmam lazım. Şu şekilde yeni bir kod yazdım ama hala istediğim gibi çalışmıyor.


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 WindowsFormsApp15
{
public partial class Form1 : Form
{
int g;
string[] ports = SerialPort.GetPortNames();
public Form1()
{
InitializeComponent();
}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

g = serialPort1.BytesToRead;

if (g >= 9)
{
byte[] data = new byte[g];
serialPort1.Read(data, 0, g);
string B1 = string.Format("{0:X}", data[0]);
string B2 = string.Format("{0:X}", data[1]);
string B3 = string.Format("{0:X}", data[2]);
string B4 = string.Format("{0:X}", data[3]);
string B5 = string.Format("{0:X}", data[4]);
string B6 = string.Format("{0:X}", data[5]);

if (g == 9)
{

string B7 = string.Format("{0:X}", data[6]);
string B8 = string.Format("{0:X}", data[7]);
string B9 = string.Format("{0:X}", data[8]);

changebyte();

byte[] crc16 = { (byte)Convert.ToInt16(B1, 16), (byte)Convert.ToInt16(B2, 16), (byte)Convert.ToInt16(B2, 16), (byte)Convert.ToInt16(B3, 16), (byte)Convert.ToInt16(B4, 16), (byte)Convert.ToInt16(B5, 16), (byte)Convert.ToInt16(B6, 16), (byte)Convert.ToInt16(B6, 16) };
string GenCrc16 = null;
if (B8 == (GenCrc16(crc16, 7) & 00xFF).ToString("X") && B9 == (GenCrc16(crc16, 7) >> 8).ToString("X") );

{





}



}


}


}

private bool ToString(string v)
{
throw new NotImplementedException();
}

private void changebyte()
{
throw new NotImplementedException();
}

private void Form1_Load(object sender, EventArgs e)
{
foreach (string port in ports)
{
comboBox1.Items.Add(port);
comboBox1.SelectedIndex = 0;
}

}
}
}
 
Bu konuda bilgi olan birisi var mı ?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…