Gast
#2840266
Hallo,
ich habe folgendes Problem:
Ich bekomme zwar Daten, aber durch den String keine richtigen.
Wie kann ich den im Quellcode schreiben damit er mir 2 Bytes
ausspukt(niederwertiges Byte und höherwertiges Byte) die muss ich
zusammenlegen und dann damit weiterrechnen um auf die Drehzahl zu
kommen.
Bin leider noch C# anfänger und komme hier nicht weiter, hier mein Code:
using System;
using System.Collections.Generic;//ArrayListe
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;//Delagation invoke (Threadübergreifend)
using System.Diagnostics;
using System.IO.Ports;//serielleSchnittstelle
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string RecievedLine;// RecievedLine nicht lokal, sondern in der
Klasse definieren
byte[] Bereitp;
public Form1()
{
InitializeComponent();
}
delegate void InvokeLB(string RecievedLine);
InvokeLB lbRecievedDelegate;
private void button1_Click(object sender, EventArgs e)
{
Port_open();
}
private void Port_open()
{
byte[] Startk = new byte[1];
Startk[0] = 1;
//try{
COM2.Open(); //Serialport öffnen
if (COM2.IsOpen){
button1.Enabled = false; //button1 blass
button1.Text = "Erfolgreich";
}
// }
//catch{
//MessageBox.Show("Keine Verbindung möglich", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
COM2.Write(Startk, 0, 1);
Thread.Sleep(1000);
Bereitp = new byte[1];
Startk[0] = 3;
COM2.Write(Startk, 0, 1);
Thread.Sleep(50);
Startk[0] = 10;
COM2.Write(Startk, 0, 1);
COM2.Read(Bereitp, 0, 1);
Debug.Print(BitConverter.ToString(Bereitp));
}
private void button2_Click(object sender, EventArgs e)
{
Port_Close();
}
private void Port_Close()
{
byte[] Stop = new byte[1];
Stop[0] = 0;
COM2.Write(Stop, 0, 1);
COM2.Close();
}
private void COM2_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
RecievedLine = COM2.ReadExisting();
//int16 drehzahl = BitConverter.ToInt16();
this.BeginInvoke(new EventHandler(DisplaySerialData));
// lbRecieved.Invoke(lbRecievedDelegate, new object[] {
RecievedLine });
}
private void DisplaySerialData(object sender, EventArgs e)
{
Debug.Print(Convert.ToString(RecievedLine));
// MessageBox.Show(RecievedLine);
}
private void Form1_FormClosed(object sender, FormClosedEventArgs
e) // Anwendungen schließen = Verbindung trennen
{
byte[] Stop = new byte[1];
Stop[0] = 0;
COM2.Write(Stop, 0, 1);
COM2.Close();
}
}
}
Würde mich über Hilfe sehr freuen.
Greez Toni