ASCII Code via USB senden? letztlich RS232
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 109 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.
-
-
Snaptu schrieb:
meistens
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
wie gesagt es funktioniert nicht also habe ich einfach mal getestet ist das ein verbrechen ;)?
Ach was mir gerade auffällt:
Laut der Beschreibung soll ja der Befehl als ASCII übertragen werden. Wird mit diesem Programm nicht ein String übertragen? Oder wird das dadurch dass es über RS232 übertragen werden soll automatisch zu ascii?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Loois95“ ()
-
Loois95 schrieb:
verbrechen
Überleg Dir, in welcher Zeile er hängengeblieben ist und welche Zeilen (noch) nicht abgearbeitet wurden.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
ok offentsichtlich verstehe ich da etwas falsch aber dachte dass wenn es unter Form1_Load steht wird das ausgeführt sobald die Form geladen/gestartet wird also in dem fall dieses Programm und eben deswegen dachte ich dass dann dieses cr gesendet wird sobald das programm gestartet wird was ja nicht gewollt ist.
und kann es an der ascii sache liegen? ( siehe letzten post) -
ASCII beschreibt eine Charmap mit 128 chars (Zeichentabelle). Alternativen wären UTF8, UTf16, Unicode etc. Alle werden sie mit nem String erstellt, nur halt das Encoding (siehe Post #42) muss ggf geändert werden.»There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
-
Loois95 schrieb:
gesendet wirdFalls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Zunächst mal bewundere ich eure besonders deine Rod Geduld und was das Code erklären angeht: Das ist das Problem ich verstehe das nicht ganz das ist ja auch das Problem
Nun gut ich werde mich dennoch daran versuchen deinen Code zu erklären, bitte entschuldige fehlende Fachbegriffe wie gesagt ich bin Programmierneuling!
Quellcode
- Public Class Form1 'Hier wird die klasse erstellt/deklariert?
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'hier dachte ich dass definiert wird was duchgeführt wird sobald Form1 geladen wird/angezeigt wird bis zu "End Sub"
- SerialPort1.PortName = "COM1" ' es wird definiert welche RS232 / COM Schnitstelle angesprochen wird und es werden in den folgenden zwei Zeilen weitere Einstellungen für die COM getroffen (abhänig von meinem Gerät)
- SerialPort1.BaudRate = 9600 ' der eingestellte Wert
- SerialPort1.Parity = IO.Ports.Parity.None
- SerialPort1.NewLine = vbCr 'hier sendest du das CR was ich nicht verstehe waum das hier ist ausgehend von meiner vermutung was in Sub Form1_Load passiert
- SerialPort1.Open() 'hier wird die com aktiv geschaltet das verstehe ich so das der schnitstelle "gesagt" wird ab jetzt kommen befehle
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'hier wird geschrieben was passieren soll sobald man den button drückt
- Me.SerialPort1.WriteLine("RUN") ' der Befehl der via com gesendet werden soll wird gesendet
- End Sub
- Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 'hier wird beschreiben was gemacht werden soll sobald die rs232 etwas zurücksendet
- Me.Invoke(Sub() Me.RichTextBox1.AppendText(Me.SerialPort1.ReadExisting & Environment.NewLine)) ' das von der rs232 gesendete soll in die richbox
- End Sub
- End Class
Das sind meine Vermutungen
ich versuche gerade nebenbei auch mal etwas C# und finde das übersichtlicher Ist das damit auch möglich ? ich glaube bei C# kann ich besser folgen erinnert mich an java aus der schule früher -
Loois95 schrieb:
'hier sendest du das CRLoois95 schrieb:
ab jetzt kommen befehle
Ich sage dem Port, dass das Zeilenende-Zeichen ein CR ist, das ist beiWriteLine()
undReadLine()
aktiv.
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Erstens: Nutze bitte nicht den 2. BBCode für das Formattieren deines Codes, sondern den Vorletzten (VB.NET).
Zweitens: Soweit garnicht schlecht, nur das in Zeile 1 weder noch ist, er wird nur gesagt, alles zwischen hier und "end Class" gehört in diese Klasse (Definition eines Scopes). und in Zeile 6 wird kein "CR" gesendet, sondern es wird festgelegt, dass das Trennzeichen ein "CR" ist. immer wenn du nun WriteLine aufrufst wird dass von dir zuvor festgelegte Trennzeichen mitgesandt.»There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais -
ah ok vielen Dank dann habe ich das jetzt auch verstanden. Dann verstehe ich allerdings um so weniger warum das ganze nicht funktioniert:(
Gibt es evtl ein Tool das die an den Com ports gesendeten befehle mitschreibt? So könnte man überpüfen ob das programm die befehle richtig sendet und somit feststellen ob es evtl am gerät liegt?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Loois95“ ()
-
Loois95 schrieb:
cr hintergeschickt
Loois95 schrieb:
ToolWriteLine()
eine Log-Ausgabe ptogrammieren.
Kann es sein, dass Deine Initialisierung nicht durchkommt?Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Meintest du das so:
Wenn ich das so mache gibt er Gesendet in die RichBox aber so überprüfe ich dann doch nicht ob er sendet verstehe daher nicht genau was du damit meinst, sry
RodFromGermany schrieb:
Kann es sein, dass Deine Initialisierung nicht durchkommt?
Wir prüfe ich das?
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Woran merkst Du, dass das Programm nicht läuft?
Daran dass an meine Gerät der Befehl nicht ausgeführt wird.
Habe dasRichTextBox1.AppendText("RUN" & " gesendet" & Environment.NewLine)
Und noch eine Frage ich wollte jetzt noch prüfen ob die RS232 wirklich geöffnet ist habe das deshalbso modifiziert! Macht das sinn ? Denn es wird mir weder Offen noch Geschlossen ausgegben
VB.NET-Quellcode
-
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
- SerialPort1.PortName = "COM1" ' da, wo der Stecker drin steckt
- SerialPort1.BaudRate = 9600 ' der eingestellte Wert
- SerialPort1.Parity = IO.Ports.Parity.None
- SerialPort1.NewLine = vbCr
- SerialPort1.Open()
- If SerialPort1.IsOpen() = True Then
- RichTextBox1.Text() = "Offen"
- ElseIf SerialPort1.IsOpen() = False Then
- RichTextBox1.Text() = "Geschlossen"
- End If
- End Sub
-
Teste erstmal mit einem Terminalprogramm, ob deine Verbindung überhaupt funktioniert.
Z. B. mit B. Kainkas Terminal exe
elektronik-labor.de/RS232/2010Terminal.html -
Loois95 schrieb:
weder Offen noch Geschlossen ausgegben
Loois95 schrieb:
unbehandelte ausnahme: zugriff auf com1 verweigertFalls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
unbehandelte ausnahme: zugriff auf com1 verweigert
Das habe ich gerade zufällig aufgeklärt Es lief im Hintergrund eine Software für eine Maschiene die via COM gesteuert wird und die hat wohl com1 gesperrt weil sie diese nutzte also denke zumindest tritt dieser fehler wieder auf sobald die software läuft -
Loois95 schrieb:
sobald die software läuftFalls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
-
Ähnliche Themen