www.mikrocontroller.net

Forum: PC-Programmierung vb 2008 serialport


Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,ich sitze hier schon seit Tagen über einem problem.
Ich habe den serialport geöffnet und kann daten senden und empfangen.
Beim empfangen habe ich nur ein problem.Ich hole mir die empfangenen 
Daten auf Buttonklick mit Serialport1.readchar() ab und gebe sie in 
einer textbox aus (empfangen werden nur Zahlen bis 32).Dies klappt 
auch.Ändert sich nun die empfangene Zahl,wird sie nicht angezeigt.
Nur wenn ich den port schliesse und wieder öffne wird sie korrekt 
angezeigt.
Ich hoffe man kann verstehen wie ich das meine.
Wäre super wenn mir jemand helfen könnte.

gruss
Andy

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
damit wir nicht alle Raten müssen, könntest du ja mal etwas quelltext 
mitschicken.

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ok bei Buttonklick wird ausgeführt:
Dim waskommt = SerialPort1.ReadChar()
TextBox1.Text = waskommt

Wie gesagt,das klappt nur einmal.

gruss

Andy

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit wird doch aber CHAR gelesen, wie meinst du das das Zahlen bis 32 
gehen?
Sollte man "waskommt"  nicht noch ein Datentype geben?

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,klar wird char gelesen.Ist auch richtig so.Ich sende zum beispiel 
12.Er liest es auch und zeigt es einwandfrei an.Dann sende ich z.b 8.Es 
passiert nicht mehr.Schliesse ich den port aber und öffne in wieder 
zeigt er mir die 8 einwandfrei an.

gruss

Andy

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,hab mich vielleicht falsch ausgedrückt,ich sende nur Zahlen bis 
32.

gruss

Andy

Autor: Sentinel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"waskommt" muss ja einen Wert bekommen. "Passiert nichts weiter" stimmt 
so nicht. Starte doch mal den Debugger und schau Dir an, was "waskommt" 
zugewiesen wird. Und benenne die Variable um, das ist ja nicht 
auszuhalten :-)

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das noch etwas passiert ist klar.Seltsam ist nur,das wenn ich den port 
schliesse und wieder öffne,mir die neue gesendete Zahl angezeigt wird.
Zur erklärung,es wird ständig der zustand von 4 Digitaleingängen 
gesendet.
Ich dachte schonmal dran,das wenn zb.der 1 eingang gesetzt ist,der 
buffer des ports mit 1 vollgeschrieben wird.Ich hole aber nur ein char 
raus.
Wenn nun sich der Zustand der eingänge ändert,wird z.b. der wert 2 
dauernd gesendet.Überschreibt er nun die einsen im buffer.Oder muss ich 
den buffer erst einmal leeren und dann mein char auslesen?

gruss
andy

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, natürlich wird der Buffer vollgeschrieben.
wenn du ständig eine 1 schickst und über deinen Buttonklick immer nur 
einen char holst, dann kannst du lange klicken.

Besser wäre, du liest ständig vom Port, oder gehst auf das Datareceive 
event, oder dein Sender schickt dir nur seinen Status der Ausgänge, wenn 
er z.B. ein "X" empfängt.

da kannst du vom PC mit writechar ein X wegschicken und dann hast du mit 
Readchar() immer den aktuellen status.

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,das ist doch mal eine auskunft.
Gibt es nicht eine möglichkeit,den Buffer zu leeren?Ich hab schon 
einiges versucht,z.b.Discardinbuffer() klappt aber nicht.
Dann habe ich die grösse des Readinbuffer mal auf 10 bytes gestellt.
Abgefragt,neuen zustand gesendet.Nach meiner überlegung kann doch jetzt 
nur 10 mal der alte zustand im buffer sein.Ich kann aber mit hilfe einer 
schleife den port 100 mal abfragen,er zeigt mir den alten zustand an.
Hab ich da irgendwo einen denkfehler?
Wenn ich den port schliesse und wieder öffne klappt es ja,ich denke weil 
der buffer neu eingerichtet wird,oder ist das falsch?.

gruss

Andy

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit welcher Frequenz werden die Zahlen gesendet, d.h. in welchem 
zeitlichen Abstand?
Kannst Du diese Frequenz reduzieren, auf z.B. ein Mal pro 2 Sekunden?
Dann kannst Du mit klicken mithalten und schauen, ob jetzt die richtige 
Zahl angezeigt wird.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.