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
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) ); |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.