private bool ConnectToAtmoWinA()
{
try
{
atmoCtrl = (IAtmoRemoteControl2)Marshal.GetActiveObject("AtmoRemoteControl.1");
}
catch (Exception ex)
{
Log.Error("atmolight: exception= {0}",ex.Message);
atmoCtrl = null;
return false;
}
ComEffectMode oldEffect;
atmoCtrl.setEffect(ComEffectMode.cemLivePicture, out oldEffect);
atmoLiveViewCtrl = (IAtmoLiveViewControl)Marshal.GetActiveObject("AtmoRemoteControl.1");
atmoLiveViewCtrl.setLiveViewSource(ComLiveViewSource.lvsExternal);
atmoCtrl.getLiveViewRes(out captureWidth, out captureHeight);
DisableLEDs();
return true;
}
private void SetAtmoEffect(ComEffectMode effect)
{
if (atmoCtrl == null)
return;
try
{
ComEffectMode oldEffect;
atmoCtrl.setEffect(effect, out oldEffect);
Log.Info("atmolight: Set atmoeffect to " + effect.ToString());
}
catch (Exception ex)
{
Log.Error("atmolight: Failed to switch effect to "+effect.ToString()+Environment.NewLine+ex.Message+Environment.StackTrace);
}
}
private void EnableLivePictureMode(ComLiveViewSource viewSource)
{
SetAtmoEffect(ComEffectMode.cemLivePicture);
atmoLiveViewCtrl.setLiveViewSource(viewSource);
}
BinaryReader reader = new BinaryReader(stream);
stream.Position = 0; // ensure that what start at the beginning of the stream.
reader.ReadBytes(14); // skip bitmap file info header
byte[] bmiInfoHeader = reader.ReadBytes(4 + 4 + 4 + 2 + 2 + 4 + 4 + 4 + 4 + 4 + 4);
byte[] pixelData = reader.ReadBytes((int)(stream.Length - stream.Position));
atmoLiveViewCtrl.setPixelData(bmiInfoHeader, pixelData);
um mit dem Atmowin zu verbinden, muss man nichts von den Remote-Bibliotheken kompilieren.
die erste Methode ist das direkte Setzten der LEDs:
atmoCtrl.setChannelValues(array channel_Values)
Das Problem dabei ist, dass fast jeder seine LEDs anders verbaut hat und die erste LED nicht zwangsläufigt links oben ist. Lässt sich aber über umordnen des Arrays leicht beheben, wenn Startpunkt und Anzahl der LEDs bekannt ist.
die zweite wäre ein Bild/ Pixelarray (64X48 Header+1rgb2rgb3rgb....3072rgb) zu senden, das dann von Atmowin ausgewertet wird. Einfach die Ränder in deinen gewünschten Farben bunt machen und absenden. Das ist die oben beschriebene Methode.
Grüße
Angie