Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Voronwe
0 / 0 / 1
Регистрация: 27.10.2014
Сообщений: 5
1

Общение с принтером через serial_port и exception "Inappropriate ioctl for device"

27.10.2014, 15:01. Просмотров 948. Ответов 4
Метки нет (Все метки)

Доброго времени суток!
Только начал использовать библиотеку Boost и хочу с её помощью посылать команды на мой принтер vkp80 ii. Я работаю в linux. Притер автоматически подключается к ноде /dev/usb/lp0 и я могу передавать в него текст самым тупым способом (cat > /dev/usb/lp0), то есть здесь проблем нет. Проблемный код в моей программе выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    name = "/dev/usb/lp0";
 
    try
    {
      serial_port port(io, name);
      
      if(port.is_open())
      {
    std::cout << "Порт открыт" << std::endl;
    write(port, buffer(data, sizeof(data)));
    port.close();
      }
      else
    std::cout << "Не удалось открыть" << std::endl; 
    }
    
    catch (std::exception& e)
    {
      std::cerr << "Exception here: " << e.what() << std::endl;
    }
При запуске генерируется исключение на пятой строке:
Bash
1
Exception here: open: Inappropriate ioctl for device
Я не совсем понимаю причин возникновения этого исключения и подозреваю, что я неправильно работаю с библиотекой boost. Прошу помочь! =)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2014, 15:01
Ответы с готовыми решениями:

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd"
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере...

Как и на чем написать и скомпилировать программу, чтоб загружалась через bootmgr и выводить "hello world"?
Ну что-то типа совсем простой ОС, если это можно так назвать.

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz")
Найти в строке последовательность символов (&quot;abcd&quot;) и заменить ее другой...

О "нестабильности" или "переполнении" цикла foreach
Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь:...

Ошибка: invalid conversion from "int" to "SDL_RendererFlip"
Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что...

4
castaway
Эксперт С++
4937 / 3042 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.11.2014, 09:24 2
Проблема в том, что /dev/usb/lp0 это не последовательный порт, а параллельный (LPT).
boost::asio::serial_port - из названия понятно, что это класс для работы с последовательный портом.
0
Voronwe
0 / 0 / 1
Регистрация: 27.10.2014
Сообщений: 5
05.11.2014, 17:35  [ТС] 3
Спасибо!

А какие стандартные, или самые популярные, средства для работы с параллельным портом в c++ есть?
0
castaway
Эксперт С++
4937 / 3042 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
06.11.2014, 12:15 4
В C++ нет таких средств. Для Linux можно попробовать воспользоваться библиотекой CUPS - http://www.cups.org/documentation.php/api-cups.html
Но я сам с ней не работал.
0
Voronwe
0 / 0 / 1
Регистрация: 27.10.2014
Сообщений: 5
21.11.2014, 19:16  [ТС] 5
Спасибо. Я начинаю немного проникать и там всё не очевидно =)
0
21.11.2014, 19:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2014, 19:16

CString buff = "aaa" + "bbb"
Хочется одним оператором конкатенировать несколько подстрок CString buff =...

Qt Creator. Все "за" и "против"
Доброго времени суток, форумчане! Сегодня задался вопросом использования такой...

Cannot get serial info: Inappropriate ioctl for device
Программирую китайский Arduino UNO, chipset CH340. IDE его видит, порт:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru