![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Tiffany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Не могу понять в чем дело. Смысл таков - надо послать одному устройству команду через послед. порт и получить ответ от устройства. Команда посылается и устройство её норм обрабатывает, потом оно должно отослать ответ и я его должна прочитать. Но при чтении (разными методами) прога либо виснет, либо вылетает, либо функция чтения возвращает ошибку.
В строке "f1.readBlock(buf, sizeof(buf));" пробовала и по другому: "read(f1.handle(), buf, sizeof(buf))" - тотже результат; "buf[0]=f1.getch()" - возвращает "-1". ![]() Есть какие-нибудь мысли? ![]() P. S. Правда в другой программе у мну норм читались ответы, тока они шли от другого ПК. Это было что-то типа миничата через послед. порты =) Настройки порта там конечно были другие, но и в этой программе (с устройством) я пыталась сделать следующий финт ушами - пишим команды с теми настройками что указаны вверху, а когда надо получать ответ, запускаем другой поток для чтения который устанавливает те настройки, с которыми работало чтение в чате, читает (должен был бы) ответ и возвращает обратно настройки для записи ![]() Но и в таком варианте тот же эффект =( Мож дело и не в настройках порта... хз ... ![]() Это сообщение отредактировал(а) Tiffany - 14.5.2008, 12:51 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Tiffany, а Qt здесь при чём? Тебе не в юникс-программирование случайно?
|
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
Tiffany
а почему ты юзаешь QFile ? разве QFile использует низкоуровневые функции open, close, read, write ? Даже если это так, то все равно опастно этим пользоваться - трроли однажды изменят внутреннию реализацию QFile на какие-нибудь стримы и все. мой тебе совет исполльзовать функции приведенные выше. ЗЫ чуть-чтуь бы еще изменил код твой, те настройку порта
Это сообщение отредактировал(а) chaos - 15.5.2008, 08:51 |
|||
|
||||
Tiffany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
chaos, угу, терь вроде все норм с такими настройками (правда проверить на устройстве смогу наверно только завтра, а сейчас проверяла между 2я компами - работает, и судя по com-монитору - настройки те что надо). Завтра узнаю наверняка. А QFile использовала потому, что обычный open тупо вылетает с ошибкой
![]() ![]() А кстати... я же QFile использовала, только чтобы открыть порт, а читать\писать то всеравно можно обычными read\write:
Это должно быть равносильно использованию этих функций с дескриптором полученным от open. Это сообщение отредактировал(а) Tiffany - 15.5.2008, 13:30 |
|||
|
||||
chaos |
|
||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
1. c какой ошибкой 2. Если QFile обертка для функция опен, клосе, рид, врайт то да, "можно" использовать, но я бы не стал ![]() |
||||
|
|||||
Tiffany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
chaos,
Та вот уже и непомню с какой. Помню что просто закрывается окно на "open" молча и все. Ну уже не суть. Пока все работает. Проблема с чтением решилась тоже довольно неадекватными действиями ![]() ![]() |
|||
|
||||
Ken |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 31.3.2007 Репутация: нет Всего: 4 |
Там у вас стоит опция:
В документации написано: In canonical mode: * Input is made available line by line. An input line is available when one of the line delimiters is typed (NL, EOL, EOL2; or EOF at the start of line). Except in the case of EOF, the line delimiter is included in the buffer returned by read(2). Т.е. пока полная строка с символами конца строки не придет, вы не получете ничего. Вы, как раз, установили этот режим. Что посылает устройство? Это сообщение отредактировал(а) Ken - 17.5.2008, 18:27 |
|||
|
||||
Tiffany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Ken, та работает уже все. Написано же - вопрос решенный.
|
|||
|
||||
Oligarch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
Помогите пожалуста.
Почему то при чтении из порта при помощи команды read(), читается не больше 14 символов, сколько бы я не указывал читать в последнем параметре read(). Вот код конфигурации порта и чтения из него:
Это сообщение отредактировал(а) Oligarch - 11.4.2009, 09:31 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под 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. |