Reichen die Antworten im Microcoller-Forum nicht schon aus?
Peter
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
_________________________________________________
[-X Quis custodiet ipsos custodes
Ground-Effect-Stability-Robot www.peter-holzknecht.de
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) oder, was viel eleganter ist,Code:SerPort.BytesToRead(), den Serport mitCode:SerPort.ReceivedBytesThreshold = wievieleZeichenwillstduinitialisieren und eine Funktion erstellen:Code:Private WithEvents SerPort As System.IO.Ports.SerialPort = New System.IO.Ports.SerialPortDamit wird der Sub aufgerufen wenn x Bytes angekommen sind.Code:Private Sub Serial_BytesReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerPort.DataReceived End Sub
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
BascomCode: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
Habe jetzt mal noch eine LED mit eingebaut um zu sehen ob der Eingangsbefehl auch ankommt.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
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
Aber der ASCII für 1 ist doch 0x31 oder ?Code:Case 49 'Das ist der ASCII Code für Taste "1"
du musst in VB aber auch den ASCII Code für "1" senden
BaseStream.WriteByte verlangt als Argument ein Byte...
also
mfgCode:Private Sub cmdEingabe1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe1.Click SerialPort1.BaseStream.WriteByte(49) End Sub
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 ?
Lesezeichen