Форум программистов, компьютерный форум, киберфорум
Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61

Работа с ком портами в Linux

30.10.2024, 12:03. Показов 3136. Ответов 36

Студворк — интернет-сервис помощи студентам
Всем доброго суток!
Помогите разобраться с ком портами под линуксом.
Вручили мне промышленный ПК (https://icp-das.ru/product/lp-... p921078293).
Понадобилось подключить устройство через usb-serial(RS232). При подключении этого конвертера в системе происходит непонятное переназначение портов и при выключении конвертера у меня отваливается родной ком порт промышленного ПК.
Выглядит всё это так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@icpdas:~# dmesg | grep tty
[    0.000000] Kernel command line: console=ttymxc3,115200 root=/dev/mmcblk0p2 rootwait rw no_console_suspend net.ifnames=0 biosdevname=0
[    0.169855] 30860000.serial: ttymxc0 at MMIO 0x30860000 (irq = 31, base_baud = 5000000) is a IMX
[    0.170310] 30880000.serial: ttymxc2 at MMIO 0x30880000 (irq = 32, base_baud = 1500000) is a IMX
[    0.170722] 30890000.serial: ttymxc1 at MMIO 0x30890000 (irq = 33, base_baud = 1500000) is a IMX
[    0.171140] 30a60000.serial: ttymxc3 at MMIO 0x30a60000 (irq = 38, base_baud = 1500000) is a IMX
[    1.262598] printk: console [ttymxc3] enabled
[    4.390352] systemd[1]: system-getty.slice: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
[    4.413159] systemd[1]: Created slice system-getty.slice.
[    4.472404] systemd[1]: Created slice system-serial\x2dgetty.slice.
[    5.039218] usb 2-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
[    5.257301] usb 2-1.2.2: FTDI USB Serial Device converter now attached to ttyUSB1
[    5.496240] usb 2-1.2.3: FTDI USB Serial Device converter now attached to ttyUSB2
[    5.701323] usb 2-1.2.4: FTDI USB Serial Device converter now attached to ttyUSB3
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
root@icpdas:~# ls -lha /dev/tty*
crw-rw-rw- 1 root tty       5,  0 Oct 30 16:01 /dev/tty
crw--w---- 1 root tty       4,  0 Oct 30 16:01 /dev/tty0
crw--w---- 1 root tty       4,  1 Oct 30 16:01 /dev/tty1
crw--w---- 1 root tty       4, 10 Oct 30 16:01 /dev/tty10
crw--w---- 1 root tty       4, 11 Oct 30 16:01 /dev/tty11
crw--w---- 1 root tty       4, 12 Oct 30 16:01 /dev/tty12
crw--w---- 1 root tty       4, 13 Oct 30 16:01 /dev/tty13
crw--w---- 1 root tty       4, 14 Oct 30 16:01 /dev/tty14
crw--w---- 1 root tty       4, 15 Oct 30 16:01 /dev/tty15
crw--w---- 1 root tty       4, 16 Oct 30 16:01 /dev/tty16
crw--w---- 1 root tty       4, 17 Oct 30 16:01 /dev/tty17
crw--w---- 1 root tty       4, 18 Oct 30 16:01 /dev/tty18
crw--w---- 1 root tty       4, 19 Oct 30 16:01 /dev/tty19
crw--w---- 1 root tty       4,  2 Oct 30 16:01 /dev/tty2
crw--w---- 1 root tty       4, 20 Oct 30 16:01 /dev/tty20
crw--w---- 1 root tty       4, 21 Oct 30 16:01 /dev/tty21
crw--w---- 1 root tty       4, 22 Oct 30 16:01 /dev/tty22
crw--w---- 1 root tty       4, 23 Oct 30 16:01 /dev/tty23
crw--w---- 1 root tty       4, 24 Oct 30 16:01 /dev/tty24
crw--w---- 1 root tty       4, 25 Oct 30 16:01 /dev/tty25
crw--w---- 1 root tty       4, 26 Oct 30 16:01 /dev/tty26
crw--w---- 1 root tty       4, 27 Oct 30 16:01 /dev/tty27
crw--w---- 1 root tty       4, 28 Oct 30 16:01 /dev/tty28
crw--w---- 1 root tty       4, 29 Oct 30 16:01 /dev/tty29
crw--w---- 1 root tty       4,  3 Oct 30 16:01 /dev/tty3
crw--w---- 1 root tty       4, 30 Oct 30 16:01 /dev/tty30
crw--w---- 1 root tty       4, 31 Oct 30 16:01 /dev/tty31
crw--w---- 1 root tty       4, 32 Oct 30 16:01 /dev/tty32
crw--w---- 1 root tty       4, 33 Oct 30 16:01 /dev/tty33
crw--w---- 1 root tty       4, 34 Oct 30 16:01 /dev/tty34
crw--w---- 1 root tty       4, 35 Oct 30 16:01 /dev/tty35
crw--w---- 1 root tty       4, 36 Oct 30 16:01 /dev/tty36
crw--w---- 1 root tty       4, 37 Oct 30 16:01 /dev/tty37
crw--w---- 1 root tty       4, 38 Oct 30 16:01 /dev/tty38
crw--w---- 1 root tty       4, 39 Oct 30 16:01 /dev/tty39
crw--w---- 1 root tty       4,  4 Oct 30 16:01 /dev/tty4
crw--w---- 1 root tty       4, 40 Oct 30 16:01 /dev/tty40
crw--w---- 1 root tty       4, 41 Oct 30 16:01 /dev/tty41
crw--w---- 1 root tty       4, 42 Oct 30 16:01 /dev/tty42
crw--w---- 1 root tty       4, 43 Oct 30 16:01 /dev/tty43
crw--w---- 1 root tty       4, 44 Oct 30 16:01 /dev/tty44
crw--w---- 1 root tty       4, 45 Oct 30 16:01 /dev/tty45
crw--w---- 1 root tty       4, 46 Oct 30 16:01 /dev/tty46
crw--w---- 1 root tty       4, 47 Oct 30 16:01 /dev/tty47
crw--w---- 1 root tty       4, 48 Oct 30 16:01 /dev/tty48
crw--w---- 1 root tty       4, 49 Oct 30 16:01 /dev/tty49
crw--w---- 1 root tty       4,  5 Oct 30 16:01 /dev/tty5
crw--w---- 1 root tty       4, 50 Oct 30 16:01 /dev/tty50
crw--w---- 1 root tty       4, 51 Oct 30 16:01 /dev/tty51
crw--w---- 1 root tty       4, 52 Oct 30 16:01 /dev/tty52
crw--w---- 1 root tty       4, 53 Oct 30 16:01 /dev/tty53
crw--w---- 1 root tty       4, 54 Oct 30 16:01 /dev/tty54
crw--w---- 1 root tty       4, 55 Oct 30 16:01 /dev/tty55
crw--w---- 1 root tty       4, 56 Oct 30 16:01 /dev/tty56
crw--w---- 1 root tty       4, 57 Oct 30 16:01 /dev/tty57
crw--w---- 1 root tty       4, 58 Oct 30 16:01 /dev/tty58
crw--w---- 1 root tty       4, 59 Oct 30 16:01 /dev/tty59
crw--w---- 1 root tty       4,  6 Oct 30 16:01 /dev/tty6
crw--w---- 1 root tty       4, 60 Oct 30 16:01 /dev/tty60
crw--w---- 1 root tty       4, 61 Oct 30 16:01 /dev/tty61
crw--w---- 1 root tty       4, 62 Oct 30 16:01 /dev/tty62
crw--w---- 1 root tty       4, 63 Oct 30 16:01 /dev/tty63
crw--w---- 1 root tty       4,  7 Oct 30 16:01 /dev/tty7
crw--w---- 1 root tty       4,  8 Oct 30 16:01 /dev/tty8
crw--w---- 1 root tty       4,  9 Oct 30 16:01 /dev/tty9
crw-rw---- 1 root dialout 207, 16 Oct 30 16:01 /dev/ttymxc0
crw-rw---- 1 root dialout 207, 17 Oct 30 16:01 /dev/ttymxc1
crw-rw---- 1 root dialout 207, 18 Oct 30 16:01 /dev/ttymxc2
crw--w---- 1 root tty     207, 19 Oct 30 16:01 /dev/ttymxc3
lrwxrwxrwx 1 root root         12 Oct 30 16:01 /dev/ttyO2 -> /dev/ttyUSB2
lrwxrwxrwx 1 root root         12 Oct 30 16:01 /dev/ttyO4 -> /dev/ttyUSB0
lrwxrwxrwx 1 root root         12 Oct 30 16:01 /dev/ttyO5 -> /dev/ttymxc1
crw------- 1 root root      3,  0 Oct 30 16:01 /dev/ttyp0
crw------- 1 root root      3,  1 Oct 30 16:01 /dev/ttyp1
crw------- 1 root root      3,  2 Oct 30 16:01 /dev/ttyp2
crw------- 1 root root      3,  3 Oct 30 16:01 /dev/ttyp3
crw------- 1 root root      3,  4 Oct 30 16:01 /dev/ttyp4
crw------- 1 root root      3,  5 Oct 30 16:01 /dev/ttyp5
crw------- 1 root root      3,  6 Oct 30 16:01 /dev/ttyp6
crw------- 1 root root      3,  7 Oct 30 16:01 /dev/ttyp7
crw------- 1 root root      3,  8 Oct 30 16:01 /dev/ttyp8
crw------- 1 root root      3,  9 Oct 30 16:01 /dev/ttyp9
crw------- 1 root root      3, 10 Oct 30 16:01 /dev/ttypa
crw------- 1 root root      3, 11 Oct 30 16:01 /dev/ttypb
crw------- 1 root root      3, 12 Oct 30 16:01 /dev/ttypc
crw------- 1 root root      3, 13 Oct 30 16:01 /dev/ttypd
crw------- 1 root root      3, 14 Oct 30 16:01 /dev/ttype
crw------- 1 root root      3, 15 Oct 30 16:01 /dev/ttypf
crw-rw---- 1 root dialout 188,  0 Oct 30 16:01 /dev/ttyUSB0
crw-rw---- 1 root dialout 188,  1 Oct 30 16:01 /dev/ttyUSB1
crw-rw---- 1 root dialout 188,  2 Oct 30 16:01 /dev/ttyUSB2
crw-rw---- 1 root dialout 188,  3 Oct 30 16:01 /dev/ttyUSB3
[ 5.039218] usb 2-1.4: FTDI USB Serial Device converter now attached to ttyUSB0 - этой мой конвертер, который я втыкаю в USB. При загрузке системы с воткнутым конвертером, он почему-то смещает все порты ПК и становится USB0. Когда я вынимаю конвертер, то отваливается /dev/ttyO4(приложил скриншот, красным выделено).
Я почитал, что можно создать правила для устройства, заглянул в документацию FTDI с примерами таких правил(https://ftdichip.com/wp-conten... -Linux.pdf), но ничего не меняется.
Добавил вот это правило:
Code
1
2
3
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", SUBSYSTEMS=="usb",
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
ATTRS{serial}=="LT66XJVA",SYMLINK+="ttyUSB-F232" GROUP="ray" MODE="0666"
Поменял только GROUP="ray" на GROUP="dialout".

Создавал правило по пути "/etc/udev/rules.d/99-usbftdi.rules".
Далее использовал и горячую перезагрузку модуля такими командами:

Code
1
udevadm control --reload-rules && udevadm trigger
или
Code
1
udevadm control --reload-rules ; udevadm trigger
или
Code
1
sudo service udev restart
И перезагружал ПК...

Никакого результата.
Миниатюры
Работа с ком портами в Linux  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2024, 12:03
Ответы с готовыми решениями:

Асинхронная работа с ком-портами
Здравствуйте, Имеется туча устройств соединенных с ПК по RS-232, RS-485. Физически каждое устройство на своем ком-порте. Необходимо...

Работа с виртуальными ком-портами
Здравствуйте. Подкинули мне задачу... Есть usb-хаб, к нему предполагается подсоединять различные устройства. От меня требуется узнать...

Найдите передаточную функцию схемы при R1=20 кОм, R2=20 кОм, С=10 МкФ
Найдите передаточную функцию схемы при R1=20 кОм, R2=20 кОм, С=10 МкФ.

36
Windows must die
613 / 885 / 105
Регистрация: 23.11.2021
Сообщений: 5,196
Записей в блоге: 19
19.11.2024, 10:03
Студворк — интернет-сервис помощи студентам
Еще как вариант - ТС повторно пытается открыть уже открытое в "привилегированном режиме" устройство…
0
1510 / 527 / 76
Регистрация: 22.09.2023
Сообщений: 1,674
19.11.2024, 10:12
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Еще как вариант - ТС повторно пытается открыть
Где вы это нашли в вопросе?
Цитата Сообщение от uswer312 Посмотреть сообщение
Эти порты получают номера:
...
Потом идёт конфигурация ком портов и захожу в бесконечный цикл.
Где тут сказано про повторное открытие???
0
Windows must die
613 / 885 / 105
Регистрация: 23.11.2021
Сообщений: 5,196
Записей в блоге: 19
19.11.2024, 10:30
Цитата Сообщение от Dushevny Посмотреть сообщение
Где вы это нашли в вопросе?
Ну, как обычно - если данных не дают, начинается гадание на кофейной гуще.
Вот мы и перечислили возможные варианты, почему файловый дескриптор внезапно в нуль превращается.
Вообще, в случае ошибки открывания fd, там должна быть -1 и соответствующее errno. Но если сильно постараться, можно и нуль ☺
Цитата Сообщение от uswer312 Посмотреть сообщение
Никакого переназначения этим переменным я не делаю.
"Сами по себе" они в нуль превратиться не могут. Всякие функции open/write принимают копию дескриптора, а не ссылку на него, то бишь поменять ничего не могут. Если устройство вдруг "отвалилось", то функции read/write вернут -1 с соответствующим errno. Поменять значение fd стандартная библиотека никак не может, это - заслуга погромиста.
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
19.11.2024, 10:42  [ТС]
Цитата Сообщение от Dushevny Посмотреть сообщение
Порты тут совершенно не при чем.
Да, вы правы, не так выразился.

Весь листинг предоставить не могу, в общих чертах получается так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// C library headers
#include <stdio.h>
#include <string.h>
 
// Linux headers
#include <fcntl.h> // Contains file controls like O_RDWR
#include <errno.h> // Error integer and strerror() function
#include <termios.h> // Contains POSIX terminal control definitions
#include <unistd.h> // write(), read(), close()
 
#include <sys/ioctl.h>
 
#include <stdint.h>
 
#include <poll.h>
 
/*************************************************************************/
 
volatile int sp485, sp232, xp232, xv306;
 
int DPA_request(int port, uint8_t *cmd, uint8_t *buffer, int tot)
{
    struct pollfd mypoll = { 0 };
    uint8_t rx_buffer[8192] = { 0 };
    int ptr = 0;
    int timeout;
    int ret = 0;
 
    timeout = tot;
    mypoll.fd = port;
    mypoll.events = POLLIN;
    //mypoll.revents = 0;   /* Сброс событий пула */
 
    ioctl(port, TCFLSH, TCIOFLUSH); /* Чистим аппаратные буфера в порту, из аргумента...*/
    write(port, cmd, 24);
    tcdrain(port);
    timeout = 260;
    while (1)
    {
        ret = poll(&mypoll, 1, timeout);    /* Заряжаем пул */
        if (ret == -1)
        {
            return -1;
        }
        else if (ret == 0)
        {
            if (ptr > 0) memcpy(&buffer[0], &rx_buffer[0], (size_t)ptr);
            return ptr;
        }
        else
        {
            if (mypoll.revents & POLLIN)
            {
                //mypoll.revents = 0;
                ptr += (int)read(port, &rx_buffer[ptr], 16);
                timeout = 24;
            }
        }
    }
    return -1;
}
 
//подобные DPA_request функции 
 
int main()
{
    struct termios ttyO2, ttyO4, ttymxc2, ttyUSB3;
 
    sp485 = open("/dev/ttyUSB3", O_RDWR | FNDELAY | O_NONBLOCK);    //нитка
 
    xp232 = open("/dev/ttyUSB0", O_RDWR | FNDELAY | O_NONBLOCK);    //рентген
 
    xv306 = open("/dev/ttymxc2", O_RDWR | FNDELAY | O_NONBLOCK);    //XV board
 
    sp232 = open("/dev/ttyUSB1", O_RDWR | FNDELAY | O_NONBLOCK);    //спектрометр
    
#pragma region config COM's
 
    конфигурация ком портов 
    
#pragma region MyRegion
 
    for (;;)
    {
        //бесконечка в которой я прыгаю по switch/case и вызываю DPA_request и подобное
    }
    return 0; // success
}
Объявил в самом начале, присвоил значение в майне один раз. Каким образом затирает я ума не приложу. Может быть, потому что объявил глобально, а нужно локально в майне?
0
1510 / 527 / 76
Регистрация: 22.09.2023
Сообщений: 1,674
19.11.2024, 10:58
Цитата Сообщение от uswer312 Посмотреть сообщение
Может быть, потому что объявил глобально, а нужно локально в майне?
Этим вы заметете мусор под ковер. Эти переменные перестанут портиться, начнут портиться другие. Перед этими переменными объявлены какие-то массивы? Если да - смотрите работу с ними. Объявите перед этими переменными достаточно большой массив, заполните его какой-нибудь константой и наблюдайте за ним в процессе выполнения программы. А еще проще - поставить в отладчике точку останова на запись в эту переменную.
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
19.11.2024, 11:31  [ТС]
Цитата Сообщение от Dushevny Посмотреть сообщение
Перед этими переменными объявлены какие-то массивы?
Эти переменные идут самыми первыми, после них уже идут структуры, массивы и юнионы.

Цитата Сообщение от Dushevny Посмотреть сообщение
А еще проще - поставить в отладчике точку останова на запись в эту переменную.
Ставил и присваиваются значения:
Code
1
2
3
4
sp485 = 3
xp232 = 4
xv306 = 5
sp232 = 6
А потом залетаю в бесконечный цикл и, соответственно, на точку останова уже никогда не попаду.
0
1510 / 527 / 76
Регистрация: 22.09.2023
Сообщений: 1,674
19.11.2024, 11:42
Цитата Сообщение от uswer312 Посмотреть сообщение
А потом залетаю в бесконечный цикл и, соответственно, на точку останова уже никогда не попаду.
Попадете, когда переменной будет неведомым пока образом присвоен ноль, который
Цитата Сообщение от uswer312 Посмотреть сообщение
В какой-то момент начинает туда лететь 0
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
19.11.2024, 11:45  [ТС]
Цитата Сообщение от Dushevny Посмотреть сообщение
Попадете
Типа происходит какой-то reset и маин по новой вызывается?
0
1510 / 527 / 76
Регистрация: 22.09.2023
Сообщений: 1,674
19.11.2024, 12:51
Цитата Сообщение от uswer312 Посмотреть сообщение
Типа происходит какой-то reset и маин по новой вызывается?
Нет Какая-то запись по указателю или за пределы массива попадает в эту переменную.
0
 Аватар для volodin661
7160 / 2329 / 353
Регистрация: 10.12.2013
Сообщений: 8,063
19.11.2024, 14:51
я правильно понимаю, что обсуждаемый 'SDK' - это какая-то прослойка для
реализации кросс-платформ ( Linux, Windows, MacOS[?] ) WEB-интерфейса к данному устройству ?
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
20.11.2024, 04:05  [ТС]
volodin661, чистый СИ в виде консольного приложения которое работает только под линуксом.

Добавлено через 1 минуту
Dushevny, в общем, не знаю почему, но решение нашло само себя в простом варианте. Я перенёс переменные
C
1
volatile int sp485, sp232, xp232, xv306;
из глобальных в локальные в main и всё поехало.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
20.11.2024, 04:10
Цитата Сообщение от uswer312 Посмотреть сообщение
ptr += (int)read(port, &rx_buffer[ptr], 16);
Тут надо бы код возврата проверить - может -1 вернуть...

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
man 2 read
...
 
RETURN VALUE
       On  success,  the  number of bytes read is returned (zero indicates end of file), and the file position is ad‐
       vanced by this number.  It is not an error if this number is smaller than the number of bytes requested;  this
       may  happen  for  example because fewer bytes are actually available right now (maybe because we were close to
       end-of-file, or because we are reading from a pipe, or from a terminal), or because read() was interrupted  by
       a signal.  See also NOTES.
 
       On  error,  -1  is  returned,  and  errno  is set to indicate the error.  In this case, it is left unspecified
       whether the file position (if any) changes.
 
...
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
20.11.2024, 04:43  [ТС]
Max Dark, в этом моменте всегда больше нуля либо ноль.
0
1153 / 406 / 89
Регистрация: 30.08.2017
Сообщений: 2,499
20.11.2024, 08:09
volatile int. Отстал я от жизни, а зачем именно так объявлять переменные? Какая потребность?
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
20.11.2024, 08:14  [ТС]
_sg2, чтобы компилятор следил за ними более серьёзно.
0
1153 / 406 / 89
Регистрация: 30.08.2017
Сообщений: 2,499
20.11.2024, 11:12
Чегось мне кажется, что если такое объявление убрать, то с глобальными переменными всё заработало. Но это из области "вредных советов", т.к. давно я не брал в руки С.
0
1 / 1 / 0
Регистрация: 14.08.2017
Сообщений: 61
20.11.2024, 11:15  [ТС]
Пробовал, что так, что так, результат был необъяснимым.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2024, 11:15

Работа с COM-портами.
Необходимо написать программу, получающую время с ком-порта (вообще не представляю как это сделать) и устанавливающая это время на...

работа с портами
Контролер ЕЛТ имеет порт адреса 3д4 в который записывает номер регистра элт которому будет выдаваться управляюший код в контроллере порт...

Работа с портами
Добрый день. Стоит задача дипломного проекта - сканирование портов локальных пк. Вроде бы нашел код : function Thread.PortCheck(var...

Работа с COM портами
Здравствуйте...Хочу через ком порты подключить два ардуино мега.Первый для передачи данных второй для приёма. С одним ардуино всё...

Работа с COM портами
Здравствуйте. Символ вводимый с клавиатуры записывается в com1 затем из com1 в com2 и выводится на экран. Заранее благодарен.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru