Building ....при помощи лома. Вариации на тему COM порта от дилетанта

(1/1)

Мурман:
По ходу жизни требуется сделать инструментарий для демонстрации локальной задачи на микроконтроллере. Время для этого толком не дается. Да и начальство считает, что задача пустяковая..

За основу взяты исходники известного проекта. Мне нужно вывести на экран два ответа от внешнего устройства в бинарном формате. Я поставил заглушку на порт и предполагал увидеть все, что я отправляю в качестве запроса. Добавил свою функцию преобразования байта (а он всего один в 1 сек!!!), но к своему удивлению увидел только старший ниббл кода, а второй байт только сердцевину от ожидаемых 8ми знаков. Ради интереса решил глянуть младший ниббл, вернув из функции указатель &sss[4]. Такое вообще не понравилось программе,-полное молчание в окне!!!!  ....Отладчик не пускает в просмотр буфера.

Прошу высказать мнение. Где же причина такого поведения?  Благодарю заранее всех отозвавшихся! ::)  Раньше на Builder C++ не пробовал экспериментировать и потому не ограничивайтесь в выражениях.... ???

Вот такой экспромт!!!

Мурман:
Вот тут исходные проекты.

OVE:
Вы из функции char* convertcode (unsigned  char * str) возвращаете указатель на локальную структуру (return &sss[0]), содержимое которой, после выхода из функции будет неопределенным. Попробуйте объявить char  sss[9] как глобальную структуру, или, как вариант, при объявлении внутри функции укажите static char  sss[9].

Мурман:
Цитата: OVE от 18 Март 2015, 11:26:29

Вы из функции char* convertcode (unsigned  char * str) возвращаете указатель на локальную структуру (return &sss[0]), содержимое которой, после выхода из функции будет неопределенным. Попробуйте объявить char  sss[9] как глобальную структуру, или, как вариант, при объявлении внутри функции укажите static char  sss[9].


Спасибо за наводку. Я об этом знал, но что-то подумал, что раз работа через указатели, то проблемы не будет.

В итоге все заработало!  Немного и зменил тип одной из переменных.  Можно глянуть рабочий проект для освоения... =)

Мурман:
Вот еще один рабочий вариант(под другую задачу)

Навигация

[0] Главная страница сообщений