Lasp skrev: ↑7 oktober 2021, 10:41:33
Även jag beundrar TS och hans sökande efter den helige Gral!
Men CD var väl på något protokoll, så att man slumpvis satte ett fördröjnings ms för att undvika att det krockade igen!
Inte bara en helig Gral. Ännu bättre!
Föreställd dig att kombinera CANopen med TCP/IP?
Du har en hög med molijoxer och mojänger (även kallat produkter från ABB, Siemens, Bosch, Schneider med mera) som talar CANopen och du vill läsa utav CANopen protokollet över nätet.
Hur gör man då? Jo, man bygger ett kretskort som har USB <--> CAN-bus. Sedan bygger man en PC-mjukvara som kan tala med USB och mjukvaran kan även ha en TCP/IP server. Där efter bygger man ett protokoll i C som talar CANopen, som dessutom fungerar utmärkt med PC mjukvaran.
Sammanfattning:
1. Kretskort som har USB och CAN-bus
2. Kretskortet har CANopen som protokoll
3. Kretskortet talar med PC via USB
4. Hos PC finns det mjukvara som läser CANopen kommandon via USB
5. Mjukvaran har en TCP/IP server
6. Användare kan ansluta TCP/IP servern och komma in på CANbus nätverket via USB
TomasL skrev: ↑7 oktober 2021, 10:56:14
Det existerar inga fysiska lager som kan hantera flera anslutningar samtidigt.
Kollisionshantering sker på en högre nivå.
Oavsett vilket fysiskt gränssnitt du har, kan det bara finnas en sändare i taget.
Du vet inte hur det fungerar? Vore intressant. Var korrekt nu, du har haft mycket fel i denna tråd angående diverse saker nu
TomasL skrev: ↑7 oktober 2021, 11:07:15
Skall du kunna acceptera flera anslutningar med TCP/IP, så måste du nog köra flera trådar.
Då vet jag exakt vilket ramverk och språk jag ska köra. C++.
davidi skrev: ↑7 oktober 2021, 12:02:15
Nu har jag inte programmerat för den aktuella arkitekturen, men inte ska det krävas några trådar för att hantera flera anslutningar? En select()-loop är standardsvaret, för det anropet måste väl finnas tillgängligt?
Jag har kört Sockets förut och då fick man alltid vänta på anslutning. Du kan ju köra med icke-blockering, men det blir svårt att pricka anslutningen då med klienten.