Elektronik Kantardan Veri Çekmek
-
merhaba hepinize iyi günler.
elimde Baykon un Bx2 model kantarı var.
kantardan gelen ağırlık bilgisini seriport la çekmeye çalıştım fakat beceremedim.
şöyle bir kodum var.
private void buttonStart_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Parity = Parity.Odd;
serialPort1.DataBits = 7;
serialPort1.StopBits = StopBits.One;
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
serialPort1.Open();
if (serialPort1.IsOpen)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
textBox1.ReadOnly = false;
}
}
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
}
burada start ettiğimde evente girmiyor.
bilgisi olan arkadaşlar yardım ederlerse sevinirim. -
zaten kodda belirttiğin eventı tetiklemesi için hiç bir şey söylememişsin.Sadece tanımlamışsın.Eğer SeriPort nesnesinde bazı olaylar gerçekleşirse(neler bilmiyorum seriport nesnesini hiç kullanmadım) otomatikman tetikleyecektir belirttiğin eventı
-
kodun tamamını yolluyorum;
string RxString;
public Form1()
{
InitializeComponent();
//CheckForIllegalCrossThreadCalls = false;
}
//SerialPort s=new SerialPort();
//Thread __Kanal;
private void buttonStart_Click(object sender, EventArgs e)
{
//__Kanal = new Thread(new ThreadStart(Parcacik));
//__Kanal.Start();
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.DataBits = 7;
serialPort1.Parity = Parity.Odd;
serialPort1.Handshake = Handshake.None;
serialPort1.StopBits = StopBits.One;
serialPort1.Close();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
serialPort1.Open();
if (serialPort1.IsOpen)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
textBox1.ReadOnly = false;
}
else
{
}
}
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}
private void buttonStop_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
buttonStart.Enabled = true;
buttonStop.Enabled = false;
textBox1.ReadOnly = true;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(RxString);
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void Parcacik()
{
}
private void textBox1_KeyPress_1(object sender, KeyPressEventArgs e)
{
//__Kanal = new Thread(new ThreadStart(Parcacik));
// If the port is closed, don't try to send a character.
if (!serialPort1.IsOpen) return;
// If the port is Open, declare a char[] array with one element.
char[] buff = new char[1];
// Load element 0 with the key character.
buff[0] = '1'; //e.KeyChar;
// Send the one character buffer.
serialPort1.Write(buff,0,1);
// Set the KeyPress event as handled so the character won't
// display locally. If you want it to display, omit the next line.
e.Handled = true;
}
textchanged olayını öylesine koydum .
serialPort1.Write(buff,0,1); sorunsuz çalışıyor(sorun suz derken hata almıyorum.) . fakat serialPort1_DataReceived eventine giremiyorum. bildiğim kadarı ile serialport1.write() işlemi gerçekleşinde , bizim eventa girmesi lazım.
bilgisi olan arkadaşlar yardım ederlerse sevinirim.
