Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Sensorabfrage per RS232 Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Claus - 12.07.2008 11:19)
 Als Antwort auf Sensorabfrage per RS232 von Claus - 10.07.2008 9:50
Claus nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-M-Unit V1.2/2.0, Open-Mini, Open-Midi, C-Control 2
> Hallo zusammen,
>
> ich möchte einen Ultraschall-Entfernungssensor per Open-Midi abfragen. Die Entfernung soll zunächst auf einem LCD ausgegeben werden. Der Sensor liefert die Daten über eine Eindraht-RS232. Verbinde ich den Sensor direkt mit einen PC (unter Zuhilfenahme des bekannten RS232-Interfaces aus der OM-Dokumentation), so können in einem Terminalprogramm die gesendeten Daten korrekt dargestellt werden.
> Leider empfängt die OM jedoch überhaupt keine Signale - weder konventionell (GET bzw. INPUT) noch Puffer-gesteuert (Modul von Rene Stadler).
> Der Sensor liefert TTL-Kompatible Impulsfolgen. Übertragen werden reine ASCII-Codes. Vom Sensor übertragen wird immer folgende Zeichenfolge:
>
> LF CR ASC1 ASC2 ASC3 ASC4 ASC5 LF CR
>
> In meiner Verzweifelung habe ich den Sensorausgang nun direkt an Pin 13 der Midi gehängt (mit Pullup R10k). Die Midi steckt in einem Starter-Board von CCTools. Das Starter-Board ist via RS232 mit dem PC verbunden. Ein Terminalprogramm zeigt zyklisch die vom Sensor gemessene Entfernung an. Auf dem an die Midi angeschlossenen LCD werden jedoch keine Daten angezeigt.
>
> Software:
>
>
> .....
>
> gosub PCFLCD_init
> PCFLCD_SetLight false 'Beleuchtung ausschalten
>
> sys SERSTART ' Start Hintergrundprogramm
>
> PCFLCD_CMD Line3
>
> #loop
>    if tempsec <> second then      ' Zeigt die Sekunden auf dem LCD
>       tempsec = second            ' ... damit man sieht, dass über-
>       PCFLCD_CMD Line1            ' haupt was passiert
>       PCFLCD_Zahl2 tempsec
>       PCFLCD_CMD Line3
>    end if
>
>   while bufferlen>0
>     sys SERGET ' Byte aus Puffer nach a
>
>     PCFLCD_CMD Line3
>     PCFLCD_Put a
>
>     print a;
>   wend
>
> goto loop
> end
>
> .....
>
>
> Der Rest ist der bekannte Standard. Für Eure Hilfe recht herzlichen Dank im Voraus.
>
> MFG


Hallo zusammen,

besten Dank für die Hilfe.
Nach einigen Versuchen habe ich den Fehler selbst gefunden. Der Sensor benötigt zur Verarbeitung der empfangenen Zeichen nach jedem Zeichen eine kleine Pause. Nachdem ich die Steuercodes nun folgendermaßen sende funktioniert's.

Put Zeichen1
Pause 2                    ' 40 ms warten auf der OM
Put Zeichen2
Pause 2                    ' 40 ms warten auf der OM
Put Zeichen3
Pause 2                    ' 40 ms warten auf der OM
Put Zeichen4
Pause 2                    ' 40 ms warten auf der OM
Put Zeichen5

Get Zeichen1
.....

Ich habe den Hersteller bereits gebeten, dies in die Doku aufzunehmen.

Übrigens: es ist bei zwei Eindraht-RS232-Interfaces nicht notwendig, irgend eine Logik dazwischenzuschalten. Der Sensorausgang kann direkt mit dem Port[1] der OM verbunden werden. Selbst ein 10k-Pullup ist nicht zwingend notwendig.

Gruß,
Claus

 Antwort schreiben

Bisherige Antworten: