Beamer-Steuerung über RS232

Im Unterforum Projekte im Selbstbau - Beschreibung: Selbstbau von Elektronik und Elektro

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 24 11 2024  06:59:39      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Projekte im Selbstbau        Projekte im Selbstbau : Selbstbau von Elektronik und Elektro

Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )      


Autor
Beamer-Steuerung über RS232
Suche nach: beamer (717) steuerung (7952)

    







BID = 518135

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika
 

  


Ja, dann such mal nach RC5-Code und AVR.

Wenn deine FB keinen RC5 ausspruckt, dann viel Spaß beim selbstentwickeln der Empfängerroutine. Wobei ich das für ein paar andere FBs schon gemacht habe - lohnt nicht wirklich, wenn man nen Standard nutzen kann, sollte man das machen..

_________________

BID = 519184

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

 

  

SO, nächstes Problem.
Das mit RC5 hab ich mal hinten angestellt.

Ich hab noch einen weiteren Beamer (Hitachi), der wiederum mit ganz anderen Zeichen angesteuert werden will.
Und zwar mit 7-Byte-Zeichenfolgen, die ich in HEX-Schreibweise vorliegen habe. Nun ist es so, dass da auch Hex-Werte wie 00 oder 03 vorkommen.


Nun meine Frage:

Wie kann ich solche Zeichen über RS232 ausgeben? (in Bascom-AVR)
also: Wie kann ich solche Hex-Werte angeben (mit der Print-Routine möglich? Zur Not auch über eine Variable)

Alles in Bascom-AVR...

Ciao,

Wolfgang

BID = 519192

LeoLöwe reloaded

Schreibmaschine



Beiträge: 1407
Wohnort: Meine
Zur Homepage von LeoLöwe reloaded ICQ Status  

Hilft dir evtl. dieses Tool weiter?

http://www.parkenet.com/apl/HexDecConverter.html

_________________
We now return you to your regularly scheduled nonsense.

BID = 519198

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

So, irgendwie ist das komisch:

ich probier irgendwas, kriegs nicht raus, poste es und kriegs dann raus...

Vielleicht weil ichs gepostet hab?
Egal.

Jedenfalls, das Ausgeben hab ich schon geschafft.
Jetzt muss ich nur noch empfangen und auswerten.
Der Beamer gibt eine 3-Byte-Folge zurück, bei der sich nur das mittlere Byte ändert.
Je nach Wert dieses Bytes muss ich jetzt LEDs schalten.
Jetzt weiß ich beim abfragen wieder nicht, wie ich eine Variable (Typ String?) unter Angabe der Hexwerte abfrage...

Ciao,

Wolfgang

BID = 519200

Racingsascha

Schreibmaschine



Beiträge: 2247
Wohnort: Gundelsheim
ICQ Status  

Die Hex-Dec-Wandlung kann auch der Windows-Taschenrechner in der wissenschaftlichen Einstellung.


Zitat :
Jetzt weiß ich beim abfragen wieder nicht, wie ich eine Variable (Typ String?) unter Angabe der Hexwerte abfrage...

Was gibt denn die Empfangsfunktion als Datentyp raus? Sollte eigentlich in der "Anleitung" der Funktion drinstehen (wenn es denn eine gibt...).

_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.

BID = 519204

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

Wie gesagt, eine 3-byte-Folge.
Diese kann die drei verschiedenen Werte 1D 00 00 bis 1D 01 00 annehmen.

Ciao,

Wolfgang

BID = 519209

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Also, "Hex"-Werte sind genauso Zahlen wie ASCII-Kodes, Dezimalzahlen oder Oktalzahlen. Eben nur mit einer anderen Schreibweise und Basis.
Daher ist es doch logisch, dass

&H80 das gleiche ist wie 128 (positive Ganzzahl).

In Basic schreibt man "Hexwerte", genauer Zahlen zur Basis 16 mit dem Präfix "&H".

Zur anderen Frage:

Zitat :
die drei verschiedenen Werte 1D 00 00 bis 1D 01 00

Wieso drei? Ich denke, nur das mittlere, also erste Byte ändert sich. Wenn dem so ist, dann testest du die Bytes links und rechts davon auf &H1D und &H00. Wenn das zutrifft, kannst du das Byte in der Mitte auswerten. In C ist das einfach, in Basic muss man, soweit meine Kenntnisse stimmen, den Klimmzug über "mid" machen:

if mid(eingabestring, 1, 1) = "\x1D" And mid(eingabestring, 3, 1) = "\x00" then
if mid(eingabestring, 2, 1) = "\x00" then led_aus
elseif mid(eingabestring, 2, 1) = "\x01" then led_an
else
fehler
end if

Irgendwie so wird das aussehen. Dass das das reinste Gekrüppel ist, sieht jeder Programmierer...
Achso, keine Ahnung ob Bascom Escapesequenzen wie oben gezeigt erlaubt, aber sonst müsste man ja nocht das Byte in eine Zahl umrechnen lassen, ums mit einer vergleichen zu können. Warum ist Basic so unlogisch. Ein String besteht nur aus Zahlen, wann lernen die das mal...

In C sieht sowas sogar fast süß aus...:

if(strEingabe[0]==0x1d && strEingabe[2]==0)
(strEingabe[1]==0x01) ? LED_AN : LED_AUS;




_________________

BID = 519394

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

So, erstmal ein dickes THX @ DonComi...

Ich poste mal meinen Code und hätte gerne Rückmeldung, ob es von vorneherein zum scheitern verurteilt ist...
HAb den Beamer leider erst nächste Woche zum ausprobieren verfügbar...



Code :


Dim B As Integer , M As Long , L As Byte , W As Long , N As Long , O As Long , P As String * 7 , Q As String * 3 , R As String * 1

Sub Status3
Print Chr(&Hbeef03060019d3020000600000) 'Status beim Beamer anfragen
Input , Q
'Q = "{029}{001}{000}"
R = Mid(q , 2 , 1)
If Mid(q , 1 , 1) = "{029}" And Mid(q , 3 , 1) = "{000}" Then
If Mid(q , 2 , 1) = "{000}" Then Portc.4 = 0
If Mid(q , 2 , 1) = "{000}" Then Portc.5 = 1
If Mid(q , 2 , 1) = "{001}" Then Portc.4 = 1
If Mid(q , 2 , 1) = "{001}" Then Portc.5 = 0
If Mid(q , 2 , 1) = "{002}" Then Portc.4 = 1
If Mid(q , 2 , 1) = "{002}" Then Portc.5 = 1
Else
Portc.5 = 0; Portc.4 = 0
End If

O = 0
End Sub



So, jetzt gibt er mir den Anfrage-String schon mal gar nicht aus. Wenn ich jedes Byte als eigenen CHR(...) schreibe, geht es...? Sind es zu viele Bytes?
R hab ich versuchsweise definiert, um in den ganzen If-Abfragen nicht immer mit MID arbeiten zu müssen...

MfG,

Wolfgang

BID = 519397

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Moin


Zitat :
Print Chr(&Hbeef03060019d3020000600000) 'Status beim Beamer anfragen

Holla. Das geht natürlich nicht.
Chr will ein Byte haben, in ein Byte passen aber nur &H00 - &HFF, also 8 Bits.
Du versuchst dem hier ne riesen Zahl zu übergeben.

Du kannst einen String machen, der 7 Bytes lang ist, wie bereits geschehen, und dort die einzelnen Bytes platzieren mit

String = "{&Hbe}{&Hef}..."
Print String

Ob man Hexadezimale Zahlen in dieser {} Schreibweise nutzen darf, wie ich oben, weiß ich nicht. Ich mag die Sprache nicht.
Sonst musst du halt alle Zahlen nach dezimaldarstellung umrechnen.


Zitat :

If Mid(q , 2 , 1) = "{000}" Then Portc.4 = 0

If Mid(q , 2 , 1) = "{000}" Then Portc.5 = 1


Wenn du vorher R den Wert mid(blabla) zuordnest, warum machst vergleichst du nicht einfach R mit den Konstanten?
Außerdem musst du nicht für jede Operation das Byte erneut abfragen, du kannst auch

if R="{000}" then
bla
bla
end if

schreiben.

Kost weniger Rechnzeit, Speicherplatz und Nerven.


---
Was mich bei dieser Sprache so nervt, ist, dass man solche Klimmzüge wie Chr() und Asc() und mid() braucht.

_________________

BID = 519405

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

Wie gesagt, was der Beamer genau ausgiebt, kann ich nicht sagen. Ich weiß nur, dass es 3 Bytes sind mit den Werten 1DH, 00H, 00H; wobei das mittlere Byte zwischen 00H und 02H variieren kann.

Ich habs mal umgeschrieben...



Code :


Dim B As Integer , M As Long , L As Byte , W As Long , N As Long , O As Long , P As String * 7 , Q As String * 3 , Q1 As String * 3 , Q2 As String * 3 , Q0 As String * 3 , S As String * 13

Q0 = "{029}{000}{000}"
Q1 = "{029}{001}{000}"
Q2 = "{029}{002}{000}"

Sub Status3
S = "{190}{239}{003}{006}{000}{013}{211}{002}{000}{000}{096}{000}{000}"
Print S
Input , Q
If Left(q , 3) = Q0 Then
Portc.4 = 0
Portc.5 = 1
Elseif Left(q , 3) = Q1 Then
Portc.4 = 1
Portc.5 = 0
Elseif Left(q , 3) = Q2 Then
Portc.4 = 1
Portc.5 = 1
Else
Portc.5 = 0
Portc.4 = 0
End If
O = 0
End Sub


So, ich hoffe meine ersten Lernschritte nerven euch nicht schon...

MfG,
Wolfgang

BID = 519410

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Jetzt vergleichst du doch Redundanzen!

Also, du willst doch folgendes, abgesehen vom Ausgeben irgendeiner Zeichenfolge zum Beamer jetzt mal im Pseudokode:

variable a, 3 Byte lang

eingabe <- a

wenn zeichen1 von a = 1d und zeichen3 von a = 0
dann

    teste zeichen2 = 0
    dann
    led aus
    sonst, wenn zeichen2 = 1
    dann
    led an
    sonst, wenn zeichen2 = 2
    led an
    ansonsten
    ungültig

ende wenn

Übersetzt man diesen Pseudokode nach Basic würde es etwa so aussehen:

Dim Status as Byte
Dim Bytes as String *3

'jetzt irgendwie drei Zeichen nach String bekommen, k.A. wie input genau funktioniert...

'Abfragen:

if mid(bytes, 1, 1) = "{&H1D}" And mid(bytes, 3, 1) = "{&H00}" then
Status = Asc(mid(bytes, 2, 1))
Select Case Status
case 0:
'led aus
case 1:
'led an
case 2:
'was anderes'
case else
'ungültiger Befehl
End select
end if


So könnte das aussehen. Ist natürlich schwer, wenn man grade begonnen hat. Und was micht maßgeblich an dieser Sprache ärgert habe ich ja bereits verdeutlich. Sie ist stellenweise einfach dermaßen unlogisch und umständlich

_________________


[ Diese Nachricht wurde geändert von: DonComi am  1 Mai 2008 21:53 ]

BID = 521013

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

So, Hallo mal wieder.
Hänge jetzt noch bei einem anderen Problem, das momentan dringlicher ist. Ich möchte mit diesem Programm nämlich drei verschiedene Geräte steuern können.
Eines davon ist fertig implementiert, bei dem zweiten fehlt mir nur noch die (in den letzten Beiträgen durchgekaute) Statusabfrage, die ich leider immer noch nicht testen konnte.
Das dritte ist ein DVD-Player.
An diesen möchte ich Play, Pause und Skip senden können. Das klappt bereits.
Nun mein Problem: Auch von diesem möchte ich den Status (Play, Pause, Stop bzw. keine Kommunikation mit dem Gerät) angezeigt bekommen über zwei Leds.
Ich wollte es eigentlich wie bei den Beamern auch probieren, dass ich alle 1-2 Sekunden eine Statusabfrage mache.
Jetzt habe ich das Problem, dass der DVD-Player ständig irgendwelche Messages verschickt (End of Track usw...), wodurch ich irgendwie immer falsche Rückmeldungen auf die Statusabfrage bekomme (noch irgendwelche Bytes im Buffer...)
Ich habe es schon über Clear SerialIn versucht, aber irgendwie hat auch das (bisher) nicht funktioniert.

Nun war meine Überlegung, Die Meldungen des Players auszuwerten, und daraus den Status auf die Leds zu übertragen.
Jetzt ist die Frage, ob ich dann im Interrupt-Betrieb arbeiten muss, oder im Buffered-Modus oder oder...
Hier bin ich (wieder mal) mit meinem Latein am Ende, und würde mich sehr über Tips freuen.
Ich werde selber auch weiter probieren, und Lösungen bzw. Ideen posten...

MfG,
Wolfgang

P.S.:
Der komplette Code kommt im nächsten Post, hab ich grad noch nicht zur Hand...

BID = 521235

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

So, im Anhang mein kompletter Code.
Ich freue mich über Verbesserungen, da dies wie gesagt mein erstes Programm ist...

Ciao,

P.S: Außerdem findet ihr im Anhang das Protokoll des DVD-Players...

WOlfgang


[ Diese Nachricht wurde ge&auml;ndert von: gang-himself am 12 Mai 2008 21:34 ]


PDF anzeigen



[ Diese Nachricht wurde geändert von: gang-himself am 12 Mai 2008 21:36 ]

BID = 521341

KaiserV

Gerade angekommen


Beiträge: 1
Wohnort: Pforzheim

Hi Wolfgang,

ich finde dein Projekt echt interessant und will auch versuchen so etwas nachzubauen, obwohl es schon reichen würde wenn ich meinen Beamer damit steuern kann, da es dann eh fest verbaut wird.

Naja da ich noch ein absoluter Anfänger bin (gut ein bisschen programmieren kann ich ^^) wollte ich mich nochmal vergewissern ob du das alles mit dem MyAVR Board (Conrad Nummer 190831 - 62) realisiert hast, bevor ich noch was falsches bestelle.
Was bräcuhte ich noch um loszulegen? Warscheinlich ein 0 Modem Kabel und einen 230V Wandler bzw. wie schließe ich da den Strom an?

Falls du oder auch jemand anders noch ein guten Tipp für einen Anfänger hat, freu mich über jede Hilfe.

Gruß

V. Kaiser

BID = 522222

gang-himself

Gelegenheitsposter



Beiträge: 50
Wohnort: Regensburg

Hi KaiserV,

ja, auf dem MyAVR-Board (die LPT, RS232-Variante) ist alles notwendige verbaut. Sogar viel zu viel...

Programmiert hab ich in BASCOM-AVR, weil das eine komplette Entwcklerumgebung ist, die in der Demo-Version Programme bis 2k schreiben kann, was dir in diesem Fall dicke reicht...

Auf dem Board sind Spannungswandler verbaut, die mit einem Input von 9V DC arbeiten. D.h. ein billiges 9V-Netzteil und fertig...

Und ob NullmodemKabel oder ModemKabel hängt von dem verwendeten Beamer ab... (Sanyo/Eiki verwenden Nullmodemkabel)

Ciao,
Wolfgang


Vorherige Seite       Nächste Seite
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 4 Beiträge verfasst
© x sparkkelsputz        Besucher : 182385993   Heute : 722    Gestern : 6874    Online : 819        24.11.2024    6:59
0 Besucher in den letzten 60 Sekunden         ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.103364944458