okay, hab verstanden wieso mein programm dir da nicht helfen kann.
hab mir jetz den thread nochmal ganz genau durchgelesen, und auch nochmal im sdk geschnuppert.
wenn ich das richtig verstehe willst du die leds ohne pwn anschalten/ausschalten aber nicht die amp sachen?
um das ganze mal schrittweise anzugehen:
erstmal der betreffende ausschnitt aus dem sdk:
/// <summary>
/// Wenn die LED Ausgnäge nicht mit PWM betrieben werden, gibt jedes Bit den Status der entsprechenden LED an.
/// </summary>
public byte LEDStatus
{
get{ return m_LEDStatus; }
set{ m_LEDStatus = value; }
}
ich hatte bis nun das ganze falsch verstanden, dachte man könnte damit den status (an/aus) nur auslesen, aber man kann ihn ja auch schreiben (ein weiterer todo punkt für mein skriptgen ..
).
sebastian hat dir ja auch schon erklärt, wie du die teile da ankriegen kannst, indem du einfach die hexwerte von den bits 0 bis 7 berechnest. (die zählweise bei 8 leds ist nämlich nicht 1-8 sondern 0-7).
soweit so gut, ansich sollten ja AMPstatus und LEDstatus völlig unabhängig von einander sein..
ich denke daher, das es eher daran liegt dass dein skript aufbau fehlerhaft (tschuldigung...) ist.
ich würde es so machen, dass ich anfangs ne initialisation mache, wo ich sämtliche eingänge auf 0 stelle und dann erst damit arbeite..
hier mal das bsp script von ac völlig jungfräulich:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
public AquaComputer.TranslationClasses.multiswitch_Rev141 MultiswitchData;
public string StartScript(AquaComputer.TranslationClasses.multiswitch_Rev141 WriteData,
ref AquaComputer.TranslationClasses.multiswitch_Rev141 ReadData,
AquaComputer.UsbHid.HidControl Usb,
int UsbAdress)
{
ScriptFunctions Obj = new ScriptFunctions(Usb, UsbAdress);
MultiswitchData = WriteData;
ReadData.ReadLock = true;
Obj.Blink(WriteData);
ReadData.ReadLock = false;
return("");
}
public class ScriptFunctions
{
private AquaComputer.UsbHid.HidControl HIDControl;
private int HIDDeviceNumber = -1;
private bool Success = false;
public ScriptFunctions(AquaComputer.UsbHid.HidControl Usb, int UsbAdress)
{
HIDControl = Usb;
HIDDeviceNumber = UsbAdress;
}
private void WriteToDevice(
AquaComputer.TranslationClasses.multiswitch_Rev141 Data,
AquaComputer.TranslationClasses.multiswitch_Rev141.TransferTypeRegister TransferType)
{
string MultiswitchWriteString = Data.CreateStringFromStructure(TransferType);
if (HIDControl.ControlBusy == false)
{
HIDControl.HidWriteToDevice(HIDDeviceNumber, MultiswitchWriteString);
}
}
public void Blink(AquaComputer.TranslationClasses.multiswitch_Rev141 Data)
{
*BODY*
}
}//end class
|
der teil wo *BODY* steht ist variabel, da sollte dann natürlich das eigentliche skript platzfinden.
anstatt des *BODY* würde ich jetz an deiner stelle mal folgendes reinsetzen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Data.AMPStatus = 0x00; //alle amps null
Data.LEDStatus = 0x00; //alle leds null
WriteToDevice(Data, AquaComputer.TranslationClasses.multiswitch_Rev141.TransferTypeRegister.OUTPUT); //zum ms senden bzw. schreiben
Data.LEDStatus = 0x01; //led1 anmachen
Data.AMPStatus = 0x00; //alle amps null
WriteToDevice(Data, AquaComputer.TranslationClasses.multiswitch_Rev141.TransferTypeRegister.OUTPUT); //zum ms senden bzw. schreiben
System.Threading.Thread.Sleep(1000); //1sek warten
Data.LEDStatus = 0x01 + 0x80; //led1 und led8 anmachen
Data.AMPStatus = 0x00; //alle amps null
WriteToDevice(Data, AquaComputer.TranslationClasses.multiswitch_Rev141.TransferTypeRegister.OUTPUT); //zum ms senden bzw. schreiben
System.Threading.Thread.Sleep(1000); //1sek warten
|
kann dir nicht garantieren dass das überhaupt geht, hab nämlich selbst noch kein MS
was ich jedoch gelernt hab ist, dass dieses WriteToDevice doch recht wichtig ist, und im grunde nach jeder aktion, die die leds verändert ausgeführt werden muss, damit das ms von deinem skript überhaupt was mitbekommt.
vlt hilft dir das hier geschriebene weiter, oder auch nicht
bin jetzt erstmal noch ne woche im urlaub; danach schau ich hier nochmal rein.
messi