Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
12:04:2008, 13:09
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 25:03:2006 Пользователь №: 3 151 Репутация: 0
|
Помогите, кто чем может.. Совсем запуталась: написала прогу для передачи информации между радиоконтроллерами, вроде даже работает.НО!!! Перед отправкой информация складывается в массив, снала передается размер, потом сам массив функцией write. На стадии отправления все шоколадно, но вот когда принимающая сторона получает массив(read), то появлябтся знаки ##, очевидно проблема с указателями. Может кто посмотрит?
Пимичание: все типы, даже char занимают 2 байта!!! Просто компилятор такой тут! Функциивсе написаны, как меня уверяли разработчики, для работы со словами.
Прикрепленные файлы
|
|
Сообщение
#1
|
|
![]() |
|
|
15:04:2008, 08:48
|
|
Новенький ![]() Группа: Программист Сообщений: 45 Регистрация: 15:04:2008 Пользователь №: 16 634 Репутация: 0
|
sizeof( int ) == 1 !!???
да и вообще глядя на этот кусок кода трудно сказать что-то вразумительное....... |
|
Сообщение
#2
|
|
|
|
15:04:2008, 09:29
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 25:03:2006 Пользователь №: 3 151 Репутация: 0
|
Я же писала 2 байта!!! Все типы 2 байта!
Сообщение отредактировал Т&K - 15:04:2008, 09:32 |
|
Сообщение
#3
|
|
|
|
16:04:2008, 10:07
|
|
Новенький ![]() Группа: Программист Сообщений: 45 Регистрация: 15:04:2008 Пользователь №: 16 634 Репутация: 0
|
memcpy( &(buf[offset_common]), &ADDR2, 1 ); --- функция копирует словами!???
а почему бы тогда тебе не поменять все типы на один какой-нить конкретный, например "int" !!?? и не лучше ли будет записать вышеупомянутое выражение как: buf[offset_common] = ADDR2; !!!!!!!!! Сообщение отредактировал biz - 16:04:2008, 10:09 |
|
Сообщение
#4
|
|
|
|
16:04:2008, 11:48
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 315 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
|
|
Сообщение
#5
|
|
|
|
16:04:2008, 12:49
|
|
Новенький ![]() Группа: Программист Сообщений: 45 Регистрация: 15:04:2008 Пользователь №: 16 634 Репутация: 0
|
|
|
Сообщение
#6
|
|
|
|
16:04:2008, 13:06
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 135 Регистрация: 27:02:2004 Пользователь №: 296 Репутация: 6
|
Т&K
Я промоделировал вашу задачу в C++Builder'е, всё работает нормально. Значит, дело не в указателях. Следовательно, встречный вопрос: "появляются знаки ##" - всегда ли появляются? где появляются (во всём массиве, в опредлённых его местах, или случайно)? Быть может, дело в помехах радиоканала? Наверяка CRC предусмотрена как раз на этот случай. Код char addr2 = 1;
char buf[20]; char data[6] = "Hello"; char offset=sizeof(data); char offset_common = 0; memcpy(&buf[offset_common], &addr2, 1); offset_common += 1; memcpy(&buf[offset_common], data, offset); offset_common += offset; //Эмуляция передачи :) TMemoryStream* ms = new TMemoryStream(); ms->Write(&offset_common, 1); ms->Write(buf, offset_common); ms->Seek(0, soFromBeginning); char readBuf[20]; char readSize; ms->Read(&readSize,1); ms->Read(readBuf, readSize); |
|
Сообщение
#7
|
|
|
|
19:04:2008, 08:15
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 315 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
|
|
Сообщение
#8
|
|
|
|
19:04:2008, 12:25
|
|
Новенький ![]() Группа: Программист Сообщений: 6 Регистрация: 25:03:2006 Пользователь №: 3 151 Репутация: 0
|
Спасибо всем за комментарии, за помощь. Проблема решена! Всем спасибо!!!
|
|
Сообщение
#9
|
|
|
|
19:04:2008, 13:18
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 135 Регистрация: 27:02:2004 Пользователь №: 296 Репутация: 6
|
Т&K
Если не секрет, в чём была проблема? |
|
Сообщение
#10
|
|
|
|
21:04:2008, 03:51
|
|
Новенький ![]() Группа: Программист Сообщений: 45 Регистрация: 15:04:2008 Пользователь №: 16 634 Репутация: 0
|
|
|
Сообщение
#11
|
|
![]() |
|
Текстовая версия | Сейчас: 20:07:2008 - 22:24 |