Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 28 из 28

Тема: DX cluster and C#

  1. #21

    Регистрация
    02.11.2009
    Адрес
    Воронеж
    Сообщений
    712
    Позывной
    RN3KK
    Новички всегда отдают дань моде, т.к. подвержены этому со стороны разработчиков IDE. Скачал, начали писать. А что внутри, не всегда бывает интересным.


  2. #22
    Цитата Сообщение от UZ5DM Посмотреть сообщение
    Но в winform не хочет работать.
    Запустил в отельном потоке (Thread) - все равно не идет

    Да и еще вопрос - как корректно закрыть tcpClient ?
    Можете использовать мой код для DX-кластера отсюда: http://ua3gdw.ru/index.php/loggernet-download Там исходники выложены.

    Добавлено через 5 минут(ы):

    Цитата Сообщение от UZ5DM Посмотреть сообщение
    Наверное модератору нужно переименовать тему в - Разработка на C#
    Это будет правильнее. Тогда можно будет тут общаться по разным вопросам связанным с C#
    На моём сайте есть и WinForms - контроллы (с исходниками) написанные лично мной в процессе изучения C#.
    Последний раз редактировалось UA3GDW; 14.09.2017 в 21:40.

  3. Спасибо от UZ5DM

  4. #23
    Аватар для UZ5DM
    Регистрация
    27.07.2017
    Адрес
    nr Uzhgorod
    Сообщений
    159
    Записей в дневнике
    1
    Позывной
    UZ5DM
    Спасибо огромное UA3GDW !

  5. #24

  6. #25
    Аватар для RX1AL
    Регистрация
    06.02.2009
    Адрес
    Санкт Петербург
    Сообщений
    3,951
    Цитата Сообщение от alex_m Посмотреть сообщение
    ....
    Для асинхронных операций можно также посмотреть в сторону Task-based асинхронное программирование, в частности async await.
    Это другая концепция, но она доступна только начиная с .NET 4.5. И для начинающих думаю сложновато будет.
    Справедливости ради, пространство имен System.Threading.Tas ks доступно начиная с версии .NET 4.0.
    И поддерживается на Windows XP с пакетом обновления 3 (SP3). Так что можно использовать и Task<T>
    тоже совместно с async / await. В 4.5 версии просто много чего вкусного добавили и все. Но для простых
    вещей врядли пригодится все.
    Один момент по коду. За использование BeginInvoke как при вызове из самого контроля, так и у делегата
    по-хорошему бьют по рукам. Просто у нас многие программисты не читают доки MSDN, а там абсолютно
    четко черным по белому об этом написано, что такое использование нарушает синхронизацию. Если, конечно,
    наплевать на отсутствие thread-safe, то вперед. Но в серьезных приложениях так не делают. А правил всего
    только 3, цитата из оф. доки:

    "This leads to three simple rules:
    If you update the control only from the UI thread, use neither InvokeRequired nor Invoke
    If you update the control only from a thread other than the UI thread, use only Invoke.
    If you update the control from both the UI thread and other threads, use Invoke in combination with InvokeRequired."

    И для простоты написания лучше всего поставить себе из гита Reactive Extensions (React .NET) и делать удобные
    вещи и не заморачиваться на многие проблемы, так как фреймворк "подумает" за вас. И если уж используются
    WinForms, то использовать надо паттерн MVVM, а не тупо апдейтить визуальные контроли из другого потока
    делегатом. Старый подход, который уже умер давно. Если говорим о современной версии .NET, то и давайте брать
    из нее лучшую практику (best practices), а не изобретать колесо заново.

    PS. Стоить заметить, что с использованием .NET Core 2.0 в связке с AvaloniaUI можно писать нативные
    приложения, которые по UI выглядят одинаково и на виндах и на линуксе. Про Mono забыли, уже давно
    другой подход. И не надо думать о Win32 API.

    Да и гораздо проще напиcать тогда уж хелпер:
    void UpdateUI(Action action)
    {
    if (InvokeRequired)
    {
    Invoke(action);
    }
    else
    {
    action();
    }
    }
    и использовать его как:
    UpdateUI(() => SampleLabel.Text = "Test");
    Михаил, ex UV1AL, RG1L, сейчас OE6MAF, HB9/OE6MAF, DL/OE6MAF
    DIG #5645, EPC #5908, #5909, KDR #21

  7. Спасибо от UZ5DM

  8. #26

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,423
    Цитата Сообщение от RX1AL Посмотреть сообщение
    PS. Стоить заметить, что с использованием .NET Core 2.0 и на виндах и на линуксе. Про Mono забыли, уже давно другой подход.
    а как насчет windows xp?

  9. #27
    Аватар для RX1AL
    Регистрация
    06.02.2009
    Адрес
    Санкт Петербург
    Сообщений
    3,951
    Цитата Сообщение от alex_m Посмотреть сообщение
    а как насчет windows xp?
    На ХР, к сожалению, .NET Core бежать не будет, так как ХР поддерживает только .NET не выше 4.0.
    .NET Core поддерживается на следующих версиях: Windows 7 SP1, Windows 8.1, Windows 10, сервера
    пропущены за ненадобностью. На линуксе: очень большой список дистрибутивов. На Mac OS X: не
    ниже 10.12+.

    PS. Ну и такой вопрос возник: а сколько можно поддерживать ХР по времени? Еще 15-20-30 лет? Может
    все-таки взять и поставить себе 7-ку, 8-ку? Ну, а может и 10-ку виндов? Холивар на тему, какая из них
    лучше и почему? - не хочу разводить. В свое время спорили уже. Скажу только одно: не встречал ни разу
    у многих радиолюбителей проблем с 7-кой и 8-кой, и их старым софтом. Проблемы могут быть только
    из-за (...) ручек, не более.
    Михаил, ex UV1AL, RG1L, сейчас OE6MAF, HB9/OE6MAF, DL/OE6MAF
    DIG #5645, EPC #5908, #5909, KDR #21

  10. Спасибо от UZ5DM

  11. #28
    любитель радио Аватар для UR4MJK
    Регистрация
    22.06.2005
    Адрес
    Украина
    Сообщений
    2,940
    Записей в дневнике
    1
    Что б не поднимать новую тему. Вопрос к более опытным товарищам. Столкнулся с такой задачей.
    При подключении к telnet-кластеру, каждый выводит свое приглашение, где-то это приглашение выглядит в виде "login", где-то приглашение выглядит как "Please enter your call:"
    В библиотеке telnetlib (Python) присутствует метод (read_until) который читает до определенного текста, то есть в первом случае это выглядит как telnetObj.read_until (b"login: "), во втором случае как telnetObj.read_until (b"Please enter your call: "), после получения данного текста в потоке - чтение останавливается и телнет-серверу выталкивается позывной. То есть получается

    print (telnetObj.read_unti l (b"Please enter your call: "))
    telnetObj.write (call+b"\n")


    Но получается решение не универсальное, потому, как может измениться приглашение и тогда перестанет работать этот код.
    Сейчас вышел из положения таким образом, что я вообще ничего не читаю, а просто выталкиваю серверу позывной (2 раза, т.к. его просят вводить два раза на всех кластерах, что я пробовал). А после этого уже начинаю читать, все, что сервер присылает и вывожу это. В принципе, такой подход работает, но что-то мне подсказывает что слепое выталкивание позывного не совсем верное решение.
    Парсинг строки приглашения исключен, потому как с telnet сервера читаются не строки, а поток байтов. То есть я не могу отловить строку приглашения по какому либо иному признаку, кроме текста.
    Собственно вопрос - как правильно выходить из этой ситуации?
    Сейчас я тестирую на паре телнет-кластерах - работает. Но вопрос покоя не дает.
    Буду благодарен за консультацию
    И еще было бы интересно прочесть как парсите получаемые строки, для последующей фильтрации?
    Последний раз редактировалось UR4MJK; 03.07.2019 в 15:18.
    73! Сергей

Страница 3 из 3 ПерваяПервая 123

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Dx cluster
    от ut7du в разделе Правовой практикум радиолюбителя
    Ответов: 3
    Последнее сообщение: 20.08.2012, 12:29
  2. Обезьяны в DX cluster
    от Марат Казей в разделе Для любителей КВ
    Ответов: 9
    Последнее сообщение: 07.11.2009, 10:53
  3. DX-cluster на 144МГц
    от UA3CFM в разделе Для любителей УКВ
    Ответов: 11
    Последнее сообщение: 25.02.2009, 18:43
  4. DX-cluster on air
    от RD3AN в разделе Программное обеспечение
    Ответов: 1
    Последнее сообщение: 08.11.2006, 22:47
  5. DX cluster со спутника и MixW2
    от alex74 в разделе Цифровые виды связи Новые технологии в электронике и связи
    Ответов: 7
    Последнее сообщение: 18.10.2005, 18:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •