Laden...

serial port .net 2.0

Erstellt von zerli vor 19 Jahren Letzter Beitrag vor 19 Jahren 7.828 Views
Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren
serial port .net 2.0

hab ein kleines prog geschrieben um daten zu senden und empfangen weis wer ob das so funkzt danke

C
980 Beiträge seit 2003
vor 19 Jahren

Warum probierst du's nicht einfach aus?

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren
schon klar

das mit dem senden der daten fukzt einwandfrei
hab eben kein gerät rumligen das daten über die serielle schnitstelle sendet

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

habe jetzt einen virtuellen seriellen port generiert und kommunzziere nit dem hyperterminel

das problem das ich habe ist das keine daten in meinem prog ankommen wegsenden funktioniert

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren
 #region Using directives

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

#endregion

namespace WindowsApplication1
{
    partial class Form1 : Form

    {
        
        public Form1()
        {
            InitializeComponent();
        }
        //empfangen fehler!!
        public void serialPort1_ReceivedEvent(object sender, System.IO.Ports.SerialReceivedEventArgs e)
        {
            string empfangen;

            empfangen = serialPort1.ReadExisting();
            textBox2.Text = empfangen;
        }
        //einschalten
        private void button1_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
                MessageBox.Show("Fehler serialport bereits verwendet");
            else
            {
                this.serialPort1.Open();
                button1.Enabled = false;
                button2.Enabled = true;
                button3.Enabled = true
                    ;
                label2.Text = ("Status: port open");

            }
        }
        //auschalten
        private void button2_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                this.serialPort1.Close();
                button1.Enabled = true;
                button2.Enabled = false;
                button3.Enabled = false;
                label2.Text = ("Status: port closed");
            }


        }
        //senden
        private void button3_Click(object sender, EventArgs e)
        {
            string senddata;
            senddata = textBox1.Text;
            this.serialPort1.Write(senddata);
            textBox1.Text = ("");
        }
    }
}

hab jetzt eine neue variante und das gibt immer einen fehler wenn daten ankommen weis jemand was ich falsch mache

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

bitte helft mir ein bissschen weiter thx

C
980 Beiträge seit 2003
vor 19 Jahren

Was denn für ein Fehler?

Hab mir die whidbey betas nicht installiert, kann es also nicht selber testen ...

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

erster fehler den ich bekomme🙁 direkt im recive event)

Illegal cross-thread operation: Control 'textBox2' accessed from a thread other than the thread it was created on.

2 fehler ( Application.Run(new Form1())😉

Illegal cross-thread operation: Control 'textBox2' accessed from a thread other than the thread it was created on.\r\nStack trace where the illegal operation occurred was:\r\n\r\n\tat System.Windows.Forms.Control.get_Handle()\r\n\tat System.Windows.Forms.Control.get_WindowText()\r\n\tat System.Windows.Forms.TextBoxBase.get_WindowText()\r\n\tat System.Windows.Forms.Control.get_Text()\r\n\tat System.Windows.Forms.TextBoxBase.set_Text(String)\r\n\tat System.Windows.Forms.TextBox.set_Text(String)\r\n\tat WindowsApplication1.Form1.serialPort1_ReceivedEvent(Object, SerialReceivedEventArgs)\r\n\tat System.IO.Ports.SerialPort.CatchReceivedEvents(Object, SerialReceivedEventArgs)\r\n\tat System.IO.Ports.SerialStream.EventLoopRunner.CallReceiveEvents(Object)\r\n\tat System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object)\r\n\tat System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object, StackCrawlMark&)\r\n\tat System.Threading._ThreadPoolWaitCallback.WaitCallback(Object)\r\n"

und es wird sogar noch angezeigt das ein zeichen empfangen wurde bin langsam am ende mitt meinen nerven

glaube irgendwo in beinem prog ist ein bug oder es kommt weil ich kene fehler behandlung habe weis es leider nnicht genau

C
980 Beiträge seit 2003
vor 19 Jahren

Original von zerli
Illegal cross-thread operation: Control 'textBox2' accessed from a thread other than the thread it was created on.

Na also, da steht doch in klarem englisch was der Fehler ist 😉

(macht auch sinn, typischer Fehler übrigens ... auch wenn in v1.1 solche fehler (leider) noch nicht abgefangen wurden) ...

hint: Invoke()

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

na denn werd ich mich mal schlau machen wie das geht
oder weis das zufallig einer

C
980 Beiträge seit 2003
vor 19 Jahren

(das Problem ist, dass du in der Handler Methode nicht auf WinForms Objekte zugreifen darfst, da die Methode in nem anderen Thread ausgeführt wird ... per (Dein WinFormsObjekt).Invoke kannst jedoch eine Methode im WinForms Thread Kontext ausführen ...

(versuch sonst auch mal statt auf die TextBox zuzugreifen eine MessageBox anzuzeigen oder in eine datei zu schreiben ...)

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

alles klar war eigentlich auch nur zum ausprobieren das mit der textbox
vielen dank für die hilfe

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

hab jetz das pro so wirklich zum laufen bekommen und wenn mann es mit eimen virtuellen comport testet läufts
wer probieren will kann es ja runterladen und eventuell noch ein paar verbessserungsvorschläge machen was mich noch interesseirren würde ist die fehlerbehandlung wer einen guten einfall hat soll sich einfach melden

Z
zerli Themenstarter:in
31 Beiträge seit 2004
vor 19 Jahren

sollte das prog nicht funktzen muss ein anderer com port oder
ein programm für viruelle comports installiert sen