Vous n’êtes pas connecté.
Bonjour, visiteur, bienvenue sur les forums Aqua Computer Forum. Si c’est votre première visite, nous vous invitons à consulter l’Aide. Elle vous expliquera le fonctionnement de cette page. Pour avoir accès à toutes les fonctionnalités, vous devez vous inscrire. Pour cela, veuillez utiliser le formulaire d’enregistrement, ou bien lisez plus d’informations sur la procédure d’enregistrement. Si vous êtes déjà enregistré, veuillez vous connecter.
|
|
Code source |
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) |
Citation
/// <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; }
}
).|
|
Code source |
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
|
|
|
Code source |
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 |



Citation de "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.
Citation de "yeli"
- Programm schreib alle 1sek. diesen AmpStatus zurück
Citation de "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!
Citation de "yeli"
Mein Programm soll ausschließlich die LED's bedienen. Die Amp-Ports werden per Hardware-Tasten direkt am MS bedient.
Citation de "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..
Citation de "messi"
dann vermute ich eher, dass das auslesen des keypress kommandos fehlerhaft ist..
Citation de "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!
Citation de "messi"
bist du dir da sicher? bei meinem skript gen läufts ja auch eigtl richtig..

Citation de "yeli"
Du könntest ja deinen Scriptgen mal "NO-PWM" kompatibel machen. Falls du Zeit hast. Dann würde ich das gerne mal testen.
-