Forum: Mikrocontroller und Digitale Elektronik SocketCAN und Message Object


von Pit (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite gerade mit dem SocketCAN auf einem Linux PC. An sich läuft 
der CAN auch, ich kann Daten senden und empfangen.
Von Steuergeräten kenne ich es so, dass es mehrere Message Objects gibt. 
Man kann dort bestimmte ID Bereich einem Object zuordnen.
Beispiel: ID 0 - 9F fällt in das Message Object 1, ID 100 - 12F in das 
Message Object 2 usw.

Kann ich das mit SocketCAN auch realisieren? Kann ich mehrere Sockets 
parallel erzeugen?

Danke im Voraus.

Gruß Pit

von stephan (Gast)


Lesenswert?

das macht man über filter, das geht auch mit socketCAN

von Pit (Gast)


Lesenswert?

stephan schrieb:
> das macht man über filter, das geht auch mit socketCAN

Muss ich dafür dann mehrere Sockets anlegen? Also so:
1
mySkt1 = socket( PF_CAN, SOCK_RAW, CAN_RAW );
2
mySkt2 = socket( PF_CAN, SOCK_RAW, CAN_RAW );
3
4
.
5
.
6
7
setsockopt(mySkt, SOL_CAN_RAW, CAN_RAW_FILTER, &t_Filter1, sizeof(t_Filter1) );
8
setsockopt(mySkt, SOL_CAN_RAW, CAN_RAW_FILTER, &t_Filter2, sizeof(t_Filter2) );
9
10
.
11
.
12
bind( mySkt1, (struct sockaddr*)&addr, sizeof(addr) );
13
bind( mySkt2, (struct sockaddr*)&addr, sizeof(addr) );

und empfangen dann über
1
read( mySkt1, &frame, sizeof(frame) );

bzw.
1
read( mySkt2, &frame, sizeof(frame) );

von Viatorus (Gast)


Lesenswert?

Ich habe die gleiche Frage, finde aber keine Antwort.

Braucht man mehrere sockets um zu wissen, wo die Nachrichten herkommen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.