Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Hex-Befehle über die serielle Schnittstelle senden
Rafael
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Essen

Themenstarter:

Hex-Befehle über die serielle Schnittstelle senden

beantworten | zitieren | melden

Hallo zusammen,

ich hab ein kleines Problem. Ich versuche nun seit 3 Tagen Hex-Befehle über die serielle Schnittstelle an ein Gerät zu senden. In dem Gerät ist ein MC eingebaut, der verschieden Funktionen zur Verfügung stellt. Diese sind mir mit Kommandoname und Hexwert bekannt. Je nach Kommando solle unterschiedlich viele Bytes an das Gerät gesendet werden. Das Gerät soll die empfangen Bytes umsetzten z.B. Port A Data-Register schreiben. Ja wie schon gesagt, soll. Macht es aber nicht. Ich habe eine einfache Konsolen Anwendung erstellt:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;

namespace RS232
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] input = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,0x08 };

            SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8,         StopBits.One);
            port.Open();
            port.Write(input, 0, 7);
            port.Close();

        }
    }
} 

Hab es auch schon auf eine ähnliche Weisen mit dem Datentyp char probiert. Ohne erfolg. Die Serielle Schnittstellen habe ich mit einem Loop-Stecker getestet. Das funktioniert. Danke.
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Zitat von Rafael
Ja wie schon gesagt, soll. Macht es aber nicht.
Zitat von Rafael
Hab es auch schon auf eine ähnliche Weisen mit dem Datentyp char probiert. Ohne erfolg. Die Serielle Schnittstellen habe ich mit einem Loop-Stecker getestet. Das funktioniert.

Inwiefern "funktioniert" das? Und wie lautet Deine Frage? Bitte beachte dazu [Hinweis] Wie poste ich richtig? Punkt 5

Überprüfe Senden und Empfangen mit dem "Hyperterminal" von Windows.

Und stell erst mal sicher, dass der Mikrocontroller die Daten empfangen hat und etwas sendet. Dann ist allerdings das Forum falsch. Und auch sonst würden Informationen fehlen.
private Nachricht | Beiträge des Benutzers
MartinH
myCSharp.de - Member

Avatar #avatar-1761.gif


Dabei seit:
Beiträge: 183
Herkunft: Asperg

beantworten | zitieren | melden

Ich vermute mal, dass du
- die Handshakeleitungen setzten must
und/oder
- ein Endezeichen senden must

Etwas mehr Infos wären aber schon hilfreich.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MartinH am .
private Nachricht | Beiträge des Benutzers
Rafael
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Essen

Themenstarter:

beantworten | zitieren | melden

Erstmal danke für eure Antworten. Von einem handshake steht in der Initialisierung der seriellen Schnittstelle nichts. Die soll folgender maßen initialisiert werden: 19200 Baud, keine Parität, 8 datenbits, 1 stopbit. Folgendes soll in hex gesendet werden: 02,0c,65,08,7a,07,00,00,00,00,00,08,CS. Die Checksumme setzt sich aus der Addition aller werte ab Byte 2 zusammen. Nach Empfang eines plausiblen Befehls (Checksumme ok) antwortet die Box vor der Ausführung mit einem Acknowledge 0x06. Wenn es den funktioniert. Bei geht nur die Konsole auf und das war's. Hat einer eine Hilfestellung. Danke.
private Nachricht | Beiträge des Benutzers
MartinH
myCSharp.de - Member

Avatar #avatar-1761.gif


Dabei seit:
Beiträge: 183
Herkunft: Asperg

beantworten | zitieren | melden

Hast du wie von ujr geschrieben Hyperterminal verwendet?

Wie sieht die serielle Verbindung aus, welche Leitungen werden benötigt?
nur RX,TX,GND oder mehr?

Eventuell sendest du die Daten zu schnell an das Gerät, versuche mal die Bytes einzeln mit kurzen pausen zu senden.
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Zitat von Rafael
19200 Baud

Wieso hat der Quellcode oben 9600?

Warum beachtest Du nicht die anderen Postings?
private Nachricht | Beiträge des Benutzers