...dovolím si poznamenat, že než se peklovat ručně s nějakým přepínáním RX+TX, je citelně jednodušší, pořídit si modul, kde UART přímo řídí half-duplexní transceiver interním flagem "TSRE" resp. "TEMT". Tzn. pokud má UART neprázdný výstupní shift registr, tak je transceiver ve stavu "TX", jinak je ve stavu "RX" (budič přepnutý do stavu vysoké impedance a přijímač naslouchá). Z hlediska programátorského opracování, prostě pošlete znak nebo řetězec znaků a o víc se nestaráte. Co jste předal do kaskády bufferů (která končí v UARTu FIFO a posuvným registrem) to se přesně odvysílá.
Zrovna značku WinChipHead nemám úplně rád, kdysi mě naštvali nepovedeným konvertorem USB/LPT.
Na USB bych si dovolil doporučit něco od FTDI, lépe originál, ale jsou k vidění i čínské pajcy - které ovšem nemusí fungovat s originálními ovladači od FTDI pro Windows, ale open-source ovladač v Linuxu by je měl vzít bez problému.
jeden druhý třetí čtvrtý.
Ve směru RX mají moderní UARTy veliké FIFO, klidně 64-128 B, a následuje driver obsluhující interrupt... tam se data taky neztratí.
V user space prostě pošlete dotaz a pověsíte se na otevřený "deskriptor" a čekáte co přijde jako odpověď. Nějaké časování znaků není potřeba řešit.
USB serial nemá USB třídu - vlastně má, CDC ACM (modem), ale tu většina USB/serial donglů nepoužívá. Většina USB/serial donglů (UARTů) má na USB proprietární rozhraní. Linux k tomu přistoupil tak, že má cosi co vypadá navenek jako "class-based ovladač pro USB serial". Asi to tak nemají všechna distra, ale ovladač
usbserial jsem vídal zkompilovaný jako modul, ovšem s monoliticky zakompilovanými ovladači pro běžné modely/značky USB/serial čipů. Takže jsem býval zvyklý loadnout "usbserial" a bylo vyřešeno. Skutečně populárních je asi 5 značek USB/serial čipů.
A dál záleží, v čem je napsaný ten Modbus. Provozovat ho v Pythonu... no asi proč ne :-) Rozhodně může Modbus žít v user space, sám jsem kdysi na to napsal v Céčku rozvlákněnou
knihovnu, bohužel jsem nedostal svolení ji vystavit k volnému downloadu...
BTW tyjo, RTL8821 má USB variantu? Já ho znám jako poměrně solidní a úspornou ACčkovou wifinu na (Mini)PCI-e.