![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
31337Ghost |
|
||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.2.2011 Репутация: нет Всего: нет |
Введение.
Есть у меня устройство - ультразвуковой дальномер, он работает по шине rs485. Есть у меня преобразователь интерфейса - rs485<->USB. Есть к этому дальномеру пример софта, написанный на VC++, вот: http://www.robot-electronics.co.uk/files/srf48.zip. Под WinXP все работает как надо, показывает дистанцию безо всяких проблем. Переписал с горем пополам это на C++ в линуксе. Получился исходник следующего содержания:
До этого с нюансами языка программирования "СИ" ни разу не разбирался, и вот проблема. Представленный выше код даже рабоатет, но есть маленькая загвоздка - в выводе результатов. Вобщем что я вижу на выходе:
Т.е. я впринципе не вижу значения дистанции больше 127см. Увеличивая физически дистанцию между дальномером и объектом измерения я получаю на экран убывающие значения со знаком "-". На приведенном выводе с экрана дистанция физически увеличивалась до самого конца экранного вывода, т.е. в начале реальное расстояние было действительно 105 см, а в конце я отодвинул дальномер от объекта на расстояние около 165 см (что и ожидал увидеть на экране) ![]() |
||||
|
|||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 1 Всего: 49 |
Во-первых, это код на C (а не на C++).
Во-вторых, то, что Вы сейчас видите на экране - это нормальное поведение этой программы. В стандарте языка C значения типа char меняются в диапазоне от -127 до 127. Дело не в "особенности C++ вкупе с линуксом", а в "особенностях" (это если деликатно выражаться) компиляторов от Microsoft, в которых стандарты нарушаются чуть менее чем везде. Сделать надо следующее: везде, где встречается объявление чего-то типа char, заменить тип на unsigned char. |
|||
|
||||
31337Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.2.2011 Репутация: нет Всего: нет |
Спасибо большое за помощь. Проблему именно такого характера я и ожидал. Дело в том что я с языком СИ не знаком совсем, чего-то делал в Дельфи, ПХП, Перл - с этими языками хоть какое-то представление есть, а вот СИ(++) полный 0. Но ИМХО это как "левел ап" в понимании програмизма, углубление в низкоуровнивоость, если можно так выразиться. Спасибо. Буду "грызть" дальше.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |