Hallo Willa,
kannst du noch etwas genauer beschreiben wo der von dir genannte Code
eingefügt werden muss? ich interssiere mich auch brennend für solche Anleitungen.
PS: Danke für die Erstellung des WIKI!!!
Hi!
Das Tut im Wiki ist von mir. Um variablen in verschiedenen textboxes auszugeben musst du eine Art Marker verwenden. z.B. dein µC sendet:
A53
B129
C223
Die Buchstaben sagen um was für daten es sich grad handelt. z.B. A bedeutet dass es Temparaturdaten sind, B ist Motorstrom etc.
In deiner GUI liest du alle Daten per RS232 ein und guckst dann nach welche Daten es sind und teilst sie dann auf deine Textboxes auf.
So ungefähr sollte das gehen. Dieses Verfahren habe ich auch für meinen Tricopter verwendet, im Video siehst du wie die Software funktioniert:Code:readvar=SerialPort1.ReadLine ContainsA = readvar.Contains("A") 'checkt ob ein "A" im String ist -> also temperatur If ContainsA=true then 'wenn ein A drin ist Temperaturwert=readvar.TrimStart("A") 'dann das A abschneiden temperaturtextbox.text=temperaturwert 'Rest in die textbox schreiben end if
http://www.villalachouette.de/willia...copter/Tri.wmv
Viele Grüße, William
-> http://william.thielicke.org/
Hallo Willa,
kannst du noch etwas genauer beschreiben wo der von dir genannte Code
eingefügt werden muss? ich interssiere mich auch brennend für solche Anleitungen.
PS: Danke für die Erstellung des WIKI!!!
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Okay, ich kanns gerne nochmal genauer erklären:
Der Serialport wird in einem Timer abgerufen (Interval z.B. 15ms)
Ich glaube so sollte das klappen. Vorher müsst ihr natürlich die Variablen noch deklarieren und den Serialport öffnen (so wie im Wiki beschrieben).Code:Sub Timer1Tick(ByVal sender As Object, ByVal e As EventArgs) if serialport1.BytesToRead > 0 then Do readvar=SerialPort1.ReadLine ContainsA = readvar.Contains("A") ContainsB = readvar.Contains("B") ContainsC = readvar.Contains("C") if ContainsA = true then A_Daten=readvar.TrimStart("A") Textbox1.text=A_Daten end if if ContainsB = true then B_Daten=readvar.TrimStart("B") Textbox2.text=B_Daten end if if ContainsC = true then C_Daten=readvar.TrimStart("C") Textbox3.text=C_Daten end if If SerialPort1.BytesToRead = 0 Then Exit Do end if loop end if end sub
Viele Grüße, William
-> http://william.thielicke.org/
Da meine Kenntnisse in Sharp sehr begrenzt sind (alles was ich darüber weis
ist aus deinem WIKI) würdest du mir einen großen Gefallen damit erweisen
wenn du noch erklären könntest wo und wie man in Sharp Variablen deklariert. Ich kenne mich programmiertechnisch leider nur in Bascom aus.
Vielen Dank schon mal
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Hi, danke das du auf meine Mail reagiert hast
Das läuft jetzt so wie ich es in etwa haben wollte.
Im moment macht er mir noch ein merkwürdiges zeichen hinter der ausgabe,
son kästchen, weis da einer was?
Das geht ca. so wie in Bascom auch:
Dim ContainsA As Boolean
Dim readvar as string
Am besten direkt unter diese automatisch erzeugten Zeilen setzen:
public Sub New()
Me.InitializeComponent()
End Sub
Dann kann man auf die Variablen aus jeder Sub zugreifen.
Viele Grüße, William
-> http://william.thielicke.org/
@Christian:
Wie sieht denn dein Sendebefehl auf dem µC genau aus?
Viele Grüße, William
-> http://william.thielicke.org/
hier mal mein code im SharpDevelop
hier mein AVRCode:Public Partial Class MainForm Public Sub New() ' The Me.InitializeComponent call is required for Windows Forms designer support. Me.InitializeComponent() serialport1.open ' ' TODO : Add constructor code after InitializeComponents ' End Sub Sub Button1Click(sender As Object, e As EventArgs) serialport1.Write (1) End Sub Sub Button2Click(sender As Object, e As EventArgs) serialport1.Write (2) End Sub Sub Button3Click(sender As Object, e As EventArgs) serialport1.Write (3) End Sub Sub Button4Click(sender As Object, e As EventArgs) serialport1.Write ("r") End Sub Dim readvar As String Dim ContainsA As Boolean Dim ContainsB As Boolean Dim Temperaturwert As String Sub Timer1Tick(sender As Object, e As EventArgs) If serialport1.BytesToRead > 0 Then Do readvar=SerialPort1.ReadLine ContainsA = readvar.Contains("A") ContainsB = readvar.Contains("B")'checkt ob ein "A" im String ist -> also temperatur If ContainsA=true then 'wenn ein A drin ist Temperaturwert=readvar.TrimStart("A") 'dann das A abschneiden temperaturtextbox.text=temperaturwert 'Rest in die textbox schreiben End If If ContainsB=true then 'wenn ein A drin ist Temperaturwert=readvar.TrimStart("B") 'dann das A abschneiden temperaturtextbox2.text=temperaturwert 'Rest in die textbox schreiben end if If SerialPort1.BytesToRead = 0 Then Exit Do End If Loop End If End Sub Sub Label1Click(sender As Object, e As EventArgs) End Sub Sub Timer2Tick(sender As Object, e As EventArgs) End Sub End Class
Code:Dim A As Byte Do A = Inkey() If A > 0 Then Select Case A Case 49 'Das ist der ASCII Code für Taste "1" Sound Portd.7 , 400 , 450 Print "ATaste 1 wurde gedrückt" Case 50 'Das ist der ASCII Code für Taste "2" Sound Portd.7 , 400 , 550 Print "BTaste 2 wurde gedrückt" Case 51 'Das ist der ASCII Code für Taste "3" Sound Portd.7 , 400 , 650 Print "Taste 3 wurde gedrückt" Case 114 'Das ist der ASCII Code für Taste "r" Print "Reset..." Goto 0 End Select End If Loop
hmmm, ob mein Code bei strings wie "BTaste 2 wurde gedrückt" funktioniert weiss ich nicht....
Sende doch mal soetwas:
print "A" ; 123
print "B" ; 124
Viele Grüße, William
-> http://william.thielicke.org/
Ist immer noch das kästchen hinter
Lesezeichen