Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/43: Рейтинг темы: голосов - 43, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 13

Передача через COM - порт: разобраться с количеством битов

04.12.2012, 17:00. Показов 8578. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Была поставлена задача проверить работу последовательного порта.
Передаваемые данные генерируются, принимаемые данные накапливаются в памяти; дополнительный контроль - суммированием посылок с циклическим переносом; скорость обмена - от 1200 до 19200 Бод; длина байта - 5 бит.

Поскольку всего 5 бит информационные, то достаточно полинома 3 степени и 3 бит для проверки, что вписывается в байт. Мне показалось, что отправлять целый байт с 3 битами проверочных символов, это кощутство, да и на производительности хреново скажется. Поэтому решил допихивать их в байт с информацией.Хотя тоже спорный вопрос.
Возник вопрос, как подобное действие совершить?

Саму передачу я вижу как то так.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Процедура отправки байта
        unsafe private void Send(byte b, bool error) {
                edtSendByte.Text = "";
            //Если посылаем в канал с помехами
            if (error)
            {
                //С вероятностью в 40% генерируется ошибка
                if ((new Random()).Next(0,5) > 2)
                    //В b - новый посылаемый байт
                    b = (byte)(new Random()).Next(0, 32);
            }
            //Тут надо сделать сдвиг и вычислить CRC
 
 
 
 
            int n = 0;
            edtSendByte.Text += b.ToString("X2")+" " ;
            edtSendByte.SelectionStart = edtSendByte.Text.Length;
            edtSendByte.ScrollToCaret();
            //В стек кладем таймер, который потом в конце нам скажет, сколько времени шёл этот символ.
            st.Push(new TResult());
            do {
 
                System.Threading.NativeOverlapped ol = new System.Threading.NativeOverlapped();
                //Отправляем в HandleOut байт b длиной 1.
                if (!NativeMethods.WriteFile(HandleOut, &b, 1, &n, ref ol)) {
                    Log("Пачка не отправлена");
                    return;
                }
                //И повторяем отправку, пока не отправится этот символ
            } while (n < 1);
        }
Здесь нету сдвига и собственно реализации CRC-3, большей мне и не надо.

Возможно я не понимаю самого смысла и правильнее будет собрать сначала 4 байта информации( 8 сгенерированных чисел) затем воспользоваться CRC 4 и получить еще 4 байта хеша и отправить в догонку?
В общем вопросов много, нужно, чтобы кто то помог поставить мозги на место.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2012, 17:00
Ответы с готовыми решениями:

Передача данных через ИК порт
Нужно организовать систему передачи данных через инфракрасный на ассемблере. ИК должен подключаться к ком порту. Подскажите пожалуйста,...

Передача сообщений через com порт на си
Добрый день. Столкнулся с такой ситуацией. Нужно передать с 1 компьютера сообщение на другой компьютер ( любое английское слово) по ком...

Передача через COM-порт. Отображение
Всем доброго времени суток. Проблема возникла такая, что при приёме данных (текста в кириллице) отображение в текстбокс происходит не...

21
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 13
06.12.2012, 00:13  [ТС]
Студворк — интернет-сервис помощи студентам
но CRC-то вы суете не 5-ти битный.
Я это понимаю, и возникает вопрос, как лучше выбраться из этой ситуации?Разделить CRC,чтобы пропихнуть в 5бит или еще как нибудь?
на самом деле вы эти 5-бит можете включить в "нормальный" байт, а оставшиеся биты занулить.
Увы преподаватель счет это слишком простым выходом из ситуации.Короче не разрешили.....
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
06.12.2012, 08:38
Увы преподаватель счет это слишком простым выходом из ситуации.Короче не разрешили.....
чушь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2012, 08:38

Передача данных через Com порт
Добрый день форумчане! Мне с помощью программы &quot;free-serial-port-monitor&quot; удалось считал данные, которыми через com порт обменивались...

Передача данных через последовательный порт
Ребят, всем добрый вечер! Предстоит следующая задача: нужно реализовать, например - в отдельном классе, функции для передачи данных через...

Передача файлов на телефон через COM порт
Помогите пожалуста понять как можно осуществить передачу файлов на мобильный телефон через АТ команды!Как посылать АТ команды на телефон и...

Передача данных через com -порт на микроконтроллер
Добрый день. Учусь передавать данные на микроконроллер. Данные передаются по com порту. Почитал информацию и своял во это: using System; ...

Получение и передача данных через COM порт
Добрый день Мне кажется, я изобретаю велосипед и должно быть полно примеров такого кода. Но ничего найти не удалось. Суть:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
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. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru