Laden...

Hex-Befehle über die serielle Schnittstelle senden

Erstellt von Rafael vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.837 Views
R
Rafael Themenstarter:in
13 Beiträge seit 2009
vor 13 Jahren
Hex-Befehle über die serielle Schnittstelle senden

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.

U
1.688 Beiträge seit 2007
vor 13 Jahren

Ja wie schon gesagt, soll. Macht es aber nicht.

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.

185 Beiträge seit 2005
vor 13 Jahren

Ich vermute mal, dass du

  • die Handshakeleitungen setzten must
    und/oder
  • ein Endezeichen senden must

Etwas mehr Infos wären aber schon hilfreich.

R
Rafael Themenstarter:in
13 Beiträge seit 2009
vor 13 Jahren

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.

185 Beiträge seit 2005
vor 13 Jahren

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.

U
1.688 Beiträge seit 2007
vor 13 Jahren

19200 Baud

Wieso hat der Quellcode oben 9600?

Warum beachtest Du nicht die anderen Postings?