Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для Delegat
106 / 16 / 4
Регистрация: 13.04.2009
Сообщений: 104

Неверные данные с COM порта

09.07.2013, 12:06. Показов 3404. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Пишу ПО для работы с автовесами. Данные передаются через COM порт. У меня есть код для приема данных:

C#
1
2
3
4
5
6
7
8
9
10
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            int byteRecieved = serialPort1.BytesToRead;
            byte[] mBytes = new byte[byteRecieved];
 
            serialPort1.Read(mBytes, 0, byteRecieved);
 
            string s = BitConverter.ToString(mBytes);
            Console.WriteLine(s);
        }
Байты бегут, значения их меняются при смене веса, НО!!! Приходят данные, отличные от того, что дано в документации.

Например я получаю с весов следующее:

C++
1
2
82-3A-81-A0-C5-B2-C1-B0-C1-B0-C1-8D-
82-3A-81-A0-C5-B2-C1-B0-C1-B0-C1-8D
А по документации начальный байт должен быть 0x2, а КС - 0xD. Здесь даже близко такого нет. В общем у меня приходят совершенно другие данные и вес я снять не могу. Более того, в документации размер пакета - 16, а у меня только 12.

Подскажите в чем может быть проблема?

PS. Данные текут непрерывным потоком.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.07.2013, 12:06
Ответы с готовыми решениями:

Неверные данные
Добрый день. Решая очередную задачу наткнулся на проблему, что данные, которые записываются в файл не совсем верные, хотя по коду, вроде,...

Неверные данные в отчете
Добрый день, Уважаемые форумчане! Есть задание доработать базу в Access. Первое с чем я столкнулся это --почему в отчете выходит...

TCP Сокет. Иногда приходят неверные данные
При отправка данных с клиента на сервер....иногда случается так, что данные отправленные на сервер клиентом не совпадают в теми что пришли...

3
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
10.07.2013, 15:39
Добрый день.
Перво-наперво сверьте с документацией параметры порта, которые вы выставляете в своем приложении: Baud Rate, Parity, Stop Bits, Data Bits и т.д.
В 90% случаев кривые данные приходят из-за несовпадения параметров порта на девайсе и контроллере.
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
10.07.2013, 16:19
не хочу наговаривать на класс SerialPort, но его событие DataReceived не всегда срабатывает на полный ответ, т.е. ответ иногда разбивается на 2 ответа. (хотя может у меня такие девайсы попадаются)

в общем как избавлялся от этой проблемы:
читал в отдельном потоке по 1 байту с порта (беспрерывно)
после прочтения определённого байта проверял не конец-ли это посылки (по протоколу девайса и проверкам контрольной суммы)
если конец то обнулял буфер, вызывал событие.

если наступил тайм-аут, а посылка ещё не пришла: или событие отсуствия ответа (если буфер совсем пуст), либо события ошибочного CRC (если есть хоть байт).

если нужно могу код скинуть.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
10.07.2013, 16:48
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
его событие DataReceived не всегда срабатывает на полный ответ, т.е. ответ иногда разбивается на 2 ответа.
Совершенно верно. Срабатывание события зависит от свойства ReceivedBytesThreshold. Если там поставить 1, то событие будет срабатывать как только придет первый байт сообщения.
Если используется протокол с всегда фиксированной длиной сообщений, то это значение можно просто выставить на длину сообщения и в обработчике считывать сообщение целиком.

А так — да, надо считывать кусками.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.07.2013, 16:48
Помогаю со студенческими работами здесь

Датчик температуры DS18B20: на выходе неверные данные
Вечер добрый. Подскажите как решить проблему с датчиком температуры. В общем если не углубляться, то msByte приходит 11111111. И вот я не...

Неверные данные при изменении частоты передачи
В скетче каждые N миллисекунд отправляются данные с датчика в приложение на android. При изменении частоты передачи расстояния датчика...

EasyTable - неверные данные для поля TIME
что означает это сообщение? использовал базу данных EasyTable.

Шифрация сессий: скрипт PHP передает неверные данные в программу
Вот есть код php: function xorencode($str, $key) { while(strlen($key) < strlen($str)) { $key .= $key; } return...

При вводе даты рождения и номера телефона в структуру выдает неверные данные
#pragma hdrstop #pragma argsused #include <tchar.h> #include <stdio.h> #include <conio.h> #include <iostream.h> #include...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru