|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||||||||||||||||
Ожидание события. Как правильно?22.09.2015, 23:56. Показов 29993. Ответов 43
Метки нет (Все метки)
Здравствуйте.
Язык C#. (Проект не помню точно как создавал. Но что-то по умолчанию с формами и без излишеств.) Есть одна форма. На неё добавлены 3 элемента: Кнопка, COMпорт и таймер. По нажатию на кнопку запускается некая функция (попутно запускается таймер и предполагается что по COMпорту что-то может прийти). И вот в процессе выполнения этой функции надо поставить её на паузу до тех пор пока либо таймер не сработает либо байт с порта не прийдёт. Сделал я вот таким способм. Кусок этой самой функции, там где она собственно должна быть на паузе.
И Также есть обработчики таймера и порта.
Что-то вроде
Спасибо за внимание.
0
|
||||||||||||||||
| 22.09.2015, 23:56 | |
|
Ответы с готовыми решениями:
43
Ожидание нажатия события контрола Как правильно удалять события Сделать ожидание события клика на программно созданных pictureBox |
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||
| 01.10.2015, 00:09 | ||
Если всю информацию для довольно сложного UI запихать в ProgressChanged, а потом парсить параметры, то в конце-концов код станет малопонятным. Но для задач попроще, вроде той, что в данной теме-самое то.
0
|
||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
|
| 01.10.2015, 04:27 [ТС] | |
|
))) Я тут пока в ваших примерах разбираться буду .... вы не могли бы сказать:почему вы применили конструкции get set using. Вот почему именно с ними а не как то иначе? И кстати. SerialPort можно и не добовлять вручную он вобщемто как кнопка или текст бокс в контролах есть...Зачем вы его руками добавляли?
И честно говоря я до конца не понял в чём конкретное значение асинхронный и синхронны? По идее есть 2 определения почти противоположных. 1.Первое это одновременно и не одновременно. Работать синхронно значит одновременно. Асинхронно - сначала один потом другой, или в разнобой...Ну как прыжки в воду например. 2.Второе это когда 2 процесса тактируются от какого-то генератора (или события или ещё чего). Тогда Синхронность не озночает одновременное выполнение, но и не противроечит ему. Тоесть события могут быть синхронными но в противофазе. Что обычно имеют в виду в описаниях, когда упоминают про Синхронный и Асинхронный? )) Что-то вроде по очереди и одновременно? Добавлено через 4 минуты А, да. Я ещё раз переспрошу. Что происходит с теми переменными которые "в скобках" под локом? Они тоже переходят в разряд тех что нельзя трогать? И можно ли как то узнать из другого потока под локом переменная сейчас или нет?
0
|
|
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||||
| 01.10.2015, 07:38 | ||||||
|
0
|
||||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||||||||||||||||
| 05.10.2015, 12:58 [ТС] | ||||||||||||||||
|
Ребят, я не пропал и не забил. Я думаю
Когда обработаю всё то, что вы сказаи и решу, что мне больше понравилось я сообщу об этом.Пока же я ещё хотел спросить. Предположим у нас есть 2 созданных нами потока (помимо основного потока программы). В этих потоках запущены функции с вечным циклом и с EventWaitHandle внутри цикла. Получаем 2 потока которые тихо мирно спят и никого не загружают пока не получат извещение о произошедшем событии(событиях). Мы можем завести ещё переменную в которой будет храниться некоторое число; при отправки событий для текущего потока будет ещё и переменная эта отправляться(менятся). А эта переменная будет через switch case использоваться внутри цикла после EventWaitHandle чтоб выбирать чтож конеретно должен делать поток который мы решили разбудить. Ну классика жеж вроде. Всё понятно вроде.. всё удобно... Теперь вопрос ) А как можно добавить подобное в поток формы? ..Куда и киким синтаксисом? ... Вот есть у нас функции обработчики события контролов таймеров и прочего которые в классе формы есть. Они выполняются тогда, когда происходит событие. И есть в описании класса нашей формы напрример вот такие строки
Пппонятно спросил? ))) Добавлено через 8 минут В простых C++ было всё просто с этим.
Добавлено через 58 минут Вобщем-то у вас в примерах похоже именно это и было реализовано.Если не ошибасюь. Можно подробнее про этот момент?
0
|
||||||||||||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||||
| 05.10.2015, 19:01 | ||||||
|
PostMessage и WndProc кстати в шарпе можно использовать точно так же, у формы запросто можно переопределить WndProc через override. Все WinApi спокойно можно использовать, только придется каждую функцию сначала импортировать как указано на сайте pinvoke.net. Но в данном случае тут нет нужды для таких извращений. В примерах выше собственное событие реализовано только в моем варианте, у insite2012 вместо этого используется событие воркера.
![]() Добавлено через 18 минут Вот тут можно про события глянуть.
0
|
||||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||||||
| 06.10.2015, 16:49 [ТС] | ||||||
|
Думал можно с помощью событий избежать инвоков.. но вот нерабочий код...
Пришло и всё! - Обрабатывай ).. Но нет... Вроде ж просто сообщение хотел отправить форме о некотором событии и хотел чтобы форма на него реагировала.. как на таймер или нажатие кнопки... Выходит нельзя чтоли "абстрактное" событие послать форме и научить её его обрабатывать?! ... Или я чёт не так делаю? PostMessage вроде же без таких вот закидонов был... А если я вобще надумаю из другого процесса или другой программы в форму что-то отправить? Вобще будет без шансов?Кстати ради эксперимента попробовал завести string переменную.. или как оно там называется вобщем с get set, и в set засунуть вывод полученной строки на форму. А изменять эту переменную я пробовал в другом потоке... Ну вобщем результат тот же - ошибка про доступ контрорла из другого потока.
0
|
||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 06.10.2015, 21:54 | |
|
Ну так а чем вам так не нравятся инвоки?
Винформы так устроены, что к тамошним контролам нельзя напрямую получить доступ из другого потока, а обработчик события выполняется в том же потоке, в каком событие произошло, что логично. Инвоки же позволяют влезть из одного потока в другой и там выполнить какой-то код, что решает проблему. В некоторых случаях альтернатива потокам-асинхронное программирование(пример по ссылке в моем первом посте в этой теме). PostMessage же-это WinApi для окон, оно не имеет прямого отношения к какому-либо языку и работа его обеспечивается ОС, если вам удобно им пользоваться-никто не запрещает Но им можно посылать сообщения только окну, а через event обеспечивается удобное взаимодействие между любыми классами. PostMessage в большинстве случаев логично использовать для управления чужим приложением, а не своим.Про get и set - прочитайте про свойства поподробнее, к потокам это не имеет никакого отношения... Это сделано в первую очередь для инкапсуляции.
0
|
|
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
|||
| 07.10.2015, 04:36 [ТС] | |||
Но вот
Добавлено через 1 минуту Хотя ... лучше в очередь всё же ставить, чем прерывать исполнение... Добавлено через 5 минут Есть у нас 2 микроконтроллера, которые ногами между собой связаны... или память внешнюю имеют общую...Мы же можем когда захотим дернуть ногой одного микроконтроллера, разбудить или вызвать прерывание другого и заставить его на это отреагировать... Исполняемый код конечно можно второму передать, указав на кусок кода в общей памяти. Это да, вариант, который может и пригодиться в какихто случаях. НО в большинстве случаев горадздо проще и быстрее и логичнее и рациональнее и вабще.. просто сразу написать код для второго микроконтроллера для обработки события дергания его за ногу.Добавлено через 21 секунду Это просто для аналогии с тем что бы мне хотелось....
0
|
|||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
|
| 08.10.2015, 10:52 [ТС] | |
|
Ну вот как так то... и Task и BackgroundWorker и просто запуск чего-то в рукотворном потоке... так много вариантов по сути почти одного и того же. А возможности в самый широкоиспользуемый поток Form'ы добавить подпись на наше рукотворное событие... чтобы действительно в очередь формы попадало и в форме делалось а не абы где... нету? PostMessage и всё? (( Грусть тоска печаль...
Можно конечно просто переменную в форму слать и там по таймеру её просматривать...Может это и нормально... кто его знает как там на самом деле происходят обработки событий контролов в форме... может планировщик по таймеру проглядывает пришло что новое ЭТОЙ форме или нет... Не лишено смысла... Но как-то не верится в такое... Добавлено через 1 минуту Так.. а PostMessage в C# есть вобще? Или его через импорт длл надо?
0
|
|
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||||||
| 10.10.2015, 10:53 [ТС] | ||||||
|
Если тут комуто ещё интересно, то вот.
Ежели чё не так, поправте, пожалуйста. Добавлено через 53 секунды А. за пример кода прошу прощения, он местами избыточный - это мой результат экспериментов и копипасты мсдн.
0
|
||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|||||
| 11.10.2015, 01:40 | |||||
|
Какое-то время не смотрел тему... Воркер-это обертка над тем же потоком, суть от этого не сильно изменяется. Инвоков там не нужно писать только потому, что они происходят внутри. Как подождать в потоке-в теме уже предложили 2 варианта-либо EventWaitHandle(или его наследники,как в вашем случае), либо использовать вместо потоков асинхронность. Если есть желание - ничто не мешает оформить все это в виде очереди сообщений, создать эту самую очередь и при добавлении элемента будить поток, а когда все сообщения обработаны-опять его усыплять. В вашем же коде потоков 3 и все в одном классе, что не соответствует поставленной задаче.
![]()
0
|
|||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||
| 11.10.2015, 08:19 [ТС] | ||
|
Как я уже говорил, по хорошему надо чтобы программа была в одном потоке, а форма в другом и что бы они были по максимуму независимы. Форма нужна только чтобы не в консоль выводить какието сообщения, данные и прочее что навычисляет программа, ну и чтобы считывать какието данные от пользователя. В форму допустимо засунуть функции для проверки вводимых данных от пользователя и преобразования в удобочитаемый формат того чтобы выдаст основная программа. Можно ещё добавить в форму что-то что явно независимо от всей остальной программы может происходить. Например если музыкальный проигрыватель делать. В основном потоке всё будет насчитываться и отправляться в буфера аудо устройств. А вот в форму можно добавить плей-лист. Форма может проверять файлы на правильный формат, удалять или добавлять в список новые треки. А слать она будет уже тока сообщения в главный поток о том что пользовтель тыкнул плей и сказать что же именно он захотел просулашать. Писать же весь код в обработчиках события формы это может и можно... но как-то очень не правильно, просто в силу того что UI и основной код в одном месте при разрастании обоих превращается в жуткого неповоротливого монстра.
PostMessage в C# в явном виде я не нашел.. Чему был очень удивлён. Но PostMessage всё же штука специализированная, заточенная под окна. WaitHandle же более универсален. Более того он не только межпотоковый но и межпроцессовый может быть. PostMessage конечно тоже межпотоковый, но через WaitHandle можно и не только с окнами работать. Хотя.. если покопаться то возможно получится что PostMessage на WaitHandle или чем-то подобном реализован. В моём примере не совсем 3 потока. Поток формы - раз. Поток (а точнее пул потоков) BGworkera - два. А третий это поток в котором делается основной код и который взаимодействует с формой самым минимальным и необходимым образом. Нет смысла код засовывать в BGworker по причине которую я уже описал выше - хорошо всё таки код и UI разделять по максимуму. Invoke не смертельно конечно. Кроме одного НО. Он возникает только в том случе, когда мы пытаемся напрямую достучаться до контролов из другого потока. А это явный признак того что UI и основной код программы не полностью разделены. Вот когда мы используем делегаты, то мы код, который должен быть по идее в потоке UI, начинаем исполнять в потоке основного кода программы, вот тогда и возникает необходимость инвоков. Тоесть инвоки это не проблемма. Проблемма это наличие причины по которой эти инвоки надо использовать. event это что называется трудности перевода.
Вобщем event он дейтсвительно вовсе не для ГЕНЕРАЦИИ и ЧТЕНИЯ событий нужны. И тут явно путаница возникает, так как event к реальным событиям отношения не имеет. Это виртуальный обман. Подписываемся в одном месте, вызываем в другом и кажется что один вызвал "событие" а второй на него отреагировал... По сути же вызывает и раегирует одни и тотже, но правда то что он делает вовсе не его работа). Да , для взаимодействия между классами это может и нужно. Но к раельным события этом не имеет никакого отношения. А то что назвали event'ом ... ну я даже неа знаю как это объянсить.. это прям диверсия и вредительство. А что касается Task то принципиального различия нет - это тоже просто другой поток. Разница лишь в том как оно создается, поддерживается и убивается. BGworker тоже например пул а не просто поток. Но собственно почему BGworker? Дело не в том, что там инвоки писать не нужно) .. Дело в том что он умеет генерировать событие в очередь формы. Тоесть он работает как PostMessage по сути. А вот как кроме этих способов я не знаю как добавить в очередь формы пользовательские события. Я про это и спрашивал. Просто если не добавлять прям в очередь событий формы своё событие, то вроде как ни крути а исполняться код будет не в потоке формы а гдето-то у нас в коде. А это как я уже несколько раз повторял не хорошо.
0
|
||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||||
| 11.10.2015, 19:31 | ||||||
и использует он те же самые eventы. Практическая разница как раз таки в том, что не надо писать инвоки остальное все тонкости реализации.
Если этим словом в другом месте называют что-то другое, то это совершенно не означает, что тут есть какой-то "обман".
Кстати говоря, отличный пример с использованием воркера в тему уже давно выложил insite2012, почему вы не взяли на вооружение его? Добавлено через 12 минут В целом проблема, на мой взгляд, заключается в том, что вы мыслите понятиями из низкоуровневого программирования, а не ООПшными. Что для данного языка совершенно не подходит.
0
|
||||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
|||||
| 12.10.2015, 06:37 [ТС] | |||||
) это обман? )
А что касается ООП и низкоуровневого программирования, то, в силу того что в ООП я действительно плохо рабираюсь, то сравнивать их я не могу. Но на мой взгляд общая логика построения устройства или программы не должна зависеть от языка программирования. Но вот реализация то конечно зависит, и не всем языкам та или иная логика (архитектура, общий смысл) доступна для реализцаии.
0
|
|||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||
| 12.10.2015, 07:49 | ||||
Это все было бы абсолютно верно, если бы речь шла про язык, который не поддерживает ООП, но не тут. Суть в том, что, согласно принципам инкапсуляции, в классе, который отвечает за UI, ничего кроме UI и не должно выполняться. Вся логика должна обрабатываться в другом классе, ссылка на объект которого кидается в UI, в UI же надо просто подписаться на эвенты и дергать методы того объекта. Если эвенты поступают из другого потока-ничто не мешает расставить инвоки. А вот в классе, который отвечает за логику, как раз таки для длительных операций надо запускать потоки, а сложить 2 числа можно и в том же потоке, где UI-больше расходов будет на создание потока, чем на само действие. Именно по этой логике написаны оба варианта, какие я и insite2012 предлагали в теме. Тут, в большинстве случаев, заморачиваться подобными вещами просто не нужно, такого рода вопросы обычно может порешать компилятор, а вам достаточно написать BeginInvoke, который, собственно, и делает именно то, что вы хотите, если судить по этому описанию . Про оконную процедуру-верно, она выполняется в потоке формы.
0
|
||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
|||
| 12.10.2015, 11:40 [ТС] | |||
Концепция которую предлагаю я не чуждая никому ). Разделение на потоки и межпоточное взаимодействие на уровне WaitHandle полностью вписывается в C# и его мсдн. Более того. Межпроцессовое взаимодействие тоже предусмотрено в C# и в мсдн соответсвенно через WaitHandle. https://msdn.microsoft.com/en-... 10%29.aspx Named event wait handles can also be used to synchronize activities across application domains and processes, whereas monitors are local to an application domain. Разделение UI и основного кода это не только разделение классов. Запуск паралельных процессов и их отключение по мере надобности вполне себе распространненная потребность. И это совсем не низкоуровневое программирование. И примеры задач и методы их реализации, которые я приводил, нельзя назвать низкоуровневыми. Мы не пишем драйвера, не идём в обход планровщика задач, не пишем код на асме вместо компилятора шарпа. Наоборот, я говорю на уровне уже готовых программ, езешников, возможно, коды которых написаны на разных языках и нет исходников ни возможности их изменить.НО! Но есть описание именных WaitHandle'ов с которыми эти программы могут работать. Я уже приводил пример, про музыкальный плеер. Часть кода для него лучше писать на С++. А другую часть на C#. И это удобнее будет и надежнее и рациональнее, чем всё писать на одном языке. Пусть C# ООП язык. Но слишком много существует задач, которые на нём просто неудобно делать, и не меньше тех задач, для которых он идеален. А есть задачи которые совмещают в себе 2 класса подзадач, котоыре на шарпе удобно и котоыре не удобно делать. Вот тогда вполне разумно разбивать весь проект на подпроекты-модули, и подключать их время от времени в процессе работы. И event'ы тут скорее будут обузой нежели чем удачным решением проблемм. А вот WaitHandl'ы вполне себе подойдут. Проблема только в том, что WinForms не имеет явной возможности реагировать на внешние WaitHandl'ы. (Точнее я так её и не нашёл). Создавать ещё один поток можно, да, согласен. Можно из этого потока через инвоки деркать контролы, да тоже согласен. Но что если вывод данных в форму из этого потока не самый тривиальный, типа как лабела текст поменять, а что-то более серьёзное, продолжительное, динамичное... Но при всём при этом, от основного потока по хорошему требуется только сказать форме ПроснисьИРаботай_(задание_35) и продолжить заниматься своими вещами. В случае event'ов вся эта муторная, продолжительная но не слишком КРИТИЧНАЯ работа ложится на главный поток. А поток формы балду пинает... Как то это не правильно. Тут нет ничего низко уровневого. Нет попирания законов ООП. Просто логичное и рациональное распеределение обязанностей и ресурсов ОС или железа. Поток можно рассматривать как нечто большее чем виртуально созданное перепрыгивание ОС с одной задачи на другую. Поток может быть и на разных ядра, процессроах, на разных устройствах и вобще между нашим компом и серверами альфацентавры , которые реализуют между собой оговоренный протокол взаимодействия. Ну не добиться этих межгалактических взаимодействий c незнакомыми программами через event'ы. А если и добиться.. то прейдётся платить альфацентавре за использование их вычислительных мощностей Так вот WinForms имеют свою очередь, но я не знаю как ещё в неё встать, кроме как через BGWorker и его Progress событие. Он нужен только для этого. В нём можно спать, а можно работать в вечном лупе. Он может принимать внешние WaitHandl'ы и слать их. Он может работать с контролами формы в своём потоке через инвоки либо в потоке формы через событие ProgressChanged. Тоже самое с event'ами нельзя уже сделать. Можно правда сделать через PostMessage, но вечный луп в него не засунешь без DoEvents.
0
|
|||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||
| 12.10.2015, 16:59 | ||||
|
0
|
||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||
| 13.10.2015, 16:19 [ТС] | ||
|
Спасибо большое за ваши ответы и замечания. Очень полезны оказались для меня.
Покопался поподробнее, почитал и вобщем оказалось, что это действительно то о чём я спрашивал - прямой аналог PostMessage. Далее дело вкуса - можно писать код прям в делегат инвока в том потоке и классе из которого будет вызываться BeginInvoke, а можно (что мне ближе) в делегате указать только выполнение функции из класса формы, где её код полностью и будет. Единственный момент, который не ясен с BeginInvoke, так это то, можно ли с помощью них работать не с двумя разными потоками одного приложения, а с двумя разными процессами двух разных приложений? Скажем запустить уже готовый екзешник программки, в которой только форма с её функционалом, и попытаться залезть в очередь этой формы из другого процесса. По идее это мягко говоря не безопасно и такие возможности должны быть зарезаны на корню... Казалось бы через WaitHandl'ы 'этой проблемы не было бы (код правда тогда тоже вроде не отправить... хотя кто знает... надо покопать). Про разделение классов и ООП... Конечно это важно, но это больше филосовский вопрос. На асме всё равно классов нет, а всё к нему сводится) Главное как я уже говорил и как вы подтвердили это своим примером про ваш проект букмекеров - Существуют задачи для готорых C# и ООП в целом просто идеальны. И раз это можно на них сделать, более того если это на них уже сделано, и работает без проблемм, то зачем выдумывать альтернативу, если в ней нет необходимости. В мире и так полно задач котоыре уже поставлены, и которые очень нужно решить.
0
|
||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|||||||||||||
| 13.10.2015, 18:12 | |||||||||||||
![]()
Другое дело, если второе приложение свое, то можно посылать ему что-то через сокеты/пайпы/еще что-нибудь, а потом уже пытаться выполнять. Но это все надо достаточно редко. Добавлено через 6 минут
0
|
|||||||||||||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||
| 13.10.2015, 19:39 [ТС] | ||
Выхода два: забить на удобство и всё делать на С++, или же часть на C# а часть на С++. Ну с первым вариантом я уже намучался в своё время... вот собственно и думаю как бы так сделать, чтобы мой пример с ком-портом после разрастания не превратилась в адского монстра...Я его делал только чтобы отдельный модуль протестить когда спаял. Ща пытаюсь придумать что-то вроде универсального интерфейса между отдельными кусками программы, который бы для всех языков был бы доступен. В этом ключе почемуто хочется чтобы програмные модули (назову так разные подпрограммы для разных устройст, котоыре будут запускаться независимо и взаимодействовать между собой через ... вот тут я тоже ещё не выбрал через что.) работали с одним каким-то общим "интерфесом". Всмысле способ обмена данными и событиями друг с другом был у всех одинаков,... и у окон тоже. А если инвоки не могут между разными процессами работать, то наверно они тут не подойдут. Конечно можно каждому устройству свою пару делать программа-окно.... Но пока не определился.
0
|
||
| 13.10.2015, 19:39 | |
|
Как правильно использовать события и свойства элемента CheckBox SerialPort: Ожидание События или получение ответа из потока чтения флуда байтов Ожидание события Qt ожидание события ожидание события Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты 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.
Опрашиваются регистры. . .
|