-
würde gern mal wissen wollen wo ich sowas wie eine Befehlsübersicht finde die sich auf ein bestimmtes Elemtent (Bspw. ein Button) bezieht.
Gibt es sowas überhaupt? Mit der Hilfe bin ich da noch nicht warmgeworden.
Bei einem Mikrocontroller ist das ja recht einfach, da schaue ich einfach in die Befehlsreferenz und kann mal mit leichten Programmen anfangen. Bei Visual Studio steh ich wie der Ochs vorm Berg.
-
Reichen die Antworten im Microcoller-Forum nicht schon aus?
Peter
-
Hör bloß auf , die Texten mich allo voll das ich das mit den Ports am mC falsch habe und schauen danach dann mal in das Datenblatt um festzustellen das ich es doch richtig gemacht habe :(
Das bringt einen nicht wirklich weiter.
-
hmmm sehe gerade du willst ja nur vom uC lesen ... da brauchst du ja interrupts im visual studio ... hab ich auch noch nciht gemacht ...
willst du jetzt ständig von uC schicken oder erst auf kommando oder wie?
-
Also sobald ich in VB einen Knopf betätige soll jeweils eine 1, 2, 3 oder ein r für reset gesandt werden.
Diese Zahl bzw das "r" für reset soll dann vom Controler ausgewertet werden und dem entsprechend soll er "Taste X wurde gedrückt!" zurück an den PC senden wo es dann in der Textbox ausgegeben wird.
-
dafür reichts µC-seitig mit Waitkey allemal.
in VB kannst du das zb. per Polling abfragen (ein Timer der alle Hausnummer mSec nachschaut, ob im Puffer Daten sind und diese ausliest
Code:
SerPort.BytesToRead()
) oder, was viel eleganter ist,
Code:
SerPort.ReceivedBytesThreshold = wievieleZeichenwillstdu
, den Serport mit
Code:
Private WithEvents SerPort As System.IO.Ports.SerialPort = New System.IO.Ports.SerialPort
initialisieren und eine Funktion erstellen:
Code:
Private Sub Serial_BytesReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerPort.DataReceived
End Sub
Damit wird der Sub aufgerufen wenn x Bytes angekommen sind.
Aufpassen musst du dann nur noch mit der Zuweisung auf die Textbox, das geht nicht so einfach. Mit einem Umweg über eine extra Variable gehts, also SerPort-Sub->Variable->Textbox.
Wo liegt dein Problem mit der Hilfe? Wenn du den Cursor auf die Instanz der gewünschten Klasse setzt und F1 drückst, werden schön alle Mitglieder, Methoden, Eigenschaften etc. der Klasse aufgelistet...
mfg
-
Hab jetzt mal bei der TextBox noch ne Variable zwischen gepackt.
Die .BytesToRead() verwende ich ja bereits in Verbindung mit einem TimerIntervall.
Hier noch mal der Aktuelle Code:
VB
Code:
Public Class Form1
Dim Text As String
Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Me.InitializeComponent()
SerialPort1.Open()
End Sub
Private Sub cmdEingabe1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe1.Click
SerialPort1.BaseStream.WriteByte(1)
End Sub
Private Sub cmdEingabe2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe2.Click
SerialPort1.BaseStream.WriteByte(2)
End Sub
Private Sub cmdEingabe3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe3.Click
SerialPort1.BaseStream.WriteByte(3)
End Sub
Private Sub cmdReset_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdReset.Click
SerialPort1.BaseStream.WriteByte("r")
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If SerialPort1.BytesToRead > 0 Then
Do
Text = SerialPort1.ReadByte
txtAnzeige.AppendText(Text)
txtAnzeige.ScrollToCaret()
If SerialPort1.BytesToRead = 0 Then
Exit Do
End If
Loop
End If
End Sub
End Class
Bascom
Code:
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus
$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44
$crystal = 16000000 'Quarzfrequenz
Config Pind.5 = Output
Led Alias Portd.5
Config Pine.5 = Input
Usb Alias Pine.5 'Ist 1 wenn USB angeschlossen
Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4 'USB Buchse
Dim A As Byte
Do
A = Waitkey()
Waitms 20
If A > 0 Then
Select Case A
Case 49 'Das ist der ASCII Code für Taste "1"
Led = 1
Waitms 200
Led = 0
Print #4 , "Taste 1 wurde gedrückt!"
Case 50 'Das ist der ASCII Code für Taste "2"
Led = 1
Waitms 200
Led = 0
Waitms 100
Led = 1
Waitms 200
Led = 0
Print #4 , "Taste 2 wurde gedrückt!"
Case 51 'Das ist der ASCII Code für Taste "3"
Print #4 , "Taste 3 wurde gedrückt!"
Case 114 'Das ist der ASCII Code für Taste "r"
Print #4 , "Reset..."
Goto 0
End Select
End If
Loop
End
Habe jetzt mal noch eine LED mit eingebaut um zu sehen ob der Eingangsbefehl auch ankommt.
Was ich nicht ganz bei dem Basecom verstehe , ich schreibe den Wert den ich von Waitkey() bekomme in A und springe dann je nach Wert in die entsprechenden Case. Nur steht im Testprogramm
Code:
Case 49 'Das ist der ASCII Code für Taste "1"
Aber der ASCII für 1 ist doch 0x31 oder ?
-
du musst in VB aber auch den ASCII Code für "1" senden ;)
BaseStream.WriteByte verlangt als Argument ein Byte...
also
Code:
Private Sub cmdEingabe1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe1.Click
SerialPort1.BaseStream.WriteByte(49)
End Sub
mfg
-
Ok ich hab einen kleinen Erfolg :)
Zumindest Daten empfangen läuft jetzt :)
-
Kann es sein das ich da noch einen Fehler in dem Controller Programm habe ?
Wie kann ich den mal Testen ob mein VB Programm die Daten über den COM sendet ?