Skocz do zawartości
Zaloguj się, aby obserwować  
sparow

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

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;)

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
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!

Gość
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.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...