| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Программа терминала на С/С++ |
| Автор: ssp 14.9.2005, 08:10 |
| требует реализовать простенький терминал для компьютера для доступа к нему через последовательный порт. Не хочется изобретать велосипед, может кто то видел библиотеку для работы с ANSI символами? Т.е. нарисовать рамку, вывести строку в нужные координаты и т.д. |
| Автор: Dreamer_0x01 14.9.2005, 08:32 |
| Не очень понял... Порт - это порт. ANSI-символы - это ANSI-символы. Что именно? |
| Автор: ssp 14.9.2005, 08:37 |
| библиотека для программирования текстового GUI используя ANSI - символы. |
| Автор: Romikgy 14.9.2005, 08:37 | ||
| Мож это поможет http://vingrad.ru/CPP-FAQ-002452 Добавлено @ 08:38
WinAPI OemToChar & CharToOem |
| Автор: ssp 14.9.2005, 08:45 |
| 2Romikgy с портом проблем нет. Это не под Windows. Если подробнее есть контроллер, нужно выводить куда-то диагностические сообщения. т.е. функция printf выводит на указанный порт. Но так смотреть сообщения сложно (т.к. процесс циклический), смотрится все это в ГиперТерминале. Вот и хотелось бы с помощью ESC символов набросать простой GUI. Другими словами, что б была функция outto(int x, int y, char *format, ...); |
| Автор: Romikgy 14.9.2005, 09:02 | ||||
Вот это я не понял
что есть x,y,format , и это все должно идти от компа в контроллер? |
| Автор: Dreamer_0x01 14.9.2005, 09:09 |
| не очень понял, чем же сложно смотреть.Я вот например тоже программлю на контроллеры. Так терминалкой все на ура сотрится. Правда, не Гипер терминалом, а другими более удобными. Я например пользуюсь Advanced Serial Port Monitor. Единственная проблема с этой прогой - ее шареварность. Но если хочешь, этот недостаток исправляется ;) Сложность работы с терминалкой пожалуй может возникнуть при условии, что данные у тебя идут слишком в большом количестве и не помещаются на экран, тогда действительно придется писать свою "тестилку" - виндовую программу-окошко, в контролах которого отобразить требуемые тебе данные, но без всяких извращений типа "putto" и т.д, хотя если хочешь действительно что-то подобное терминалке сделать, то и это можно, но нужно ли? Опять же, вводимые тобой данные удобнее не из командной строки получать, как в терминалке, а создать например свои кнопки на форме, по нажатию на которые в порт будет идти нужный пакет для твоего устройства. Я например сейчас как раз занимаюсь тем, что пишу прграмму-терминалку для общения с прибором. Но у меня достаточно сложный прибор, поэтому кроме общения как такогого она еще и с данными уйму тучу операций делает. Штуку эту делаю на MFC, но с портом работаю в отдельном потоке на WInAPI. Могу дать куски когда, конфигурирующие порт и посылающие/принимающие в него данные, а поместить данные в свои контролы - думаю сможешь и сам ;) А по портам вот ресурс неплохой, я изучал понему. Хоть и дельфевый, ну винАпи он и в Африке винАпа, функции-то и параметры те же ;) http://www.megalib.com/books/461/mastering/ports1.htm |
| Автор: ssp 14.9.2005, 09:14 | ||
Romikgy ну как работают терминальные программы под Linux? там же все рисуется на ESC - последовательностях. Под ДОСом был драйвер ANSI.sys для отображения комманд... Типа BBS...
x, y координаты куда вывести текст. Это просто к примеру... |
| Автор: Mayk 14.9.2005, 09:21 | ||||
ээ.. а что самому мешает написать что-то типа
Коды ANSI находятся с полпинка через гугль. |
| Автор: Romikgy 14.9.2005, 09:29 | ||||
Вот это до сих пор понять не могу
причем здеся эскейп и рисуется? Текст шлешь в русской кодировке? или англ. буквами? С ббс не пришлось разбиратся И второе приложение будет какое консоль или гуи? Если гуи то непонятно (хотя можно и рисовать так) зачем х,у , выводить в компонент типа листбокс и вперед. ЗЫ и вооще прикольно в ветке по винапи говорить
|
| Автор: ssp 14.9.2005, 09:32 |
| Mayk мешает лень. Хочется взять готовое |
| Автор: Dreamer_0x01 14.9.2005, 09:43 |
| А устройство слабо перепрограмить, чтоб оно данные выводило "правильно"? ;) например "param 1 = 0.00 param2 ="abcd" .....Param N="lalalala" \r" Обрати внимание на символ 0x0D в конце строки. Тогда если ты такое сообщение будешь слать терминалке допустим несколько раз в секунду - ты будешь видеть в терминалке эту строку... А можно еще и многострочный вывод сделать и соответствующе терминалку поднастроить... |
| Автор: ssp 14.9.2005, 09:51 |
| Dreamer_0x01 зачем что то поднастраивать... Есть нормальные терминалы. Проще esc-последовательности. а что я увижу при N=20 и ширине 40 ? |
| Автор: Romikgy 14.9.2005, 10:58 |
| Дя.... так зачем здесь вопрос задавать если хоцца готовое и уже сделанное? |