MSVC virtual UART med procesi

Vse o programiranju na in za PC

Moderatorji: Kroko, tilz0R

MSVC virtual UART med procesi

OdgovorNapisal/-a tilz0R » 05 Mar 2021, 11:23

Razvoj MCU aplikacije je najlažji na PC brez MCU, vsaj kar se tiče higher-level middleware.

Za potrebe določenega sistema komunikacije med 3 ali več napravami bi rad naredil simulator na PC, torej 3 procese, ki med seboj komunicirajo.
Komunikacija na MCU nivoju bo CAN, torej morajo vse 3 aplikacije med seboj komunicirati tako, da ko en process pošlje, morata obe drugi aplikaciji sprejeti, in vice-versa.

hardware na MCU dela lepo, a se sedaj ukvarjam z paketi, ki se prenašajo in prevajanje vseh treh in debugiranje je trajajoče in Visual Studio to naredi v 2 sekundah.

Torej, ima kdo idejo, kako bi najlažje naredil nekakšen PIPE (FIFO) v MSVC++? Ali bi bil to kar en file? Pomoje ne, ker bi ga lahko samo en program odprl.
Ideja 3x thread v enem procesu odpade, ker bi zadeve preveč kompliciralo.

Lep dan, Tilen
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 2402
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 264 krat
Prejel zahvalo: 767 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: MSVC virtual UART med procesi

OdgovorNapisal/-a blasny » 05 Mar 2021, 12:06

Moj 20 let mlajši jaz pravi:
Če bi imel 1 dedicated writer, N readers potem išči "Named pipes". Ampak ti hočeš bus, torej to ne bo šlo.

Obstaja neskončno rešitev za bus, ki pa običajno ciljajo na network aplikacije. Vse te rešitve tudi serializirajo pisanje v "queue". Kar pomeni, da ko dva procesa hočeta pisati hkrati, potem bo eden zmagal in zapisal prvi, potem se bo zapisal še msg od drugega.
Kar je mogoče isto kot CAN colision detection ali pa ni isto. Odvisno kako gledaš na to in kako natančno hočeš simulirat.

Če boš pisal svojo rešitev pa si poglej memory-mapped files oz. "Named Shared Memory" kot temu reče MS.
blasny
 
Prispevkov: 835
Pridružen: 18 Jan 2015, 15:48
Kraj: Tepanjce
Zahvalil se je: 534 krat
Prejel zahvalo: 321 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 35

Re: MSVC virtual UART med procesi

OdgovorNapisal/-a tilz0R » 05 Mar 2021, 13:00

To da je spodaj na dejanski stopnji CAN nima povezave z simulacijo na CPU. Jaz hočem simulirati kaj ena stran pošlje in kako druga to sprocesira. Order paketov je nepomemben tukaj.

Ker bodo 3 procesi fixni razmišljam, da bom naredil več pipe-ov, in potem bo vsak proces pisal v druga 2 pipe-a. To je bila prvotna ideja.

Hint na "named pipe" odgovori moje vprašanje: https://stackoverflow.com/questions/265 ... -c-windows

Hvala
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 2402
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 264 krat
Prejel zahvalo: 767 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: MSVC virtual UART med procesi

OdgovorNapisal/-a sundancer » 05 Mar 2021, 16:13

Še ena ideja, če ti bo morda lažje z MQTT. Vsi programi oziroma threadi bi se povezali na MQTT broker in imaš potem public/subscribe mehanizem za pošiljanje sporočil.
Tukaj sem našel knjižnice https://www.eclipse.org/paho/index.php? ... nloads.php
Sicer potrebuješ potem še MQTT broker s katerim je sicer zelo malo dela za vzpostavitev.
Uporabniški avatar
sundancer
 
Prispevkov: 977
Pridružen: 16 Jan 2015, 22:36
Kraj: Ljubljana
Zahvalil se je: 437 krat
Prejel zahvalo: 533 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 63

Re: MSVC virtual UART med procesi

OdgovorNapisal/-a eddie » 08 Mar 2021, 08:26

Kaj je narobe pa z navadnim UDP broadcastom?
Kar pošlje eden lahko na lokalnem omrežju sliši "poljubno" enot.

Lp
eddie
 
Prispevkov: 61
Pridružen: 22 Jan 2015, 21:11
Zahvalil se je: 13 krat
Prejel zahvalo: 2 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 3

Re: MSVC virtual UART med procesi

OdgovorNapisal/-a GJ » 08 Mar 2021, 15:40

tilz0R je napisal/-a:Torej, ima kdo idejo, kako bi najlažje naredil nekakšen PIPE (FIFO) v MSVC++? Ali bi bil to kar en file? Pomoje ne, ker bi ga lahko samo en program odprl.

Če hočeš hkratno z več nitmi ali programi dostopat do istege datoteke uporabi: Windows File Mapping

LP GJ
Če si jezen, si žrtev!
GJ
 
Prispevkov: 519
Pridružen: 18 Jan 2015, 22:26
Kraj: Ljubljana
Zahvalil se je: 249 krat
Prejel zahvalo: 166 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 35


Vrni se na Programski jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 2 gostov