Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| Гость_Гость_berserk_*_* |
7.7.2009, 21:52
Сообщение
#1
|
|
Гости |
Привет всем!
Пишу программу для работы с последовательным портом. в программе 3 класса. Первый работает непосредственно с портом, второй - форма, 3 ий для разбора полученной инфы. В программе есть платформозависимый код (в классе работы с портом) Первый прикол случился когда я в заголовочном файле объявил переменные в определённой последовательности))) притом в линуксе всё работало, а в винде на экран пёрли смайлики))). Долго ломал голову, поменял местами 2 объявления переменных и всё заработало. так работало только в линуксе, в винде были смайлики: а так работало везде buff переменная в которую пихались байты с порта, а затем выводились на экран, так вот если по первому коду после объявления buff объявлял что нибудь ещё, то в винде было смайлы))) второе. Сегодня на работе добавил 3 класс в котором разбирается строка прочитанная с порта. В винде всё компилируется и работает, а в линуксе программа вылетает при чтении данных с порта. При этом если 3 класс не наследует QObject или его потомков то всё работает (ну кроме сигналов и слотов которые нужны) подозреваю что косяк с #ifdef Q_WS_WIN/#ifdef Q_WS_X11 кто что понял с моих слов помогите плиз))) |
|
|
|
|
Litkevich Yuriy |
7.7.2009, 21:59
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Гость_Гость_berserk_*_* @ 8.7.2009, 1:52) Link притом в линуксе всё работало, а в винде на экран пёрли смайлики))). скорее всего дело в кодировке.
|
|
|
|
|
BRE |
7.7.2009, 22:01
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Ты бы показал как с buff работаешь.
Что-то мне подсказывает, что ты память затираешь. |
|
|
|
|
Litkevich Yuriy |
7.7.2009, 22:02
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Гость_Гость_berserk_*_* @ 8.7.2009, 1:52) Link for(i; i <= str.size(); i++) Цитата(Гость_Гость_berserk_*_* @ 8.7.2009, 1:52) Link if (str.at(i) == ' ') ты вылазишь на одну позицию за перделы строки
|
|
|
|
|
SABROG |
7.7.2009, 23:55
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Цитата(Гость_Гость_berserk_*_* @ 7.7.2009, 22:52) Link Первый прикол случился когда я в заголовочном файле объявил переменные в определённой последовательности))) притом в линуксе всё работало, а в винде на экран пёрли смайлики))). Дай угадаю. В винде используется вижуал, в линуксе gcc? Тут я бы еще понял, если бы переменная i начиналась в 1-цы. При твоем раскладе цикл выполнится 11 раз, если в строке 10 символов. Сообщение отредактировал SABROG - 7.7.2009, 23:59 |
|
|
|
|
berserk |
8.7.2009, 7:30
Сообщение
#6
|
|
Студент ![]() Группа: Участник Сообщений: 44 Регистрация: 9.2.2009 Пользователь №: 540 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 7.7.2009, 22:59) Link Цитата(Гость_Гость_berserk_*_* @ 8.7.2009, 1:52) Link притом в линуксе всё работало, а в винде на экран пёрли смайлики))). скорее всего дело в кодировке.а как кодировка может повлиять на порядок определения переменных? Цитата(BRE @ 7.7.2009, 23:01) Link Ты бы показал как с buff работаешь. Что-то мне подсказывает, что ты память затираешь. Цитата(SABROG @ 8.7.2009, 0:55) Link Цитата(Гость_Гость_berserk_*_* @ 7.7.2009, 22:52) Link Первый прикол случился когда я в заголовочном файле объявил переменные в определённой последовательности))) притом в линуксе всё работало, а в винде на экран пёрли смайлики))). Дай угадаю. В винде используется вижуал, в линуксе gcc? Тут я бы еще понял, если бы переменная i начиналась в 1-цы. При твоем раскладе цикл выполнится 11 раз, если в строке 10 символов. в винде mingw с циклом согласен, день был тяжёлый... |
|
|
|
| Гость_Гость_kuzulis_*_* |
8.7.2009, 7:44
Сообщение
#7
|
|
Гости |
Цитата Первый прикол случился когда я в заголовочном файле объявил переменные в определённой последовательности))) притом в линуксе всё работало, а в винде на экран пёрли смайлики))). а как вывод происходил? код в студию! |
|
|
|
|
BRE |
8.7.2009, 7:52
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
А куда buff указывает? Где память для него выделяется?
Код
|
|
|
|
|
Litkevich Yuriy |
8.7.2009, 10:39
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(berserk @ 8.7.2009, 11:30) Link а как кодировка может повлиять на порядок определения переменных? ни как, просто когда ты в виндовозе (студии) файл редактировал и затем сохранил, возможно, студия скорректировала кодировку файла.
|
|
|
|
|
kuzulis |
8.7.2009, 11:25
Сообщение
#10
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7
|
а не проще ли
вместо: написать тогда уж: и читать : ?? раз уж чтение по одному байту идет... ну и в нагрузку переписать чуть для юникса код и вообще использовать уже готовые для этого библиотеки либо QextSerialPort либо QSerialDevice зачем "лисапетить" ? |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 10:21 |