• Есть ли нюансы в работе с COM портом на c#?

    @GREGOR_812
    Не уверен, что вопрос ещё актуален, но на всякий случай выскажу свои мысли:

    1. Возможно, ваш девайс присылает слишком короткое сообщение и ждёт ответа. Чтобы это проверить/исправить, вы можете поиграть с порогом ReceivedBytesThreshold, которые есть у типа SerialPort. Это порог по кол-ву данных в буфере чтения, по достижению которого будет срабатывать событие DataReceived, на которое вы подписались. Поставьте брейкпойнт на строке string _message = null; в обработчике DataReceirvedDt и проверьте, вызывается ли вообще этот обработчик для ардуины про. Если нет, значит, нужно уменьшать порог.

    2. Если же с порогом всё ок, то идём дальше. В обработчике При чтении методом ReadLine() нужно быть точно уверенным, что у вашего хоста и ардуины про одинаковые символы окончания строки. Для хоста это можно настроить через свойство NewLine в классе SerialPort. Судя по коду, у вас хост под виндой, значит, окончание строки у вас может отличаться от того, что присылает ардуина. Если они не совпадают, то метод не может найти окончания строки и блокируется. Чтобы это проверить, можно поставить брейкпойнт на строку _message = serialPortData.ReadLine(); и выполнить его кнопкой StepOver в отладке. Если данные будут получены, значит окончание строки на хосте и ардуине интерпретируется одинаково, если метод заблокируется, значит, либо в полученных данных вообще нет символов конца строки, либо они различаются у хоста и ардуины.
    Ответ написан
    Комментировать
  • LSI MEGARAID 9341-8I. Как активировать Boot Device?

    @LostLuser Автор вопроса
    Проблему удалось решить
    1. Сбросил BIOS’ы на default и обновил прошивки еще раз. Т.е. сделал стартовую чистую среду по дефолту
    2. Сделал загрузчик UEFIсредствами RUFUS (можно и Diskpart’ом, но дольше и геморойнее). Так же обязательно выставить файловую систему NTFS
    3. В BIOS мат.платы выставил слот PCIe в который воткнут контроллер в режим UEFI
    4. В BIOS мат.платы выставил, загрузку UEFI или UEFI & Legacy
    5. В BIOS мат.платы выставил первым загрузку BIOS UEFI Shell
    6. Save and Reboot

    Дальше все пошло как по маслу. Загрузилась оболочка UEFI(чем то похожа на powershell), там ручками был захвачен диск, указана папка с файлом бута (bootx64.efi) и полетела установка Server 2016
    После первого ребута установщика винды зашел в БИОС и обнаружел в списке доступных загрузок UEFI Windows Boot.
    Поставил его первым в загрузке. Happy End
    Инфу нарыл тут
    https://technet.microsoft.com/en-us/library/cc7490...
    Ответ написан
    Комментировать
  • Передача сообщения через SignalR. Как сделать однократное соединение с сервером?

    Lapish72
    @Lapish72
    Нет примера вызова методов из вашего класса, но могу предположить, что вы каждый раз инициализируете его. Вам нужно сделать ваш класс Singleton'ом. Для этого в Startup ConfigureServices зарегистрируйте ваш сервис:
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<ВашСервис>();
        }
    }

    И затем в Program:
    public class Program
    {
        public static async Task Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();
            var service = host.Services.GetRequiredService<ВашСервис>();
            service.ConnectToServer(); //Подключаемся к SignalR
    
            host.Run();
        }
    }


    UPD:
    Советую поменять название класса на более общее, например, SignalrService, а метод SendToSignalR на Connect.
    Ответ написан
    6 комментариев
  • Как на камерах Hiwatch настроить оповещения на email?

    @srg_vk
    На камерах Hiwatch/HikVision интересная штука - под пароль отводится 16 символов, а mail.ru генерирует 20.
    На все просьбы исправить это - 0 эмоций, что со стороны Hiwatch/HikVision, что со стороны mail.ru.
    Решение:
    Создаем ящик на yandex.ru - для сторонних приложений генерируется пароль в 16 символов и наслаждаемся сообщениями от камер.
    Ответ написан
    1 комментарий
  • Mikrotik DHCP server?

    @Ovsiannikov
    1. в настройках dhcp-server включить "add arp for leases"
    2. в настройках интерфейса к которому подключены юсеры настроить arp - "reply-only"
    как результат - работать смогут либо пользователи получившие адрес по дхцп, либо для которых прописана статическая АРП запись.
    Ответ написан
    Комментировать
  • Как отключить автоматическую отмену сделанных изменений?

    Adler_lug
    @Adler_lug
    А файлы проекта где хранятся?
    Что-то похожее наблюдал, когда проект был на примонтированном облачном диске (Mega) и он из-за какого то глюка постоянно файл синхронизировал с облака.
    Ответ написан
    5 комментариев
  • Жёсткие диски "для видеонаблюдения": реальная необходимость или маркетинг?

    fdroid
    @fdroid
    press any key
    1) У Purple отключена парковка, которая для дисков, использующихся в видеонаблюдении, нужна как зайцу стоп-сигнал.
    2) Purple подходят для использования в RAID-массивах опять же из-за отключенной парковки, а также за счёт поддержки TLER.
    3) Есть ещё какие-то оптимизации в прошивке, связанные именно с заточкой под видеонаблюдение. Где читал - искать лень, сами нагуглите при интересе.
    Ответ написан
    3 комментария
  • Как экспортировать C# проект одним .exe?

    Если у вас .net Core (или .net 5+), то сделайте Single file application
    Если у вас .net Framework, то используйте Costura.Fody
    Ответ написан
    Комментировать
  • Из-за чего checkbox не реагирует на нажатия?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Не забываем, что id должен быть уникален для каждого чекбокса и соотверственно лейбы, связанной с ним.
    Поэтому более интересным решением будет подобная разметка
    <label class="checkbox">
    	<input type="checkbox">
    	<span class="label_text">Я переключаю чекбокс</span>
    </label>

    С последующей стилизацией елемента label_text
    Вот статья
    https://dimox.name/custom-checkboxes-and-radio-but...
    Ответ написан
    Комментировать
  • Почему не происходит десериализация json?

    Я попробовал запустить ваш код у себя. У меня такое же поведение.
    Видимо, по-умолчанию System.Text.Json не применяет никаких автоматических конвертаций имён.
    Указал JsonPropertyName и всё заработало.

    using System;
    using System.Text.Json;
    using System.Text.Json.Serialization;
    
    var json = "{\"id\":1,\"number\":42,\"bagGUID\":null}";
    var data = JsonSerializer.Deserialize<Barcode>(json);
    Console.WriteLine(data!.ToString()); // выведет "Barcode { Id = 1, Number = 42, BagGuid =  }"
    
    record Barcode
    {
        [JsonPropertyName("id")]
        public int Id { get; init; }
        [JsonPropertyName("number")]
        public int Number { get; init; }
        [JsonPropertyName("bagGUID")]
        public Guid? BagGuid { get; init; }
    }
    Ответ написан
    1 комментарий
  • Какие SFP модули выбрать для соединения HP и D-Link?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если у Вас имеется только одно волокно - Вы ограничены только WDM-модулями. Для одномодового волокна, как Вы сообщаете.

    WDM модули передают на одной длине волны, принимают на другой. Соответственно нужна пара модулей, у которых длины волн совпадают "накрест" - один модуль на некоей волне вещает, второй слушает. И наоборот. Если при этом у них ещё и скорости совпадают, то будет между ними мир, трафик и счастье... и, как правило, плевать на вендора, у меня работали (а кое-где и сейчас работают) комплементарные пары самых диких сочетаний.

    Не, это ещё пока полдела. SFP-модуль - это достаточно неглупая машинка. И, чтобы она правильно и успешно работала в коммутаторе, она должна быть соотв. образом прошита. И вот тут у меня для Вас плохие новости - если D-Link достаточно "всеядны", и SPF с ними уживаются, как правило, "искаропки", то вот оборудование HP отличается в этом смысле изрядной капризностью. И надо проверять конкретный коммутатор и конкретный SFP - заведётся ли одно в другом, или нет. Но тут либо экспериментально, либо при приобретении чётко указывать, что SFP будет работать в HP.
    Ответ написан
    6 комментариев
  • Совместимы ли HP 1910-8 (JG536A) и SFP от DLink?

    ProstoTyoma
    @ProstoTyoma Автор вопроса
    С запозданием отвечу сам. Работает без проблем и с гигабитными DEM330 и со 100М DEM220.
    Ответ написан
    Комментировать
  • Какой sfp модуль выбрать?

    karabanov
    @karabanov
    Системный администратор
    Попутал местами цвета и длины волн, теперь всё исправил.

    Если с одной стороны модуль жёлтый или фиолетовый TX1550 и RX1310, то с другой стороны модуль синий TX1310 и RX1550.
    TX - передача от английского transmit
    RX - приём от английского recive

    У вас может и не заработать с SFP, так как на той стороне возможно тоже стоит медиаконвертер, а он на 100 мегабит, то есть вам придётся играться с дуплексом и скоростью. Справедливо и обратное, возможно провайдер настраивает скорость и дуплекс на оптическом порту своего коммутатора в который вставлена SFP-шка, а абоненту ставит такой медиаконвертер.

    И да, тип разъёма у этого медиаконвертера SC, значит и SFP-шка должна быть SC, а не LC иначе придётся патчкорд менять.

    Если у вас должен быть вот точно такой медиаконвертер, ка на картинке, то вам нужна жёлтая или фиолетовая SFP-шка Tx:1550/Rx:1310 разъём SC вместо этого медиаконвертера такая же как этот медиаконвертер (ну под картинкою написано Конвертер UTP to fiber, 100Мбит/c, WDM, SM, SC, Tx:1550/Rx:1310, 20 км)

    Вот такая:
    SFP-1M-20SC-B1.pngSFP-G-20SCDP-B2.png
    Ответ написан
    7 комментариев
  • Как написать скрипт на Mikrotik-e для автоматического отключения и включение Layer 7 Protokol-а?

    @smesh
    Сами ключи 7 уровня не могут отключаться, но можно отключить правила которые на него ссылаются(если правило\правила отключены пакеты не обрабатываются ключами и нагрузки на аппаратную часть нет).
    Соответственно делаем скрипты отключающий\включающий нужные правила, и запихиваем скрипты в шедулер, что-бы они выполнялись попеременно с интервалом в 10 минут.

    (UPD - готовое решение)

    1) Отмечаем нужное правило уникальным коментом.
    Для примера будем рассматривать правила в Filter Rules и пометим нужные коментом "RulesF".
    2) Создаем скрипты из консоли:
    system script add name="Layer7-disable" source="/ip firewall filter set [find comment="RulesF"] disabled=yes"

    и
    system script add name="Layer7-enable" source="/ip firewall filter set [find comment="RulesF"] disabled=no"

    Скрипт "Layer7-disable" выключает все правила в Filter rules с коментом "RulesF", а скрипт "Layer7-enable" - включает.
    3) Создаем задачи в шедулере из консоли:
    system scheduler add name="Layer7-disable" start-date=Jan/01/2019 start-time=00:10:00 interval=00:20:00 on-event="/system script run Layer7-disable"

    и
    system scheduler add name="Layer7-enable" start-date=Jan/01/2019 start-time=00:00:00 interval=00:20:00 on-event="/system script run Layer7-enable"

    Правила будут выполняться попеременно с интервалом в 10 минут.
    Ответ написан
    9 комментариев
  • Flying Bear Ghost 4S почему нет подачи филамента?

    @MarkusD
    все время мелю чепуху :)
    Дело оказалось в порядке полярностей на шлейфе сервы. Обычно серва мечется вместо плавного вращения тогда, когда одна ее обмотка толкает в противоположную другой обмотке сторону.
    В этом случае стоит проследить чтобы последовательность пинов на выходе совпадала с последовательностью на входе.
    Подключение Nema 17 для примера
    nodemcu-esp8266-12-e-controlling-stepper-motor-over-wifi_orig.png
    Ответ написан
    Комментировать
  • Xamarin Forms как сделать навигацию по трем и более страницам?

    @relov
    Разрабатываю на c#
    App.cs
    MainPage = new NavigationPage(new MainPage());
    далее навигация осуществляется следующим образом:
    await Navigation.PushAsync(new Page1());
    Подробнее можно почитать в доке https://docs.microsoft.com/ru-ru/xamarin/xamarin-f...
    PS, рекомендую ознакомиться так же с Shell которая так же позволяет осуществлять навигацию
    https://docs.microsoft.com/ru-ru/xamarin/xamarin-f...
    Ответ написан
    Комментировать
  • Как передать телеграм боту число?

    Преобразовать строку, введённую пользователем в число с помощью int.Parse?
    Ответ написан
    1 комментарий
  • C# com-порт получение информации, обработка старт-бита, стоп-бита?

    @vitvov
    Если я правильно понял ваш вопрос, то ваше устройство шлёт постоянно данные и вам нужно только читать.
    Все что вам нужно, это создать подключение к порту и подписаться на событие обновления. При возникновении события вы получите массив данных с порта, этот массив вы сохраняете в буфер или разбираете на лету (как вам удобнее). Напишу для вас маленький пример:
    //  Наследуем наш клас от SerialPort для более красивого кода
    public class MySerialPort : SerialPort
    {
            private const int DataSize = 54;    //  я так и не понял, какой размер данных нужен. Укажите правильное число в байтах
            private readonly byte[] _bufer = new byte[DataSize];
            private int _stepIndex;
            private bool _startRead;
    
            public MySerialPort(string port)
                : base()
            {
                //  все папаметры вы должны указать в соответствии с вашим устройством
                //base.PortName = COM1;
                base.BaudRate = 115200;
                base.DataBits = 8;
                base.StopBits = StopBits.Two;
                base.Parity = Parity.None;
                base.ReadTimeout = 1000;
    
                //  тут подписываемся на событие прихода данных в порт
                //  для вашей задачи это должно подойт идеально
                base.DataReceived += SerialPort_DataReceived;
            }
    
            //  открываем порт передав туда имя
            public void Open(string portName)
            {
                if (base.IsOpen)
                {
                    base.Close();
                }
                base.PortName = portName;
                base.Open();
            }
    
            //  эта функция вызвется каждый раз, когда в порт чтото будет передано от вашего устройства
            void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                var port = (SerialPort)sender;
                try
                {
                    //  узнаем сколько байт пришло
                    int buferSize = port.BytesToRead;
                    for (int i = 0; i < buferSize; ++i)
                    {
                        //  читаем по одному байту
                        byte bt = (byte)port.ReadByte();
                        //  если встретили начало кадра (0xFF) - начинаем запись в _bufer
                        if (0xFF == bt)
                        {
                            _stepIndex = 0;
                            _startRead = true;
                            //  раскоментировать если надо сохранять этот байт
                            //_bufer[_stepIndex] = bt;
                            //++_stepIndex;
                        }
                        //  дописываем в буфер все остальное
                        if (_startRead)
                        {
                            _bufer[_stepIndex] = bt;
                            ++_stepIndex;
                        }
                        //  когда буфер наполнлся данными
                        if (_stepIndex == DataSize && _startRead)
                        {
                            //  по идее тут должны быть все ваши данные.
    
                            //  .. что то делаем ...
                            //  var item = _bufer[7];
    
                            _startRead = false;
                        }
                    }
                }
                catch {}
            }
    }

    использовать это нужно так:
    var port = new MySerialPort();
    port.Open("COM5");

    Это код прототипа, всего лишь техника работы которая может помочь вам.
    Ответ написан
    2 комментария
  • Netwatch и отключение интерфейсов. Или что я делаю не так?

    karabanov
    @karabanov
    Системный администратор
    Можно попробовать прошивку модема обновить:
    /interface lte firmware-upgrade lte1 upgrade=yes
    И как обновится сказать:
    /interface lte at-chat lte1 input="AT+reset"
    Ответ написан
    1 комментарий
  • Как на камерах Hiwatch настроить оповещения на email?

    deepblack
    @deepblack
    На Hikvision немного отличается интерфейс:
    5e429b056b9bf847988274.png

    Как вариант (если с Гуглом не получится) попробовать отправлять через Яндекс.Почту
    Ответ написан
    2 комментария