Активность
- Сегодня
-
Постоянные поиски видеорегистраторов для нашего отдела сборки заказов были омрачены дополнительными сложностями в виде новых кодировщиков стандарта H.265. Старые версии ПО для видеозаписей на сервер поддерживали только 264 версию, и после приобретения камер высокого разрешения 4к встал вопрос: покупать новые версии программ видеорегистрации, либо написать самому. Решили сами сделать так, как нам будет удобно, да и в случае обновления стандартов и протоколов будет легко адаптировать её. Основные требования: 1) Всегда поверх всех окон - оператор не должен закрывать, сворачивать либо убирать окно записи, программа всегда должна быть на виду сборщика; 2) Программа должна принимать номер заказа - будет использоваться для названия видеофайла для облегчения последующего поиска по номеру заказа. Причем, пока оператор не введет номер заказа - кнопка начала записи должна быть неактивной; 3) После нажатия "СТАРТ ЗАПИСИ" должно быть окно контроля действий сборщика, а также броская мигающая надпись о текущем процессе записи; 4) После окончания записи видеофайл должен сохраняться на выбранный диск с названием, содержащим номер заказа + дату файла. После сохранения необходимо проверить успешность выгрузки файла, если все отлично - выдать уведомление. Затем стереть содержимое поля ввода номера заказа для подготовки ввода следующего номера; 5) Дополнительно должны проверяться все необходимые зависимости и обрабатываться возможные ошибки с выводом информации об ошибке: 5.1 - не установлен VLC x32 5.2 - нет второго диска для сохранения файлов Решение задачи: Используем бесплатный стек Visual Studio под приложение .NET для Windows desktop. Создадим новый проект, выбираем .NET Desktop Development (Разработка классических приложений .NET) - он необходим для создания Windows Forms. Далее открываем Form1 и указываем код (ver.3.1): using System; using System.Drawing; using System.IO; using System.Windows.Forms; using Vlc.DotNet.Forms; using System.Runtime.InteropServices; namespace RecordingApp { public partial class Form1 : Form { private System.Windows.Forms.Timer blinkTimer; private Panel statusPanel; private Label lblStatus; private VlcControl vlcControl; private TextBox txtOrderNumber; private Button btnStart; private Button btnStop; private bool isRecording = false; public Form1() { CreateUI(); blinkTimer = new System.Windows.Forms.Timer { Interval = 500 }; blinkTimer.Tick += BlinkTimer_Tick; blinkTimer.Start(); // Запускаем сразу для удержания TopMost } [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); const uint SWP_NOSIZE = 0x0001; const uint SWP_NOMOVE = 0x0002; const uint TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE; private void CreateUI() { this.Text = "Контроль сборки заказов"; this.Size = new Size(900, 700); // 1. Всегда поверх всех окон this.TopMost = true; this.TopMost = false; this.TopMost = true; this.WindowState = FormWindowState.Normal; // 2. Убираем кнопки Свернуть, Развернуть и Закрыть (крестик) this.ControlBox = false; // 3. Запрещаем изменять размер окна (опционально, для красоты) this.FormBorderStyle = FormBorderStyle.FixedSingle; this.StartPosition = FormStartPosition.CenterScreen; this.BackColor = Color.FromArgb(240, 240, 240); Panel topPanel = new Panel { Dock = DockStyle.Top, Height = 80, BackColor = Color.FromArgb(220, 220, 220) }; Label lblOrder = new Label { Text = "Номер заказа:", Location = new Point(20, 28), Size = new Size(130, 25), Font = new Font("Segoe UI", 11F, FontStyle.Bold) }; txtOrderNumber = new TextBox { Location = new Point(160, 25), Size = new Size(250, 27), Font = new Font("Segoe UI", 11F), TextAlign = HorizontalAlignment.Center }; btnStart = new Button { Text = "▶ СТАРТ ЗАПИСИ", Location = new Point(430, 20), Size = new Size(170, 40), BackColor = Color.LightGreen, Font = new Font("Segoe UI", 11F, FontStyle.Bold), Enabled = false }; btnStart.Click += BtnStart_Click; btnStop = new Button { Text = "⏹ СТОП ЗАПИСИ", Location = new Point(620, 20), Size = new Size(170, 40), BackColor = Color.LightCoral, Font = new Font("Segoe UI", 11F, FontStyle.Bold), Enabled = false }; btnStop.Click += BtnStop_Click; txtOrderNumber.TextChanged += (s, e) => btnStart.Enabled = !string.IsNullOrWhiteSpace(txtOrderNumber.Text) && !isRecording; topPanel.Controls.AddRange(new Control[] { lblOrder, txtOrderNumber, btnStart, btnStop }); statusPanel = new Panel { Dock = DockStyle.Top, Height = 70, BackColor = Color.DarkRed, Visible = false }; lblStatus = new Label { Text = "", Font = new Font("Segoe UI", 20F, FontStyle.Bold), ForeColor = Color.White, TextAlign = ContentAlignment.MiddleCenter, Dock = DockStyle.Fill }; statusPanel.Controls.Add(lblStatus); vlcControl = new VlcControl { Dock = DockStyle.Fill, BackColor = Color.Black }; ((System.ComponentModel.ISupportInitialize)vlcControl).BeginInit(); vlcControl.VlcLibDirectoryNeeded += OnVlcLibDirectoryNeeded; ((System.ComponentModel.ISupportInitialize)vlcControl).EndInit(); this.Controls.Add(vlcControl); this.Controls.Add(statusPanel); this.Controls.Add(topPanel); } private void OnVlcLibDirectoryNeeded(object sender, VlcLibDirectoryNeededEventArgs e) { string vlcPath = @"C:\Program Files (x86)\VideoLAN\VLC"; if (!Directory.Exists(vlcPath)) { MessageBox.Show("Установите 32-битную версию VLC!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } e.VlcLibDirectory = new DirectoryInfo(vlcPath); } private void BtnStart_Click(object sender, EventArgs e) { string orderNumber = txtOrderNumber.Text.Trim(); string folderPath = @"D:\Video"; try { if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath); string fileName = $"Order_{orderNumber}_{DateTime.Now:yyyyMMdd_HHmmss}.mkv"; string fullPath = Path.Combine(folderPath, fileName).Replace("\\", "/"); string cameraUrl = "rtsp://admin:admin@192.168.0.20:554/Streaming/Channels/101"; // Дублируем поток H.265 в файл MKV и на экран без перекодирования var mediaOptions = new[] { $":sout=#duplicate{{dst=display,dst=std{{access=file,mux=ffmpeg{{mux=matroska}},dst='{fullPath}'}}}}", ":sout-keep" }; vlcControl.Stop(); vlcControl.Play(new Uri(cameraUrl), mediaOptions); isRecording = true; btnStart.Enabled = false; btnStop.Enabled = true; txtOrderNumber.Enabled = false; statusPanel.Visible = true; lblStatus.Text = $"⚠ ЗАПИСЬ ЗАКАЗА № {orderNumber} ⚠"; blinkTimer.Start(); this.Text = $"Запись заказа №{orderNumber}"; } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS); } private void BtnStop_Click(object sender, EventArgs e) { try { vlcControl.Stop(); isRecording = false; btnStop.Enabled = false; txtOrderNumber.Enabled = true; txtOrderNumber.Clear(); statusPanel.Visible = false; blinkTimer.Stop(); this.Text = "Контроль сборки заказов"; MessageBox.Show("Запись заказа успешно завершена и сохранена.", "Готово", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show($"Ошибка при остановке: {ex.Message}"); } } private void BlinkTimer_Tick(object sender, EventArgs e) { statusPanel.BackColor = (statusPanel.BackColor == Color.DarkRed) ? Color.Crimson : Color.DarkRed; lblStatus.ForeColor = (lblStatus.ForeColor == Color.White) ? Color.Yellow : Color.White; // ПРИНУДИТЕЛЬНО возвращаем окно в самый верх каждые 0.5 сек // Это не даст браузеру перекрыть программу во время работы SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS); } } } В итоге получилась простенькая программа:
- Ещё раньше
-
Давайте сравним оба datasheet упоминаемых вами реле: Расшифруем обозначения каждого реле: LNH33009 - электромагнитное реле производства компании TE Connectivity LN - тип реле (миниатюрное) H - версия реле (10А, 105°С) 3 - тип контактов (форма "А", тип 1 NO) 3 - состав покрытия контактов (AgSnO2) 009 - напряжение управляющего питания (DC 9 вольт) Характеристики: Напряжение коммутации: 9 вольт Номинальное коммутируемое напряжение: 250 воль Максимальный ток коммутации: 10 ампер Сопротивление обмотки: 202 Ом Контактная формула: SPST-NO Корпус: SRD-09VDC-SL-C - электромагнитное реле производства компании Songle SRD - тип реле (P/N) 09 - напряжение управляющего питания (DC 9 вольт) S - тип исполнения (sealed - герметичное) L - мощность катушки (0.36 Ватт) С - тип контактов Характеристики: Напряжение коммутации: 9 вольт Номинальное коммутируемое напряжение: 250 воль Максимальный ток коммутации: 10 ампер Сопротивление обмотки: 225 Ом Контактная формула: SPDT Корпус: Ответ: не подходят, не прямой аналог. Примечание: при желании можно установить (приспособить путем изменения вывода), но мы бы не рекомендовали заменять брендовые TE на китайские Songle
-
Здравствуйте, У меня на варочной плите стоит Реле электромагнитное LNH33009 9v 10а 250v. Выше подойдет SRD-09VDC-SL-C - реле электромагнитное (DC 9В, 1хC {SPDT} 10A/250В AC, PCB_DIP-5) - производство SONGLE
-
-
FM400TU-07A Мощные силовые модули FM400TU-07A представляют собой сборку из 3-фазных полумостовых N-канальных транзисторов с общей шиной питания. По характеристикам позволяют оперировать 6 *70 вольт при токах до 200 ампер. Применяются в цепях управления электропогрузчиками. Прямая поставка Mitsubishi. Купить: модули FM400TU-07A оригинал
-
При обновлении драйвера ККТ Атол 30Ф и попытке сформировать тестовый чек появилась новая ошибка: Не удалось зарегистрировать фискальную строку ( 26 : Неверный формат команды ) Исследование ошибки указывало на устаревшую версию прошивки ККТ Атол 30Ф, а именно 5.7. Для правильной обработки новых требований по НДС необходимо обновить прошивку аппарата на версию >5.15 (на момент написания заметки актуальная версия прошивки для ККТ Атол 30Ф = 5.17). Процесс обновления
-
После обн6овления ККТ Атол 30Ф возникла ошибка: Не подключена: Ошибка открытия COM порта: ( 11 : Для работы с драйвером необходимо запустить службу UEMA ) Для исправления ошибки заходим в "службы" и находим службу "UEM Agent" и запускаем её (нажатием правой кнопки мыши на самой службе и выбор "Запустить". Примечание: сама служба "UEM Agent" находится в автозапуске, но при обновлении драйвера отключается. Необходимо либо перезагрузить ККМСервер, причем помогло только со второго раза, либо просто запустить её вручную.
-
В связи с необходимостью перехода на новую систему налогообложения с применением НДС пришлось обновлять имеющийся ККТ модели Атол 30Ф. 1) На официальном сайте переходим в раздел загрузки и выбираем "контрольно-кассовая техника" -> "АТОЛ" -> "АТОЛ 30Ф": 2) Скачиваем файл "Драйвер ККТ 10....." (в зависимости от года у вас может быть более свежая, на скриншоте по состоянию на 06.01.2026 г.) 3) После обновления драйвера и попытки сформировать тестовый чек вышла ошибка: "Не удалось зарегистрировать фискальную строку ( 26 : Неверный формат команды )" - проблема в устаревшей прошивке самой ККТ. 4) Проверяем версию прошивки ККТ Атол 30Ф: система указывает на 5.7, а для правильной обработки новых требований необходима от 5.15 и выше. 5) Скачиваем через свои админ ресурсы последнюю версию прошивки для ККТ Атол 30Ф и запускаем: Готово! Теперь наша ККТ Атол 30Ф перепрошита на последнюю версию и создание чеков происходит без ошибок!
-
Произведено обновление видеосерверов на версию v8.0.1 - успешно.
-
17 декабря 2025 года нам написал покупатель, который долгое время искал гарантированно оригинальные микросхемы. Узнавал какая у нас гарантия оригинальности. В итоге рискнул купить и после установки микросхемы написал о TDA8954TH отзыв: Что в очередной раз подтверждает качество и оригинальность продаваемых в интернет магазине "Радиодар" микросхем TDA8954TH производства NXP.
-
TDA8954TH Мощная микросхема УНЧ (Усилитель Низкой Частоты) в малогабаритном корпусе типа HSOP-24 для монтажа непосредственно на плату по стандарту SMD. Оригинальные микросхемы производятся только компанией NXP. Очень много подделок встречается в настоящее время во многих странах, даже включая Европу и США. Гарантированно оригинальные микросхемы могут быть только при заказе у производителя напрямую. Реализуемые УНЧ TDA8954TH в ИМ "Радиодар" получили одобрение покупателей и подтверждение оригинальности благодаря прямым ордерным закупкам у производителя NXP по линии промышленных поставок (через Гонконг).
-
Как известно нашим постоянным покупателям из 4 новых регионов - мы также отправляем заказы в Луганскую, Донецкую, Запорожскую и Херсонскую области, но интеграция транспортных компаний не позволяла сделать это в автоматическом режиме. Приходилось все заказы оформлять нашим менеджерам вручную, поэтому покупатели не могли сразу понимать стоимость доставки. Также, была доступна доставка только в районные центры. С декабря 2025 года мы добавляем автоматическое оформление заказов с выбором доставки в города новых регионов - заключили договор с компанией TVZGO. Список всех ПВЗ можно посмотреть на официальном сайте. Добро пожаловать в ИМ "Радиодар"
-
Дождавшийся очередной партии IGBT модулей (40 штук, заказ №750 от 26 августа 2025 года, агент производителя тот же, без изменений с начала поставок) наш покупатель - мастер по ремонту автоэлектроники и электрики из Санкт-Петербурга прислал уведомление, что полученные модули имеют на ножках следы припоя: Мы осмотрели новую партию из 40 штук (от августа 2025 года) и обнаружили подтверждения слов покупателя (сразу проверить не успевали, у нас пришли 3 задержавшихся с августа контейнера): На основании выявленного мы отправили запрос нашему поставщику: На что он ответил, что теперь все без исключения модули (не только эти, но и все выпускаемые) компании будут поставляться только после проведения проверки в лаборатории. По словам агента производителя увеличилось обращение с неработающими модулями, поэтому компания приняла такое решение. Других поставок больше не будет. Все модули будут сопровождаться гарантией только после проверки. Резюмируя: 1) Официальных ответов на многочисленные запросы в компанию BYD (по емейлам, указанным на официальном сайте компании) ответов не поступало. Принадлежность нашего текущего агента-поставщика подтвердить не представилось возможным. upd к пункту №1: наш инженер подсказал, что компания BYD придерживается общемирового нейтралитета и предпочитает не отвечать на письма отправленные из доменов России. Тогда попросим наших друзей позвонить и написать непосредственно из Китая. 2) Судя по нескольким обращениям наш агент допускает к продаже совместно с новыми модулями также и восстановленные (хотя он это и отрицает). 3) Текущая третья закупка (№750 от 26 августа 2025 года) в количестве 40 штук - модули со следами пайки. ВНИМАНИЕ: На основании вышеизложенного и для исключения введения наших покупателей в заблуждение мы приняли решение перевести данные IGBT модули в разряд "ДЕМОНТАЖ" до получения официальных комментариев компании BYD.
-
Павел Александрович А из Санкт-Петербурга (является нашим постоянным клиентом) прислал нам следующую информацию: Заказ №15383 - Ножки модулей чистые, необлуженные: В результате вскрытия модулей в одном из них обнаружил следы восстановления: Статистика заказов клиента: №13901 №15383 №15775 №16325 Мы отправили запрос нашему агенту-поставщику и получили ответ: "Все без исключения модули проходят проверку и обеспечиваются гарантий на работоспособность"
-
Модуль D4563-99620 Мощный IGBT модуль для автомобильных электроусилителей производства стран Азии. Крайне мало информации в сети на данный момент. У многих продавцов (которые называют себя агентами производителя) указывается производитель BYD. Мы отправляли письма с просьбой прокомментировать данные модули, а также предоставить справочную информацию (D4563-99620 datasheet). К сожалению, ни на один наш запрос так и не получено ответа. Указанных даташитов также нет и у поставщиков. В ИМ "Радиодар" реализовано уже более 90 штук (50 штук по предзаказу и мы закупаем партиями по 40 штук). В настоящее время в продаже вторая партия в размере 40 штук. Из статистики: брака не выявлено, все проданные экземпляры успешно установлены мастерами по автомобильному электрооборудованию (в основном из СПБ, Москвы, Екатеринбурга, Новосибирска и Воронежа). Также указанные мастера закупают данные модули неоднократно. Все партии поступают с облуженными ногами. Наш поставщик "агент" производителя предоставил следующие комментарии по данному поводу: Вся продукция фабрики поставляется после испытательных нагрузок. Это условия гарантийного сопровождения. Других поставок не предвидится. Мастер из СПБ в июле 2025 года произвел вскрытие модуля и выявил следы восстановления - была произведена точечная перезаливка компаунда. ВНИМАНИЕ: На основании вышеизложенного и чтобы не вводить в заблуждение покупателей, до получения официальных ответов, мы приняли решение добавить в название модулей слово "ДЕМОНТАЖ"!!!
-
Наименование: STP28NM60ND Тип корпуса: TO-220 Производитель: STM Год выпуска: 2014 Цена: 368 руб./шт. (в розницу) Срок: в составе ежемесячного контейнера от 30 до 45 рабочих дней! --------------- !!! Срочная авиа: +5000 руб/кг. - от 7 до 14 дней
-
-
Понадобилось вечером сделать презентацию для дочери на тему "Размножение и развитие животных" по курсу школьной программы 3 класса. В качестве титульного листа был задуман эскиз в зеленом цвете с названием объемными буквами. Для быстроты создания понравился сайт https://ru.textstudio.com/logo/1638 с темой Grass:
-
Наш покупатель обратил внимание, что купленные в нашем магазине транзисторы IRFB31N20DPBF (заказ №15839) не опознаются в тестере компонентов (точнее показывает диод): В результате обсуждения пришли к решению вопроса - на другой версии прошивки элемент открылся и показал себя как транзисторы: Заключение: пожалуйста, проверяйте компоненты на приборах разных производителей, либо продублируйте проверку как по старинке: открыть прибором и проверить переход.
-
IRFB31N20DPBF Полевые транзисторы N-канальной структуры в корпусе среднего типа ТО-220. Оригинальные транзисторы производятся компанией Infineon. Краткие характеристики: Известные проблемы: 1) по сообщениям покупателя данные транзисторы не опознаются в некоторых тестерах элементов. Необходимо проверять на разных прошивках/моделях:
-
С целью тестовых испытаний подготовили виртуальный сервер на базе ОС Debian 12. Установили панель управления HesiyaCP и приступаем к установке самого фреймворка: 1) Сперва устанавливаем Node.Js LTS: curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - Затем устанавливаем: sudo apt install nodejs Источник: Как установить Node.Js на сервер Debian 12 2) Теперь приступаем к установке git (может быть уже на ОС, предоставляемых хостером): apt install git 3) Далее вам необходимо убедиться в наличии PostgresSQL (у нас был установлен на этапе инсталляции HestiyaCP) На этом подготовительные мероприятия закончены, переходим к установке непосредственно самой медузы. Система MedusaJS устанавливается командой "create-medusa-app": npx create-medusa-app@latest my-medusa-store где "my-medusa-store" это имя каталога вашего проекта. Важное примечание! Подключение к PostgresSQL отличается от привычных вам других SQL. Используйте команду на создание проекта, где: npx create-medusa-app@latest --db-url "postgres://user:password@localhost:5432/my-database" Где выделенные цветом это данные вашей DB, созданные в Хестиа (источник решения git) Админка: