Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 18.02.2021, 15:20  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 709
Сказал спасибо: 363
Сказали Спасибо 795 раз(а) в 370 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Здесь обсуждается C#?

В .NET компонент SerialPort порой вызывал некоторые эмоции,
Сообщение от eddy Посмотреть сообщение
(хотя более подходящим было бы нецензурное слово)

Требовался прием символов ASCII (байтов в диапазоне 0x20..0xFF), использовалась функция SerialPort.Readline(); функция блокирующая - возвращает управление при получении строки, заданной в свойстве SerialPort.NewLine (по умолчанию это "\n").
Размер входных пакетов не превышал размеров приемного буфера.

Делалось так:
1) Все посылки извне на приемник SerialPort заканчивались символом '\n' (ну или иным, который задается в свойстве SerialPort.NewLine). Понятно, что сам символ не должен встречаться в середине пакета.
2) Данные вычитывались как строка в отдельном потоке, поскольку чтение - блокирующая операция.
3) После получения и/или анализа строковых данных предпринимались нужные действия (установить флаг/сгенерировать событие/отослать ответ и т.д.)

PHP код:
// это в отдельном потоке
...
while (
true)
{
 try
    {
        var 
packet _port.ReadLine();
        if (
packet.StartsWith("$SY")) // наш пакет
        
{
            
// тут делаем что нужно
            //_port.Write(_dataToSend, 0, _dataToSend.Length);
        
}
    }
    catch (
TimeoutException)
    {
        
// делаем что-то (или ничего не делаем)
        
Console.WriteLine("Timeout");
    }
    catch (
Exception exc)
    {
       
// сохранить Exception для внешнего мира
       
break;
    }
}
... 
Реклама:

Последний раз редактировалось j-Roger; 19.02.2021 в 01:43.
j-Roger вне форума  
Сказали "Спасибо" j-Roger
rusyvochka (19.02.2021)
Непрочитано 19.02.2021, 11:23  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: Здесь обсуждается C#?

Благодарю! Как-то Try/cath даже не подумал применить в данном случае. Всё стало на места.
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему здесь люди обсуждают такие простые вещи? Скайнет Отвлекитесь, эмбеддеры! 89 06.09.2015 23:40
Анекдот, анекдот ... (часть 1) DK Отвлекитесь, эмбеддеры! 8148 05.06.2013 23:14
Проверенная плат и PCB IDC2 лежит здесь. DL36 Микроконтроллеры, АЦП, память и т.д 1 20.02.2007 01:07
SPI карта памяти... Дима Микроконтроллеры, АЦП, память и т.д 29 19.07.2005 09:03
32 Mb flash spi Дима Микроконтроллеры, АЦП, память и т.д 17 14.08.2003 11:28


Часовой пояс GMT +4, время: 18:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot