OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.
Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.
R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.
IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.
Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.
Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.
Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.
Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.
Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.
stty -F /dev/ttySx -crtscts
), třeba to pomůže.
stty -F /dev/ttyS0 clocal cread -crtscts cs8 -cstopb hup -parenb parodd -brkint -icrnl ignbrk -igncr ignpar imaxbel -inlcr inpck -istrip -iuclc -ixany ixoff -ixon bs0 cr0 ff0 nl0 -ocrnl -ofdel -ofill -olcuc -onlcr -onlret onocr -opost tab0 vt0 -crterase crtkill -ctlecho -echo -echok -echonl -echoprt -icanon -iexten -isig -noflsh -tostop -xcase time 5 min 1
port = serial.Serial("/dev/ttyS0", baudrate=9600, rtscts=0)Ale jak říkám jestli to rtscts=0 má vliv na stav signálu RTS nevím. Jde o to jestli to není taky nějaká hardwarová záležitost (nějaký USB to serial převodník) který se takto chová. Popřípadě bych ten drátek na chvilku odpojil. A připojil bych ho až když bych chtěl programovat to zařízení (což je asi krajní případ, to odpojení drátku).
michals@air:~> stty -aF /dev/ttyS0 speed 19200 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
#include <stdio.h> /* Standard input/output definitions */ #include <string.h> /* String function definitions */ #include <unistd.h> /* UNIX standard function definitions */ #include <fcntl.h> /* File control definitions */ #include <errno.h> /* Error number definitions */ #include <termios.h> /* POSIX terminal control definitions */ /* * 'open_port()' - Open serial port 1. * * Returns the file descriptor on success or -1 on error. */ int open_port(void) { int fd; /* File descriptor for the port */ fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { /* * Could not open the port. */ perror("open_port: Unable to open /dev/ttyS0 - "); } else fcntl(fd, F_SETFL, 0); return (fd); }Co sem koukal různě po netu, tak by to RTS mělo být po otevření portu shozené. Není to opravdu nějaká HW anomálie u tebe? On ten port může být klidně nějak poškozený a to RTS může být nahozené stále. Při bootu bych vlezl do BIOSu (čili neběží nic) a šáhnul bych tam měřákem, jaký bude stav té RTS linky.
Teprve až otevřením portu se přepne (mám to naměřené i osciloskopem -12V -> +12V) do jedničky.Pozor - tohle (-12V -> +12V) je přepnutí do log. 0. Možná ne pro tvou elektroniku, která je na to připojená, ale pro ten port určitě. http://rs232.hw.cz/#urovne
Ovšem rtscts mám vypnuté jak už mi zde radiliHardware vs. Software Flow Control
If feasible, it's best to use "hardware" flow control that uses two dedicated "modem control" wires to send the "stop" and "start" signals. Hardware flow control at the serial port works like this: The two pins, RTS (Request to send) and CTS (Clear to send) are used. When the computer is ready to receive date it asserts RTS by putting a positive voltage on the RTS pin (meaning "Request To Send to me").
... snip if (init_hw) { 176 /* 177 * Initialise the hardware port settings. 178 */ 179 uart_change_speed(state, NULL); 180 181 /* 182 * Setup the RTS and DTR signals once the 183 * port is open and ready to respond. 184 */ 185 if (info->tty->termios->c_cflag & CBAUD) 186 uart_set_mctrl(port, TIOCM_RTS | TIOCM_DTR); 187 } ... endsnipJe to kousek souboru drivers/serial/serial_core.c, funkce uart_startup (ta je volána z uart_open tuším) . A vypadá to, podle těch posledních dvou řádků, že za nějakých podmínek (ten if) se skutečně nahodí RTS a DTR. Tudíž by to asi chtělo ten druhý řádek uart_set_mctrl zakomentovat a přeložit jádro a vyzkoušet co to bude dělat.
Ono těch serial driverů je totiž v kernelu více, takže jsi(jsme) sice zakomentoval správný řádek, ale u jiného driveru.AFAIK se to, co je v serial_core, používá pro všechna sériová zařízení, protože je to nezávislé na hardwaru. Což ale nevylučuje ten zbytek věty, tj.:
a možná je to (to nahození RTS) ještě někde jinde
... if (up->port.flags & UPF_FOURPORT) { serial_outp(up, UART_MCR, UART_MCR_DTR | UART_MCR_RTS); } else { serial_outp(up, UART_MCR, UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2); } ...Zkusil bych z toho vyházet ty UART_MCR_RTS, tudíž poté by ten kousek kódu vypadal takhle:
... if (up->port.flags & UPF_FOURPORT) { serial_outp(up, UART_MCR, UART_MCR_DTR); } else { serial_outp(up, UART_MCR, UART_MCR_DTR | UART_MCR_OUT2); } ...Tento driver je tuším pro klasické porty na motherboardu (čipy 8250/16550 atd.). Ovšem oni si při vlezení do té funkce uloží stav těch DTR,RTS (celý ten stavový registr) a po výlezu ten uložený stav zase vrátí, takže to nastavení RTS musí trvat strašně malou dobu. Ale koukal jsem například do zdrojáku ovladače pro sériové karty Moxa (drivers/char/mxser.c) a tam to RTS nahazují ve funkci mxser_startup() taky, takže je to skutečně nějaká (blbá) featůra kernelu. Nezbude nic jiného a na kabel si dát nějaký přepínač kterým se ta RTS linka přeruší.
Zkrátka je mi líto nutit vás lítat do jader, když si vinou Linuxu nejsem moc jist.O to nejde, já se do toho jádra rád podívám , protože v naší firmě taky používáme sériový port na různé komunikace, tak mě to zajímalo - abych pak nebyl překvapen . Ale jak jsem psal výše, po studiu lowlevel ovladačů v jádře (8250.c a mxser.c) je vidět že se to RTS běžně nahazuje při inicializaci (a možná i po otevření portu) a jak psal kolega trekker.dk je to asi dobře, ačkoliv já si myslím, že pokud nechci řízení toku RTS/CTS tak by se ta linka RTS měla nechat při otevření portu napokoji . Je tedy lepší počítat s tím v hw/sw toho protějšku se kterým člověk komunikuje pomocí seriového portu, a/nebo si prolézt ty zdrojáky jádra a ty aktivace RTS při inicializaci (nebo otevření) portu vyházet.
Tudíž by to asi chtělo ten druhý řádek uart_set_mctrl zakomentovat a přeložit jádro a vyzkoušet co to bude dělat.Tudíž by to chtělo zakomentovat oba řádky, neb je to podmínka...
if (neco) { prikaz; }ale ta jednořádková podmínka. Takže tazatel to pochopil, jak se to má zakomentovat .
Python 2.5.1 (r251:54863, May 1 2007, 17:47:05) [MSC v.1310 32 bit (Intel)] Type "help", "copyright", "credits" or "license" for more information. >>> import serial >>> port = serial.Serial("COM1") >>> port._rtsState 1 >>> port.setRTS(0) >>> port._rtsState 0 >>> port.open() >>> port._baudrate 9600 >>> port.bytesize 8 >>> port._rtsState 1 >>> port.setRtsCts(0) >>> port._rtsState 1 >>> port.setRTS(0) >>> port._rtsState 0 >>>z něhož je vidět že to RTS nahazují i Windows. Dokonce když se ještě před voláním open to RTS shodí, tak po zavolání open a po vypnutí hw řízení toku dat ( setRtsCts(0) )je opět aktivní a musí se shodit. Ale skusím ještě jeden pokus ve Visual Basicu 6 (no moc se nesmějte )
port = serial.Serial("COM1")
(ale vyzkoušel jsem ji jen ve Windows). Jinak ale musím souhlasit s trekkerem.dk protože ten HW by měl být navržen trošku jinak, tohle je haluz.
Tiskni Sdílej: