![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Delegat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Добрый день. Пишу ПО для работы с автовесами. Данные передаются через COM порт. У меня есть код для приема данных:
Байты бегут, значения их меняются при смене веса, НО!!! Приходят данные, отличные от того, что дано в документации. Например я получаю с весов следующее: 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. Данные текут непрерывным потоком. |
|||
|
||||
a0730 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
это бит чётности.
COM порт или драйвер настроены на его передачу. каждый байт содержит чётное количество единиц. старший бит устаноавливается автоматически, если количество единиц нечётное. Т.е. данные весо 0x2 преобразуются в 0x82. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Delegat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Спасибо огромное, завтра проверю. ![]() |
|||
|
||||
Delegat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Проверил. Поставил бит четности Parity.Mark. В первый раз поймал правильное значение, потом полились опять неверные данные:
02-69-30-20-20-30-30-30-30-30-30-30-30-30-30-30-0D-3F-82-3A-3F-81-3F-A0-3F-C1-3F-B0-3F-C1-3F-B0 |
|||
|
||||
a0730 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
проблема в управлении портом.
похоже что настройка четности сбросилась после первого пакета. попробуй устанавливать настройки в программе. что нибудь вроде: SerialPort mySerialPort = new SerialPort("COM1"); mySerialPort.BaudRate = 9600; mySerialPort.Parity = Parity.None; mySerialPort.StopBits = StopBits.One; mySerialPort.DataBits = 8; mySerialPort.Handshake = Handshake.None; Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |