Skocz do zawartości

Visual studio c# + serialport i błędne wysyłanie znaków


sparow

Pomocna odpowiedź

Witam.

Borykam się z ogromnym problemem. Próbuję stworzyć aplikację , która będę sterował platformą. Na razie niech apka steruje zapalaniem i gaszeniem diody. Na szybko stworzyłem program na uC w Bascomie i przez terminal wszystko ładnie działa bez żadnych zawieszek. Kłopoty zaczynają się gdy zaczynam pisać w visualu. Przy pierwszym wysłaniu pojedynczego znaku zapali sie lub zgasnie dioda jednak potem lecą już śmieci , które potem uc odsyła. Gdzie popełniłem błąd? Pomożcie

kod w Bascomie

 
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600



Config Portb.0 = Output
Config Serialin = Buffered , Size = 254 , Bytematch = All

Enable Serial
Enable Interrupts
Dim U As Byte
Dim I As Integer




Do

Input , U




If U = 1 Then
Set Portb.0
Print "dioda swieci";
Print
End If



If U = 2 Then
Reset Portb.0
Print "dioda zgasla";
Print
End If


Loop

End

Serial0bytereceived:

Return

oraz kod z visuala w c#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sterowanie2
{
   public partial class Form1 : Form
   {
       string RxString;
       public Form1()
       {
           InitializeComponent();
           //readThread = new Thread(Read);

       }


       private void button2_Click(object sender, EventArgs e)
       {
           this.serialPort1.NewLine = "\r\n";
           this.textBox1.Clear();
           this.serialPort1.Open();


           //this.button2.Enabled = false;
           //this.button3.Enabled = true;
           //readThread.Start();
       }

       private void button3_Click(object sender, EventArgs e)
       {
           //this.readThread.Join();
           this.serialPort1.Close();

           //this.button2.Enabled = true;
           //this.button3.Enabled = false;
       }

       private void button4_Click(object sender, EventArgs e)
       {
           if (this.serialPort1.IsOpen)
           {
               //char[] test = { '2', '\r', '\n' };
               //this.serialPort1.Write(test, 0, 3);
               this.serialPort1.WriteLine("2");
               this.serialPort1. inputLen = 0

           }

       }

       private void button1_Click(object sender, EventArgs e)
       {
           if (this.serialPort1.IsOpen)
           {
               this.serialPort1.WriteLine("1");

           }
       }

       private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
       {
           //System.IO.Ports.SerialPort sp = (System.IO.Ports.SerialPort)sender;
           RxString = this.serialPort1.ReadExisting();
           this.Invoke(new EventHandler(DisplayText));
       }
       private void DisplayText(object sender, EventArgs e)
       {
           this.textBox1.AppendText(RxString);
       }

       private void serialPort1_ErrorReceived(object sender, System.IO.Ports.SerialErrorReceivedEventArgs e)
       {
           RxString = "Error\n";
           this.Invoke(new EventHandler(DisplayText));
       }

   }
}

Pozdrawiam i liczę na wszelką pomoc;)

Link do komentarza
Share on other sites

To tak z rozpędu. Potrzebuję pomocy odnośnie visuala, ponieważ błędnie wysyła mi następny wysłany znak. Tak jakby się zapętlał i same potem śmieci podczas wysyłki lecą. Zamiast pojedynczego znaku wysyła je podwójnie. Dlaczego?

Ok. Zamykam temat bo już sam rozwiązałem problem. Pozdro

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.