Hallo zusammen!
Ihr habe mir gestern schon sehr geholfen, ich habe noch ein weiteres Problem, vielleicht weiß jemand dazu etwas zu sagen. Ich entschuldige mich nochmals füt die Anfängerfragen, wer davon genervt ist, überlese sie einfach...
Ich habe mit u.g. Code das Problem, dass ich beim Schließen der Form hin und wieder (nicht immer) die Fehlermeldung "Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen." kassiere. Ich habe keine exakte Idee, woran das liegt, und vor allem, was ich dagegen tun kann. Hängt es damit zusammen, dass der Eventhandler für "DataReceived" noch ausgeführt wird, obwohl das serial Objekt schon geschlossen ist, o. ä.?
Danke für alle Tipps!
Max
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports;
namespace rs232_test01 { public partial class Form1 : Form {
private int _serConnected = 0; private int[] _posStps = new int[4]; public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { CheckForIllegalCrossThreadCalls = false; serialPort1.BaudRate = 9600; serialPort1.DataBits = 8; serialPort1.Parity = Parity.None; serialPort1.StopBits = StopBits.One; serialPort1.PortName = "COM4"; serialPort1.NewLine = "\r\n"; }
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { string serialIn; serialIn = serialPort1.ReadLine(); listBox1.Items.Add(serialIn); label1.Text = serialIn; } catch { MessageBox.Show("Ein IO-Fehler ist aufgetreten"); }
}
private void button1_Click(object sender, EventArgs e) { if (_serConnected == 0) { serialPort1.Open(); serialPort1.Write("r"); button1.Text = "Disconnect"; _serConnected = 1; } else { serialPort1.Write("s"); serialPort1.Close(); button1.Text = "Connect"; _serConnected = 0; } }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { serialPort1.Close(); }
} } |