Чтение онлайн

на главную

Жанры

Разработка приложений в среде Linux. Второе издание

Троан Эрик В.

Шрифт:

127: poptContext optCon; /* контекст опций командной строки */

128: struct poptOption optionsTable[] = {

129: { "bps", 'b', POPT_ARG_INT, &speed, 0,

130: "скорость передачи сигналов, бит/с",

131: "<BPS>" },

132: { "crnl", 'с', POPT_ARG_VAL, &crnl, 'с',

133: "посылать символ возврата каретки с символом новой строки", NULL },

134: { "hwflow", 'h', POPT_ARG_VAL, &flow, 'h',

135: "использовать
аппаратное управление потоком", NULL },

136: { "swflow", 's', POPT_ARG_VAL, &flow, 's',

137: "использовать программное управление потоком", NULL },

138: { "noflow", 'n', POPT_ARG_VAL, &flow, 'n',

139: "отключить управление потоком", NULL },

140: { "raw", 'r', POPT_ARG_VAL, &raw, 1,

141: "включить неформатированный режим", NULL },

142: POPT_AUTOHELP

143: { NULL, '\0', 0, NULL, '\0', NULL, NULL }

144: };

145:

146: #ifdef DSLEEP

147: /* ожидать 10 минут, что позволить подключить отладчик */

148: sleep(600);

149: #endif

150:

151: optCon = poptGetContext("robin", argc, argv, optionsTable, 0);

152: poptSetOtherOptionHelp(optCon, "<port>");

153:

154: if (argc < 2) {

155: poptPrintUsage(optCon, stderr, 0);

156: die(1, "He достаточно аргументов", "");

157: }

158:

159: if ((с = poptGetNextOpt(optCon)) < -1) {

160: /* ошибка во время обработки опций */

161: fprintf(stderr, "%s: %s\n",

162: poptBadOption(optCon, POPT_BADOPTION_NOALIAS),

163: poptStrerror(c));

164: return 1;

165: }

166: portname = poptGetArg(optCon);

167: if (!portname) {

168: poptPrintUsage(optCon, stderr, 0);

169: die(1, "He указано имя порта", "");

170: }

171:

172: pf = open(portname, O_RDWR);

173: if (pf < 0) {

174: poptPrintUsage(optCon, stderr, 0);

175: die(1, strerror(errno), portname);

176: }

177: poptFreeContext(optCon);

178:

179: /*
изменить конфигурацию порта */

180: tcgetattr(pf, &pts);

181: pots = pts;

182: /* некоторые настройки устанавливаются произвольно */

183: pts.c_lflag &= ~ICANON;

184: pts.c_lflag &= ~(ECHO | ECHOCTL | ECHONL);

185: pts.c_cflag |= HUPCL;

186: pts.c_cc[VMIN] = 1;

187: pts.c_cc[VTIME] = 0;

188:

189: /* Стандартная обработка CR/LF: это неинтеллектуальный терминал.

190: * Не транслируется:

191: * нет NL -> отображение CR/NL в выводе,

192: * нет CR -> отображение NL во вводе.

193: */

194: pts.c_oflag &= ~ONLCR;

195: pts.c_iflag &= ~ICRNL;

196:

197: /* Теперь перейти на сторону локального терминала */

198: tcgetattr(STDIN_FILENO, &sts);

199: sots = sts;

200: /* и снова несколько произвольных настроек */

201: sts.c_iflag &= ~(BRKINT | ICRNL);

202: sts.c_iflag |= IGNBRK;

203: sts.c_lflag &= ~ISIG;

204: sts.c_cc[VMIN] = 1;

205: sts.c_cc[VTIME] = 0;

206: sts.c_lflag &= ~ICANON;

207: /* нет локального эхо: разрешить эхо-контроль на другом конце */

208: sts.c_lflag &= ~(ECHO | ECHOCTL | ECHONL);

209:

210: /* обработка опций сейчас будет модифицировать pts и sts */

211: switch (flow) {

212: case 'h' :

213: /* аппаратное управление потоком */

214: pts.c_cflag |= CRTSCTS;

215: pts.c_iflag &= ~(IXON | IXOFF | IXANY);

216: break;

217: case 's':

218: /* программное управление потоком */

219: pts.c_cflag &= ~CRTSCTS;

220: pts.c_iflag |= IXON | IXOFF | IXANY;

221: break;

222: case 'n':

223: /* отключение управления потоком */

Поделиться:
Популярные книги

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Системный Нуб

Тактарин Ринат
1. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Системный Нуб

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Я граф. Книга XII

Дрейк Сириус
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я граф. Книга XII

В теле пацана 6

Павлов Игорь Васильевич
6. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана 6

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Ты предал нашу семью

Рей Полина
2. Предатели
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты предал нашу семью

Огненный князь 6

Машуков Тимур
6. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 6

Маверик

Астахов Евгений Евгеньевич
4. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Маверик

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

В ожидании осени 1977

Арх Максим
2. Регрессор в СССР
Фантастика:
альтернативная история
7.00
рейтинг книги
В ожидании осени 1977