2017-05-03 2 views
0

Ich verwende CAPL, um einen Test envirmonet für einige kleine Tests zu simulieren, und ich habe Probleme beim Senden von Nachrichten oder spezifischer Einstellung der Werte.Senden von Nachrichten mit CAPL und dbc Signalwerten

Ich kann Signalwerte mit $ SignalName lesen, auch bin ich in der Lage, Signalwerte wie diese einzustellen.

Wenn ich diesen Code verwenden ist eine Nachricht der Nachrichtendaten senden immer 0: verwendet werden

on key 't' 
{ 
    message MessageName msg; 
    setSignal(SignalName,i); 
    write("Value: %d",i); 
    outport(msg); 
} 

Hexe macht irgendwie sence becouse ich denke, dass die Botschaftsobjekte bestimmt Bytes Sie Hexe senden zugreifen durch msg.byte()

Ich weiß, dass ich Signale in Nachrichten von msg.SignalName setzen kann, aber auch dies scheint nicht der richtige Weg. Ich denke, es sollte eine Möglichkeit geben, eine Nachricht zu senden, und alle in der Nachricht enthaltenen Signale werden auf die Werte gesetzt, die durch die Funktion SetSignal() gesetzt werden. Sonst ist die SetSignal Funktion ein wenig nutzlos

Vielleicht hat jemand eine Idee. Vielen Dank

Antwort

0

Ich benutze CANalyzer Version 8.2 und ich habe nicht die Option SetSignal (Signal, Wert) -Funktion zu verwenden. Die Einstellung der Signalwerte durch Zugriff auf die Nachrichtenselektoren scheint ein vernünftiger Ansatz zu sein. Allerdings hast du die Funktion outport benutzt! Sie müssen die Ausgabefunktion verwenden, um Nachrichten zu übertragen.

on key 't' { 
    message MessageName msg; 
    msg.signal1 = value1; 
    output(msg); 
} 

Für diese Methode muss die Datenbank so konfiguriert werden, dass die Nachricht msg alle notwendigen Signale enthält (signal1).

Wenn Sie alle Signalwerte zu den Startwerten in der Datenbank verwenden, um die Funktion konfiguriert einzustellen:

setSignalStartValues(message msg);