Hallo Community,
ich habe durch "USB IR Toy V2" eine virtuelle COM-Schnittstelle. Das ansteuern funktioniert auch.
Ich habe durch das Programm "IrScrutinizer" das Signal der Power-Taste einer Fernbedienung (Infrarot) herausbekommen.
Das Signal liegt mir in Form eines NEC Code vor bzw. in pronto hex/short pronto hex
short pronto hex:
900A 006C 0000 0001 00FF 40BF
Ich versuche nun das Signal mittels C# an die COM-Schnittstelle zu geben. Doch den Code den ich bis dato habe fordert immer den HEX in Form 0xFF (FF steht für ein beliebigen Hex-Code.
Doch ich habe oben eine vierer Folge (bsp: 900A) und keine zweierfolge.
Sprich wie bekomme ich hier die viererfolge abgebildet?
byte[] powerOnCmd = new byte[] { 0xFF, 0x01, 0x00 };
Und nun?
Anbei mein Code. Ich hoffe ihr könnt mir helfen!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.Concurrent;
using System.IO.Ports;
using System.Threading;
using System.Threading.Tasks;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
byte[] powerOnCmd = new byte[] { 0xFF, 0x01, 0x00 };
SerialPort sp = new SerialPort();
public Form1()
{
InitializeComponent();
sp.PortName = "COM3";
sp.BaudRate = 9600;
sp.Parity = Parity.None;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Open();
}
private void button1_Click(object sender, EventArgs e)
{
sp.Write(powerOnCmd, 0, powerOnCmd.Length);
}
private void button2_Click(object sender, EventArgs e)
{
sp.Close();
sp.Dispose();
sp = null;
}
}
}
Einfach die Bytes (d.h. jeweils 2 Hexziffern) einzeln angeben:
byte[] powerOnCmd = new byte[] { 0x90, 0x0A, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0x40, 0xBF }
Falls die Darstellung in Little Endian (LE) ist, dann mußt du evtl. noch jeweils die 2 Bytes jeder Viererfolge tauschen: 900A => 0x0A, 0x90, ...
Hallo,
danke.
gleich beide Varianten ausprobiert.
Leider funktioniert es nicht. (also der Code geht, doch als Ergebnis passiert nichts)
Habt ihr noch Ideen?
So müßte es aber funktionieren. Kannst du mit dem Programm "IrScrutinizer" dann nicht nachschauen, was bei obigem Code wirklich verschickt wird?
Das könnte ein Big-/Littleendian Problem sein.
Sprich, es könnte sein, dass du die Bytes in der anderen Reihenfolge schicken musst.