Nachrichtensystem

Aus PC_DIMMER
Wechseln zu: Navigation, Suche

Deutsch

Mit dem PC_DIMMER-Internen Nachrichtensystem können Plugins und Hauptprogramm Daten austauschen. Es handelt sich hier eigentlich nur um eine Funktion, welche über Variants entsprechend unterschiedliche Daten (Text, Zahlen, Pointer, etc.) verschicken kann. Über die Nachrichtennummer wird der Inhalt der beiden VARIANTs definiert.


Um eine Nachricht aus einem eigenen Plugin zum Hauptprogramm senden zu können, muss man den Pointer "CallbackSendMessage" beim Aufruf von DLLCreate(...) entsprechend einem Funktionsprototypen zuweisen, welcher zwei Funktionswerte bereitstellt: MSG als Byte, ARG1 und ARG2 jeweils als VARIANT:

 SendMSG(MSG: Byte; ARG1, ARG2:VARIANT)

In Delphi könnte eine Zuweisung des Pointers zum Funktionsprototyp in der DLLCreate(...) wie folgt aussehen:

 @SendMSG:=CallbackSendMessage;

Danach kann man SendMSG (also die nun zugewiesene Funktion) wie eine normale Funktion verwendet werden:

 SendMSG(MSG_ADDLOGFILEENTRY,'Das Nachrichtensystem funktioniert wunderbar! :)'); // Fügt einen neuen Eintrag in die Logdatei des PC_DIMMERs ein



Hier eine Auflistung der derzeit verfügbaren Nachrichten:

 // ID=String einer TGUID (z.B.: '{E627400F-BB66-40DB-B6C0-7F5FD78DE36D}')
 // PC_DIMMER Messagesystem: MSG, Data1, Data2
 MSG_RECORDSCENE=0; // Data1=Booleanarray
 MSG_AUDIOEFFECTPLAYERRECORD=1; // Data1=Boolean
 MSG_SYSTEMVOLUME=2; // Data1=Byte
 MSG_SYSTEMMUTE=3; // Data1=Boolean
 MSG_JUMPTOCHANNEL=4; // Data1=Integer
 MSG_GRANDMASTER=5; // Data1=Byte
 MSG_FLASHMASTER=6; // Data1=Byte
 MSG_ADDLOGFILEENTRY=7; // Data1=String
 MSG_EFFECTSPLAY=8; // Data1=Boolean
 MSG_SYSTEMSPEED=9; // Data1=Integer (BPM)
 MSG_NEW=10; // Data1=String (Projektverzeichnis)
 MSG_OPEN=11; // Data1=String (Projektverzeichnis)
 MSG_SAVE=12; // Data1=String (Projektverzeichnis)
 MSG_BEATIMPULSE=13; // Data1=Boolean
 MSG_ACTUALCHANNELVALUE=14; // Data1=Integer, Data2=Integer
 MSG_MIDIIN=15; // Data1=array[0..2] of byte
 {
   Data[0]=MIDI_Message
   Data[1]=MIDI_Data1
   Data[2]=MIDI_Data2
 }
 MSG_STARTSCENE=16; // Data1=ID
 MSG_STOPSCENE=17; // Data1=ID
 MSG_SPEEDMASTER=18; // Data1=Byte
 MSG_AUDIOEFFECTPLAYERTIMECODE=19; // Data1=Cardinal (in ms)
 MSG_AUDIOEFFECTPLAYEREVENT=20; // Data1=Byte  (0=Play, 1=Pause, 2=Stop)
 MSG_MIDIOUT=21; // Data1=array[0..2] of byte
 {
   Data[0]=MIDI_Message
   Data[1]=MIDI_Data1
   Data[2]=MIDI_Data2
 }
 MSG_SETLANGUAGE=22; // Data1=Languagecode 0=English, 1=French, 3=German
 MSG_OPENLIBRARY=23; // Data1=Szenen-ID (um zu bearbeitende Szene in Bibliothek zu selektieren)
 MSG_LIBRARYVALUE=24; // Data1=Szenenname, Data2=Szenen-ID
 MSG_CREATEPLUGINSCENE=25; // Data1=ID, Data2=Name
 MSG_REFRESHPLUGINSCENE=26; // Data1=ID, Data2=Name
 MSG_REMOVEPLUGINSCENE=27; // Data1=ID
 MSG_STARTPLUGINSCENE=28; // Data1=ID, Data2=Fadetime (Optional)
 MSG_STOPPLUGINSCENE=29; // Data1=ID
 MSG_EDITPLUGINSCENE=30; // Data1=ID
 MSG_REGISTERPLUGINCOMMAND=31; // Data1=ID, Data2=Name
 MSG_STARTPLUGINCOMMAND=32; // Data1=ID, Data2=Wert zwischen 0 und 255
 MSG_SETCOLOR=33; // Data1=ID, Data2=array[0..2] of byte (=R,G,B)
 {
   Data[0]=R
   Data[1]=G
   Data[2]=B
 }
 MSG_SETDIMMER=34; // Data1=ID, Data2=byte
 MSG_SETSTROBE=35; // Data1=ID, Data2=byte
 MSG_SETSHUTTER=36; // Data1=ID, Data2=byte (0=off, 255=on)
 MSG_SETGOBOROT1=37; // Data1=ID, Data2=byte
 MSG_SETGOBOROT2=38; // Data1=ID, Data2=byte
 MSG_SETPRISMA=39; // Data1=ID, Data2=byte (0=Single, 255=Triple)
 MSG_SETPRISMAROT=40; // Data1=ID, Data2=byte
 MSG_SETIRIS=41; // Data1=ID, Data2=byte
 MSG_STARTCOMMAND=42; // Data1=array[0..6] of string[38], Data2=byte (Sollwert 0..255)
 {
   Data[0]=ID des aufzurufenden Befehls
   Data[1]=Integer-Wert 1 als String
   Data[2]=Integer-Wert 2 als String
   Data[3]=String-Wert 1
   Data[4]=String-Wert 2
   Data[5]=GUID 1 als String
   Data[6]=GUID 2 als String
 }
 MSG_STARTEFFECT=43; // Data1=ID
 MSG_STOPEFFECT=44; // Data1=ID


English