GNU/Linux >> Znalost Linux >  >> Linux

Jak poznám, že sériový port skutečně přenáší data, aniž by bylo nutné zařízení otevřít?

RS232 nemá žádný indikátor "přítomnosti kabelu". Pouze přijímáte přenosové nebo metadatové (řídicí) signály, nebo ne – to je vše, co víte. Pokud přijímáte příchozí signál (CTS|DSR|CD), víte, že je kabel připojen. Pokud nepřijímáte žádný příchozí signál, je stav kabelu neurčitý a neexistuje způsob, jak zjistit, zda je zapojen bez dalších hardwarových řešení – nebo provedení nějaké výměny se vzdáleným zařízením.

Obvyklým přístupem je provádění jakýchsi "udržovacích" přenosů (dokonce i jen metadat - např. dočasně nastavit DTR a očekávat CTS), ale pokud disciplína protokolu používaná softwarem na dvou koncích kabelu takovou nečinnou výměnu zakazuje, v podstatě jsem uvízl v používání páječky.

Co byste mohli zkusit, je nějaký druh dalšího „démona“, který nastaví rouru, přepošle data mezi vaším softwarem a fyzickým zařízením (na obou koncích), zapouzdří je – a provede „kontroly připojení“, pokud je roura nečinná.

Dovolte mi přidat jedno poměrně běžné řešení:pokud vaše koncové zařízení nepoužívá hardwarové řízení, můžete zkratovat DTR s CTS uvnitř zástrčky na hostitelské straně a použít „hardwarové ovládání“ na hostitelské straně. Generování DTR automaticky řídí CTS a umožňuje přenos, pokud je k dispozici kabel, takže přenos není ovlivněn. Mezitím bez kabelu bude systém reagovat na nedostatek CTS způsobem vhodným pro tuto událost, např. vygenerování časového limitu nebo pozastavení přenosu, dokud není kabel zapojen.


Linux
  1. Jak odeslat data na sériový port a zobrazit jakoukoli odpověď?

  2. Linux – Jak linuxové jádro zná hlavní a vedlejší čísla zařízení?

  3. Linux – Jak najít procesy pomocí sériového portu?

  1. Jak najít všechna sériová zařízení (ttyS, ttyUSB, ..) v Linuxu bez jejich otevření?

  2. Jak otevřít sériový port v linuxu bez změny pinu?

  3. Jak zjistím, který /dev/ttyS* je můj sériový port?

  1. Čtení/zápis na sériový port bez root?

  2. Jak sdílet připojení k internetu?

  3. Jak zjistit, zda je disk SSD nebo HDD