Projekt

Allgemein

Profil

Aktionen

Wiki » Historie » Revision 12

« Zurück | Revision 12/17 (diff) | Weiter »
Maximilian Seesslen, 20.08.2024 14:18


CANHub
h2. Intro

CANServer is an Server-Client library that provides multiple applications access to an CAN-Bus via TCP/IP.
Every message received via CAN gets send to all clients. When an client sends an message, it is send
via CAN-Bus and also to the other clients.
The physical CAN-Bus is optional.

Usecases

  • CAN over ethernet
  • Graphical user interface for home automatisation
    An laptop/tablet can be connected to an server via WLAN
  • Recording/Replay
    An PC-Application could record CAN messages and replay them.
  • Debugging
    Show CAN traffic while interacting with the bus with other devices.
  • WLAN CAN-Bridge
    Two CAN segments can be connected via WLAN

Architecture

        Server                      TCP       Client
        List
        {                             /-----> connectionTcpClient
            connectionCan             |
            connectionTcpServer       |
            connectionTcpServer <-----/
            connectionTcpServer
        }
      class CConnector {
         signal dataIn(SMsg);
         slot dataOut(SMsg);
      }
        Server                      
        List
        {
            connectionCan       <-----\
      /---- connectionTcpServer <-----|
      |     connectionTcpServer <-----|
      |     connectionTcpServer <-----|
      | }                             |
      \--> serverDataInSlot-----------/
Each connection has an id which is an ongoing number handled by the server.
  1. Terminal Output
    The server prints a dynamic list with the connections and traffic statistics.
    - ID/Type
    - Connection uptime
  • in/out messag count
  • in msg/s

Example:

Id Target        Uptime   In   Out   In/s
-----------------------------------------
0: CAN           0:10s    12   55    0
1: Server        0:10s    3    51    0
2: Client        0:05s    43   52    0
3: Client        0:01s    1    57    0

Loop detection

An Heartbeat is send/routed to every tcp connection.
When server sends heartbeat, it must not receive it back. Otherwise there is a loop. How to generate uuid?

Ansi

box(x1,y1,x2,y2)
hLine(x1,y1,x2)
vLine(x1,y1,y2)

┬
│
┴
├──┤
┌─┐
│ │
└─┘
QLoggingCategory::setFilterRules("*.debug=false");
qSetMessagePattern("[%{time process}] %{function}: %{message}");
qDebug("Happy debugging");

Links

https://www.sciencebuddies.org/science-fair-projects/references/ascii-table

Von Maximilian Seesslen vor 5 Monaten aktualisiert · 12 Revisionen