Forums Neueste Beiträge
 

Fernbedienung über SerialPort-Component

21/03/2008 - 13:26 von schulze.harald | Report spam
Guten Tag,

ich hab mal ne Frage zu der RS232-Schnittstelle. Ich soll über ein IR-
oder Funkempfànger 4 Fernbedienungen abfragen. Im Moment habe ich ein
IR-Empfànger-Modul angeschlossen und habe versucht, irgendein Signal
zu empfangen von meiner Fernbedienung. Dazu habe ich die SerialPort-
Component benutzt. Hier mal der Code:
private void button1_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
serialPort1.PortName = comboBox1.SelectedItem.ToString();
serialPort1.Open();
}

private void button2_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}

private void serialPort1_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
MessageBox.Show("DataReceived");
}

private void serialPort1_ErrorReceived(object sender,
SerialErrorReceivedEventArgs e)
{
MessageBox.Show("ErrorReceived");
}

Ich hatte über die gleiche serielle Schnittstelle mal das ganze mit
winlirc probiert und damit hat der Empfang geklappt. Ich muss jedoch
das ganze in meiner eigenen Anwendung integrieren, daher nutzt mir
winlirc nichts.

Kann mir hier weitergeholfen werden, wie ich vorgehen muss bzw. wie
ich mein Problem in C# unter VS2005 lösen kann? Oder geht sowas
garnicht unter .NET?

Schönen Feiertag noch

Harald Schulze
 

Lesen sie die antworten

#1 Alain Boss
25/03/2008 - 14:09 | Warnen spam
Hallo Harald,

Was erwartest du von deinem IR-Empfànger? Dass er dir wunderbare
Datenpakte liefert und du als ASCII etwas wie "Command: Play" erhàlst?

Nun, tatsàchlich ist es so, dass dein Empfànger zwar die serielle
Schnittstelle nutzt, darüber aber mit grosser Wahrscheinlichkeit keine
Datenpakte im eigentlichen Sinne schickt, die du einfach mal so
empfangen kannst, sondern lediglich die Datenleitungen dazu verwendet
einzelne Signale zu schicken.

Du musst also genau wissen, welche Leitungen für welches Signal
verwendet werden und was du damit anzufangen hast. Ich vermute mal, dass
ein Pin der Schnittstelle dazu verwendet wird, den Empfànger
einzuschalten, ein weiterer um einzelne Bits zu schicken und ein anderer
um Bits zu empfàngen.

Das ganze ist also weitaus komplexer als bloss die serielle
Schnittstelle mit der Defaultbaudrate zu öffen und zu hoffen, dass etwas
sinnvolles im Speicher landet.

Ich vermute allerdings, dass du mit C# und der SerialPort Klasse nicht
nahe genug an die Hardware rankommst um die einzelnen Signale zu dekodieren.

Am Besten machst du folgendes:
- Schau in den Code von winlirc und schau mal was die da im Treiber
alles machen
- Such dir eine Beschreibung der seriellen Schnittstelle (Hardware!)
- Schau mal mit dem KO auf den Leitungen was da so alles abgeht
- Klàr mal ab, ob du die winlirc library verwenden darfst, ansonsten
bleibt dir nàmlich nichts anderes übrig als alles selber zu schreiben
(und dann vermutlich eher in C/C++ als in C#)

- Und nein, mit SerialPort.Open alleine ist das nicht erledigt ;-)


gruss
Alain

Ähnliche fragen