Tråde
HejHåber nogle kan hjælpe mig med dette lille problem.
Jeg er ikke i samme tråd som min form og da jeg forsøger at skrive til et listview går det skidt.
Min kode virker sådan.
Der kommer et Event når der er data på comporten.
Disse data skulle gerne føres over i min form og og skrives i på skærmen i et listview. UpdateText(); i class comport.
På forhånd TAK
public partial class Form1 : Form
{
ListViewItem listViewItem1 = new ListViewItem();
public Form1()
{
InitializeComponent();
}
// Delegate er lavet specielt for denne methode
private delegate void DisplayDelegate(string text);
//Methoden som bliver kaldt fra "arbejder tråden"
public virtual void WriteToForm(string txt)
{
if (InvokeRequired)
{
Invoke(new DisplayDelegate(WriteToForm));
}
else
{
//the actual job is here
listViewItem1.Text = "hej";
}
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
class Comport
{
public SerialPort sp = null;
public String data = "";
public Comport()
{
sp = new SerialPort();
}
public void Comsetup(String Com)
{
sp.PortName = "COM" + Com;
sp.DataBits = 8;
sp.BaudRate = 9600;
sp.Parity = Parity.None;
sp.StopBits = StopBits.Two;
sp.Handshake = Handshake.None;
sp.DtrEnable = true;//Data Terminal Ready
sp.RtsEnable = true;//Requist To Sent
sp.ReadTimeout = 300;
sp.WriteTimeout = 300;
sp.ReadBufferSize = 1024;
//sp.Encoding = Encoding.GetEncoding("iso-8859-1");
sp.Encoding = Encoding.Default;
sp.DataReceived += new SerialDataReceivedEventHandler(DataReceviedHandler);
}
private void DataReceviedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
int indata = sp.ReadByte();
MessageBox.Show(indata.ToString("X"));
UpdateText(indata.ToString());
}