Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35

Windows 11 тормозит обмены через СОМ-порт

06.05.2024, 13:36. Показов 5797. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, коллеги.

Столкнулся с проблемкой, вынесенной в название темы.

Есть приложение. написанное много лет назад на Delphi 7, и без вопросов работавшее на многих ПК с Windows XP и Windows 7. Приложение через СОМ порт (компонент BComPort) посылает запрос контроллеру, контроллер, приняв пакет, отвечает, приложение, приняв ответ, посылает новый запрос (или не приняв ответ, посылает запрос по таймеру). Все просто и отлажено в десятках приложений/устройств.

И вот эта отлаженная пара (приложение - контроллер) отказывается нормально работать по Windows 11 - существенно падает скорость обмена (со 120 до 40-50 обмен/с) и в обменах наблюдаются паузы до 0.5 с, что недопустимо. Причем сразу после запуска приложения показывает скорость 120 обмен/с, но через пару секунд скорость падает до 40, затем повышается до 60, снова падает и т.д.

Т.к. предположили, что проблема в новой (для нас) ОС, то отключили антивирусы, One Drive, пробовали режимы совместимости в разными ОС, устанавливали приоритет real_time, и пр. Существенного изменения скорости и непрерывности обмена получить не удалось.

Соответственно вопрос: как настроить Windows 11 под работу в режиме real_time?

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2024, 13:36
Ответы с готовыми решениями:

Примеры использования Async Free (СОМ-порт) или Async Pro (СОМ-порт)
Здравствуйте! Скажите пожалуйста есть пример где используют Async Free (СОМ-порт) или Async Pro (СОМ-порт)? почему то не могу найти и...

управление через СОМ порт
Как сдельть сигнал на RTS,DTR по нажатию BUTTON1и2 соответственно. Причём при их отпускании сигналы должны обнульться! Кто шарит в этом?!

Обмен данными через СОМ-порт
Помогите новичку, пожалуйста) Нужно написать программу, которая ловит нажатия клавиш(стрелок) и соответственно отправляет это все через...

85
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
09.05.2024, 08:25
Студворк — интернет-сервис помощи студентам
ay007, так чтоб проще - давай КРУПНЫЕ фотки платы состороны чипа, жопы, и крупное фото чипа.

northener, да на событиях. компорт вобще сам в себе. читает пишет. тока флаги выставляет. поток отслеживает это и заполняет структуру. выставляя соответствующее событие. ну и обращение: read/writefile

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function TBComPort.ReadAsync(var Buffer; Count: Integer; var AsyncPtr: PAsync): Integer;
var
  Success: Boolean;
  BytesTrans: DWORD;
begin
  if AsyncPtr = nil then
    raise EComPort.Create(CEMess[5]);
  AsyncPtr^.Kind := okRead;
  Success := ReadFile(FHandle, Buffer, Count, BytesTrans, @AsyncPtr^.Overlapped)
    or (GetLastError = ERROR_IO_PENDING);
  if not Success then
    raise EComPort.Create(CEMess[4]);
  Result := BytesTrans;
end;
Добавлено через 45 минут
попробуй это вроде не далеко отошел от BCom.

https://github.com/CWBudde/Com... ree/master

ставил 10.3 поставилось нормально. на виртуальных сом-ах нульмодемом пашет. есть также и компонент для мониторинга. вобщем почитай. на железе проверить пока негде.

правда система после установки виртуальных портов так ностальжЫ от Пласидо Доминга завывать начала, что у соседнем курятнике, у коровах молоко нахрен поскисало....
0
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
09.05.2024, 08:42  [ТС]
Коллеги, почему вы концентрируетесь на железе, но не на ОС? Ведь скорость обмена очень сильно нестабильна: то 120 об/с, то 40 об/с. Может все-таки ОС по какой-то причине тормозит работу приложения? Типа, чтобы экономить энергию или снизить температуру процессора.

На другой машине под Win 7 когда запускаешь программу с обменом через СОМ порт, построенным по такому же принципу, сразу слышишь как вентилятор процессора начинает работать существенно интенсивней.
0
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
09.05.2024, 09:19
потому что COM это ИНТЕРФЕЙС. и роботоспособность платы СИЛЬНО зависит от чипа который вы купили. есть полноценные а есть х.... предназначеная для мелких пакетов типа барреадеров И ДРОВАМ написЯными криворукими.

еще раз спрашиваю ВЫ НА НОВОЙ МАШИНЕ 7 СТАВИЛИ, ПРОВЕРЯЛИ??? винтелятор жужит это не показатель. он нато и винтелятор.

уже попростому попросил. фото сделайте.

это как переходники comusb. есть на FTDI а есть на СР. первые для железа годятся. а вторые х.... которой тока в шнурках работать....

Б... задолбало прописные истины 15-й год обьяснять.....

Жду фото. ну или хотябы марку платы....
0
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
09.05.2024, 14:31
Цитата Сообщение от ay007 Посмотреть сообщение
почему вы концентрируетесь на железе, но не на ОС?
Так ведь, железо сменилось? Или плата контроллера COM-порта переехала со старого на новый комп? Попробуй плату со старого компа поставить. Если для платы используется свой драйвер, то нужно попробовать его обновить/поискать работающий нормально.
0
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
09.05.2024, 14:41  [ТС]
Пожалуйста.

Устанавливать семерку на обсуждаемый ПК не пробовали, люди, которые покупали комп и устанавливали ОС утверждают, что это невозможно (технически или из-за политики IT службы не знаю).

И да, новый комп с новой платой.
Миниатюры
Windows 11 тормозит обмены через СОМ-порт   Windows 11 тормозит обмены через СОМ-порт   Windows 11 тормозит обмены через СОМ-порт  

0
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
09.05.2024, 14:45  [ТС]
П.С. Получается, что я в компы уже лет пять не забирался, сфера деятельности/интересов немного изменилась, ранее разработанное и отлаженное работало без вопросов.. Приходится вспоминать..
0
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
09.05.2024, 17:03
Итак коллега. плата более менее чесная.( правда вариант не ахти). а вот с дровами...... явно чтото не донастроили=доставили.

это пдф на чип
CH382DS0.PDF

это дрова
CH38XDRV.ZIP

твое DRV_2S. как прикручивать думаю поймешь. желательно принудительно и ручками. есть даже хелп правда китаезный. но у нас есть гугл.... ))) сразу - вынь 11 нету. а вот на 10 аж два.

ПРЕДУПРЕЖДЕНИЕ если не электронщик - конфигуратор щупай очень осторожно.

как я понял вариант с вЫнь7 невозможен по технЫчнЫм причинам.

если не выйдет есть другой вариант решения - тоже рабочий. и проверенный.

ну об этом потом.
1
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
09.05.2024, 17:05
зыбыл урл на сайт разрабов чипа.
https://wch-ic.com/downloads/CH382DS0_PDF.html
1
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
09.05.2024, 18:10  [ТС]
Спасибо. Вроде //WIN 10&11&2016&2019 для Win 11. Попробую завтра.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.05.2024, 01:09
Цитата Сообщение от ay007 Посмотреть сообщение
Коллеги, почему вы концентрируетесь на железе, но не на ОС?
Лично я не концентрируюсь ни на железе, ни на ОС. Я только прошу вас показать ваш код работы с СОМ-портом через компонент TBComPort. Только видя этот код можно сказать что-то основанное не на догадках.
0
 Аватар для Beltar
839 / 453 / 39
Регистрация: 05.05.2022
Сообщений: 3,177
10.05.2024, 01:22
Если этот код ранее работал, то он правильный, по крайней мере, для той ОС под которой изначально тестировался. Если этот код работает не так, как от него ожидается на конкретном устройстве или конкретной ОС, то без знания таких особенностей по коду ничего понятно не будет.

А вообще, что мешает взять преобразователь USB<->RS-232 (оно потом не идет на какой-нибудь RS-485?) и проверить, как с ним будет? Я не вижу здесь никакого иного способа, кроме последовательного исключения виновника через замену оборудования и ОС.

Вообще ситуация, когда нельзя просто взять отдельный комп для тестов - это какая-то дикость. ИМХО у программиста просто обязан быть комп, которому в любой момент можно сделать format C и поставить нужную конфигурацию.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.05.2024, 02:43
Цитата Сообщение от Beltar Посмотреть сообщение
Если этот код ранее работал, то он правильный
Нет. Не так. Код ТС работал ранее, но он и сейчас работает. Только хуже чем ранее.
Скорее всего ТС использует синхронные методы компонента. Надеясь на то, что он выставил высокий приоритет. Ну так "отколется ему, как тому бздиловатому." (c) Роберт Хайнлайн. "Луна жестко стелет"
0
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
10.05.2024, 07:39
ну так фото и просил, чтобы выяснить что это не топовая плата от топового производителя - Выкиньнах.....

на тему СИНХР \ АСИНХ он так и не ответил.
вариант отключить старый винт и на НОВОМ поставить 7\10 тоже предложили.

вариант с FTDI я оставил на последок. если вариант с проверкой на новой системе - религия не позволяет.

НО очень похоже что чегото не доставили. толи на на плату толи на чипсет. возможно и такое, переставить дрова - нах надо они же в уже винде есть.......
0
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
10.05.2024, 10:27  [ТС]
Обмен осуществляется с тремя контроллерами, инициируется ПК. Первый байт пакета - адрес контроллера (бит паритета равен 0), несколько байт данных (бит паритета равен 1), которые повторяются два раза.

Обмен построен по следующему алгоритму:

1 По таймеру (20 мс) отсылается байт адреса очередного контроллера, формируется пакет данных и по событию, что байт адреса передан, отсылается пакет данных.

2 По приему адреса и пакета данных от запрашиваемого контроллера проверяется на соответствие адреса и данных, данные обрабатываются и вызывается событие OnTimer.

3 Если же контроллер не ответил, то через 20 мс будет запрошен следующий.

Delphi
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
Procedure TForm0.Port0RxChar(Sender:TObject; Count:integer); {П р и е м}
  Var i,j:integer; Label 20;
  Begin
    If Count=0 then Exit; Port0.Read(Buff,Count); For i:=1 to Count do ByteRx[i+NumRx]:=Buff[i]; NumRx:=NumRx+Count;
    Case Nom of
      0:Begin                                   {C o n t r o l l e r}
          If (NumRx<17) then Exit;
          UnitSos[Nom]:=1; If ByteRx[1]<>Nom+16 then GoTo 20;
          For i:=2 to 9 do If ByteRx[i]<>ByteRx[i+8] then GoTo 20; UnitSos[Nom]:=3;
          {Обработка}
        End;
      1:Begin                                   {P o w e r}
          If NumRx<13 then Exit; UnitSos[Nom]:=1; If ByteRx[1]<>Nom+16 then GoTo 20;
          For i:=2 to 7 do If ByteRx[i]<>ByteRx[i+6] then GoTo 20;
          {Обработка}
        End;
      2:Begin                                   {Gas}
          If NumRx<9 then Exit; UnitSos[Nom]:=1; If ByteRx[1]<>Nom+16 then GoTo 20;
          For i:=2 to 5 do If ByteRx[i]<>ByteRx[i+4] then GoTo 20; UnitSos[Nom]:=3; Buf:=1.25*(5*(256*ByteRx[3]+ByteRx[2])/65536);
          {Обработка}
        End;
    End;
    UnitSosInt[Nom]:=10;
20: Timer0Timer(Sender);
  End;
 
Procedure TForm0.Port0TxEmpty(Sender:TObject);  {Б у ф е р     п у с т}
  Begin If TimeForTx then Begin Port0.Parity:=paMark; Port0.Write(ByteTx,NumTx); TimeForTx:=false; End; End;
 
Procedure TForm0.Timer0Timer(Sender:TObject);   {T i m e r  0}
  Var i,j:integer;
  Begin
    If not Port0.Connected then Exit; Dec(UnitSosInt[Nom]); If UnitSosInt[Nom]<1 then Begin UnitSosInt[Nom]:=0; UnitSos[Nom]:=2; End;
    Inc(Nom); If Nom>2 then Nom:=0;
    Timer0.Interval:=0; Timer0.Interval:=20; ByteTx[1]:=16+Nom; NumRx:=0;
    Port0.Parity:=paSpace; Port0.Write(ByteTx,1); TimeForTx:=true;
    Case Nom of
       0:Begin
          {Формирование пакета}
          For i:=1 to 10 do ByteTx[i+10]:=ByteTx[i]; NumTx:=20;
        End;
 
      1:Begin                                         {P o w e r}
          {Формирование пакета}
          For i:=1 to 4 do ByteTx[i+4]:=ByteTx[i]; NumTx:=8;
        End;
 
      2:Begin                                         {G a s}
          {Формирование пакета}
          ByteTx[2]:=ByteTx[1]; NumTx:=2;
        End;
    End;
  End;
Добавлено через 6 минут
И да, по моему опыту USB преобразователи имеют невысокую помехоустойчивость на промплощадке и часто (для непрерывных технологических процессов) виснут.
0
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
10.05.2024, 11:46
Мдя что сказать....

это какже вы на технологии point to point(com) сделали Npoint to point.

программа похоже досталась по наследству... ибо goto....... да еще и времен 98 - 03. оригинал - Fortran
и всетаки RS485 > COM

правильные USBCOM живут нормально - проверено на заводах. главное чтобы хотябы +\- 9 Вольт выполнялось. со стороны железки.

И главное 20мс это времен ХР. 7 както еще вытягивала. есть такая весчь тик системы в 7 - 25мс 10 - уже 50мс как что влезло в список первочередных обработок.... сам черт знает. что в 11 напихано - даже в ОЧЕНЬ СТРАШНОМ СНЕ типа кошмара на улице вязов. в пятницу и синансе в 24:00 - нужно умножить на 10.

И ВСЕТАКИ ВОЗМИТЕ ВИНТ СТАВТЕ 10. ВЕШАЕТЕ ВСЕ ДРОВА (А НЕ УМОЛЧАНИЕ ВИНДЫ). СТАВИТЕ ДРОВА НА ПЛАТУ.
И ПО РЕЗУЛЬТАТУ - РЕШЕНИЕ.

и рекомендую почитать чем отличается RTS ot RTOS.
0
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
10.05.2024, 12:19  [ТС]
Если по наследству, то от меня же конца прошлого века.

И если по Вашей оценке программа дремуча и пр. то расскажите, пожалуйста, как бы Вы с т.з. сегодняшнего дня реализовали программное управление технологической установкой, со скоростью обмена 100 об/с, пакеты 10 - 20 байт, перерывы не приветствуются, ОС - Win 11?

Если получится, то без эмоций и со ссылкой на пример кода.

И, к сожалению, на нашем предприятии одни специалисты обеспечивают производство ПК и отвечают за политику в сфере лицензионного обеспечения ОС и компьютерную безопасность, а другие вынуждены подлаживать имеющееся ПО под новые ОС. Сам бы я с ХР никуда не уходил.

Соответственно накатывать Win 10 - путь в никуда, потребуется замена следующего ПК, снова принесут с 11-й, затем с 12-й и т.д.
0
Модератор
4150 / 2360 / 813
Регистрация: 15.11.2015
Сообщений: 9,489
10.05.2024, 12:22
Цитата Сообщение от ay007 Посмотреть сообщение
Timer0.Interval:=0; Timer0.Interval:=20;
В Windows 7 в том числе, это даст интервал порядка 31 мс, и порядка 32-33 срабатываний таймера в секунду.
И в чём смысл перезапуска таймера каждое его срабатывание?
0
 Аватар для Beltar
839 / 453 / 39
Регистрация: 05.05.2022
Сообщений: 3,177
10.05.2024, 12:38
Цитата Сообщение от ay007 Посмотреть сообщение
как бы Вы с т.з. сегодняшнего дня реализовали программное управление технологической установкой, со скоростью обмена 100 об/с, пакеты 10 - 20 байт
Вы говорили про 20 мс период.
Я бы при таких таймерах, скорее всего, слал не по таймеру, а по факту приема или таймаута. Но тут начинает попахивать уже высокоточными таймерами для графических движков.

Цитата Сообщение от ay007 Посмотреть сообщение
Сам бы я с ХР никуда не уходил.
У меня вот накрылась вирусом система с Win2k Server из-за невозможности поставить на этого мамонта антивирус. Пришлось на 7-ку переходить.

Насчет переключения четности для адресации, и оборудования, то у меня в системе точно так же, но у меня в комп воткнут USB<->RS-485 адаптер напрямую и с ним такой финт работает на отлично, и вообще вещь, реализующая отправку и прием одним пакетом. Вот только стоило взять комбинацию из RS-232 во внешний преобразователь RS-485, то отвечать перестало, т. к. стала нужна задержка м\у посылками. А какие сюрпризы с железом могут быть у вас...
1
62 / 42 / 3
Регистрация: 04.01.2019
Сообщений: 278
10.05.2024, 13:22
ay007,
Цитата Сообщение от ay007 Посмотреть сообщение
накатывать Win 10 - путь в никуда
это не путь в некуда - а выяснение или усе пизд... ОКОНЧАТЕЛЬНО приплыи коники с системой.

А современная и древняя ПРАВИЛЬНАЯ система 2 уровня безопасности в пром аппаратуре - QNX. дорого но как говорится....

второй вариант подсказал Beltar, выкинуть все промежуточное.

третий на одноплатнике типа малины с сетевой потдержкой делается сервер который благополучно собирает данные с нужным интервалом. а винда забирает буфер из N пакетов. ЧЕРЕЗ СЕТЬ. принцип FIFO или невеб.... обьем памяти суток на 5. пофигу.

И как бы печально не было, но - не надо ждать от системы расчитаной и заточенной на дебилов из поколения "Я - ТЕЛЕФОНА" чегото из рязряда хотябы RTOS.

И всетаки просто поставте 7\10 просто для того чтобы окончательно ОТБРОСИТЬ НЕСПОСОБНОСТЬ ЖЕЛЕЗА.
Винда виндой. это понятно. но железо - тоже бывает виновато.

И всетаки хотябы скажите с чем работает ваше железячное хозяйство. многим из нас стариков очень поможет..... вам в советах.
1
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 35
10.05.2024, 14:05  [ТС]
Таймер (20 или 50 мс) предназначен для инициализации посылки следующего пакета, если предыдущий пришел с ошибкой.

Нормальный процесс работы: формирование пакета, отправка данных, ожидание ответа не намного больше длительности пакета (скорость 115200 контроллер отвечает быстро, там ассемблер), прием пакета, его обработка (все это занимает время меньше, чем 20 мс) и вызов прерывания по срабатыванию таймера. Т.е. в нормальной ситуации таймер не досчитывает до вызова события OnTimer.

В случае, если пакет не принят (контроллер не ответил), то через 20 мс посылается запрос следующему контроллеру - как бы автоматическое восстановление связи.

Смысл перезапуска Таймера - чтобы он отсчитывал один и тот же интервал времени, условных "20 мс".

У меня тоже стоит преобразователь 232-485. Делал сам - задержка 1 байт.

Программа управляет Установкой автоматической сварки внутренних швов сильфонов - масса пневмосутройств, источников сварочного тока, пресс, видеокамера и пр. ПО анализирует состояние датчиков и по заданной циклограмме выдает команды на пневмораспределители, клапаны газа и пр.Контроллеры просто транслируют сигналы от датчиков и команды на пневмораспределители и пр. Поэтому чем выше скорость обмена, тем выше производительность.

И еще. Программу ставили на два разных ПК от НР под Win 11. Результат одинаково негативный. На моноблоке MSI аналогичная программа встала под Win 10 без проблем, но там встроенные СОМ порты.

Драйвер переустановил (стоял 2014 года) . Фраза "Требуется дальнейшая установка" исчезла, но скорость не увеличилась.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2024, 14:05
Помогаю со студенческими работами здесь

Отправка запроса на прибор через сом-порт
Имеется прибор, который пишет наклоны, т.е. наклономер. Он выдает результаты по запросу. Есть протокол обмена данными. Вот, например, ...

Не работает СОМ порт RS-232 через PCI Express
Добрый день коллеги! Возникла проблема, а именно: имею старый газоанализатор, который подключается посредством СОМ порта. Есть компьютер...

Передача пакета по протоколу ОВЕН через СОМ порт
задача такая. Я должна сделать скаду-систему контоля микроклимата. Т.е. я как пользователь, задаю параметры работы (т.е. устанавливаю мин...

Как запустить купюроприемник для теста через сом порт ?
подскажите если кто знает,некогда не сталкивался с ком портом. Не знаю его процесс активации.

Код программы на С# для управления прибором через СОМ-порт
Помогите пожалуйста найти образец программы на С# для управления прибором (например источником питания) через СОМ-порт.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru