Sie sind nicht angemeldet.
Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Quellcode |
|
1 2 3 4 |
Dim WriteData As String multiswitch.LEDStatus = 2 ^ 0 WriteData = Data.CreateStringFromStructure(AquaComputer.TranslationClasses.multiswitch_Rev141.TransferTypeRegister.LEDOUT) UsbHid.HidWriteToDevice(UsbIndex, WriteData) |
Zitat
/// <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; }
}
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 |
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 |
Zitat von »yeli«
Ja, das ist schon richtig, was du da sagst. Der AmpStatus (im Programm) ändert sich nicht, und wird jedesmal, wenn ich was am LEDStatus verändere so wie er ist zurück in den MS geschrieben.
Zitat von »yeli«
- Programm schreib alle 1sek. diesen AmpStatus zurück
Zitat von »yeli«
- Jetzt schalte ich mit nem HardwareKey direkt am MS den Port 3 an (so sollte jetzt der Port 3 an sein)
- wenn jetzt die nächste Sekunde abgelaufen ist, schreibt mein Programm den (noch vom Programmstart
bekannten AmpStatus (zur Erinnerung: da war Port3 noch aus)) zurück in den MS.
-> Ergebnis : Der Port 3 war bestenfalls mal für eine Sekunde an!
Zitat von »yeli«
Mein Programm soll ausschließlich die LED's bedienen. Die Amp-Ports werden per Hardware-Tasten direkt am MS bedient.
Zitat von »messi«
wenn du den ledstatus veränderst wird der ampstatus nicht so wie er ist zurück ins ms geschrieben...
wenn du einmal den amp status setzt bleibt er solange im MS gesetzt, bis du ihn wieder änderst, das bedeutet also, wenn du ihn einmal an machst reicht das, danach musst du den nicht immer und immer wieder schreiben, wenn ich das von dir wenigstens richtig verstehe..
Zitat von »messi«
dann vermute ich eher, dass das auslesen des keypress kommandos fehlerhaft ist..
Zitat von »yeli«
Schön wärs! aber ich hab ja gar keine Wahl als die gesamte Multiswitch-Struktur zurückzuschreiben. Diese Variable Data aus deinem Beispiel beinhaltet immer alle Daten. Ob ich jetzt Data.Ampstatus = xxx mache, oder nicht, der AmpStatus ist da immer mit drin. Und mit ... TransferTypeRegister.OUTPUT wird er auch in den Multiswitch übertragen. DAS ist das eigentliche Problem!
Zitat von »messi«
bist du dir da sicher? bei meinem skript gen läufts ja auch eigtl richtig..
Zitat von »yeli«
Du könntest ja deinen Scriptgen mal "NO-PWM" kompatibel machen. Falls du Zeit hast. Dann würde ich das gerne mal testen.
-