CANoe / CAPL wie verwende ich RS232ByteCallback()

Gast #4676590
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich wüßte gerne wie ich die Callback-Funktion "RS232ByteCallback()" in 
CAPL richtig einsetze. Diese Funktion wird laut Handbuch aufgerufen, 
sobald ein Event (Zeihen gesendet  empfangen  Error) durch die 
serielle Schnittstelle ausgelöst wird. Mus ich die Funktion unter dem 
obigen Namen selber schreiben (und die über die Paramter empfangenen 
Daten darin auswerten) oder ist das als Deklaration für die Zuweisung 
eines Funktionspointers (auf eine Funktion die dann aufgerufen wird) 
gemeint? Aus dem Handbuch geht das nicht wirklich hervor. Bin für jeden 
Tipp dankbar!

Grüße
#4676649
Lesenswert?
• ▲
▼
In der Hilfe ist doch ein Beispiel:
1
// at node which listens to port 1 is connected to port 2
2
RS232ByteCallback(dword port, dword datum, dword note)
3
{
4
   // receive value 65 with port==1
5
}

In den CAPL-Knoten einfügen, wo die Daten empfangen werden sollen.
Du musst die Funktion also selber schreiben, aber den vorgegebenen Namen 
und die Signatur verwenden.


Allerdings ist die Funktion deprecated. Benutze lieber RS232Receive und 
RS232OnReceive:
1
byte mybuffer[20];
2
int mysize=20;
3
if ( 1==RS232Receive(1,mybuffer,mysize) )
4
  write(“It works with port 1.”);
5
...
6
RS232OnReceive( dword port, dword buffer[], dword number )
7
{
8
   // works after first RS232Receive !
9
   // buffer == mybuffer, 1<number<=mysize
10
}
Gast #4676670
Lesenswert?
• ▲
▼
ich gehe davon aus, dass onReceive bei JEDEM Event (also jedem 
empfangenen Zeichen) aufgerufen wird, korrekt? Oder wird da was 
gesammelt? Evt. bis MySize Zeichen empfangen wurden und dann wird 
OnReceive aufgerufen?

... und dass mySize die maximale Zahl der Zeichen darstellt, die 
empfangen werden - danach wird onReceive nicht mehr aufgerufen, oder?
Gast #4676765
Lesenswert?
• ▲
▼
Ok - das ist auch kein großes Problem. Eine Sache noch: Falls es mehrere 
aktive knoten gibt, die eine onReceive Funktion implementiert haben, 
werden dann eigentlich alle Funktionen aufgerufen oder nur diejenige des 
Knotens, der zuvor auch etwas gesendet hat?
#4676902
Lesenswert?
• ▲
▼
Ich denke, nicht, dass das was mit dem Senden zu tun hat. Schließlich 
musst du ja auch was empfangen können, ohne jemals etwas zu senden.

Vermutlich schlatest du mit Receive das Empfangen für diesen Knoten 
scharf. Wird dann etwas empfangen, wir der OnReceive Handler aufgerufen.

Andere Knoten bekommen davon nichts mit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren