Как работать с COM портом
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как работать с COM портом - 2009-07-30 11:47:23.890000
|
|
|
jogick
Сообщений: 244
Оценки: 0
Присоединился: 2007-09-15 09:24:58.160000
|
Подскажите нчинающему (только начал уичть С) как работать с COM портом. Нужно срочно написать программу которая будет гнать некоторые данные в порт. Прорграмма не нужна графическая, даже лучше чтобы консольная, но нужно два экземпляра, один под WIN другой под *nix. Нужно открыть порт выдать в него данные полученны вывести на экран, при этом при открытии нужно установить нужную скорость. Короче как работать с COM'ом?
|
|
|
RE: Как работать с COM портом - 2009-07-30 12:50:37.406666
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
Здесь очень неплохо расписано как реализовать сопряжение ПК с внешними устройствами посредством разных портов. Кажется только под винды. Под Никсы думаю сам найдешь. Там немного проще.
|
|
|
RE: Как работать с COM портом - 2009-07-31 07:09:42.543333
|
|
|
jogick
Сообщений: 244
Оценки: 0
Присоединился: 2007-09-15 09:24:58.160000
|
Спасибо! Подскжите как организовать рботу программы так что бы она выдавала в порт данные до тех пор пока я не нажму определённую кнопку наклаве? Те способы ввода данных что я знаю останавливают программу до окончания ввод с клавы.
|
|
|
RE: Как работать с COM портом - 2009-07-31 08:02:04.440000
|
|
|
[DD]
Сообщений: 71
Оценки: 0
Присоединился: 2007-10-23 11:36:59.313333
|
если нажата нужная клавиша то отправить и закрыть… попробуй так…
|
|
|
RE: Как работать с COM портом - 2009-07-31 11:49:37.010000
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
По той ссылке есть пример программирования для ЛПТ. Там рассмотрен подобный пример. Кажется там все сделано через getc().
|
|
|
RE: Как работать с COM портом - 2009-08-06 13:17:26.206666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
http://lmgtfy.com/?q=getc Только к ком порту это никакого отношения не имеет.
|
|
|
RE: Как работать с COM портом - 2009-08-06 16:08:28.423333
|
|
|
jogick
Сообщений: 244
Оценки: 0
Присоединился: 2007-09-15 09:24:58.160000
|
Там применяется не getc(), а getch() (на сколько я смог рассмотреть, а она мне не подходит ием что программа ждёт ввода в клавиатуры. Мне же нужно что бы цикл выполнялся до тех пор пока я не нажму определённую клавишу.
|
|
|
RE: Как работать с COM портом - 2009-08-06 16:28:05.266666
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
Не знаю правильно ли понял тебя…. Это тебе не подойдет? while (getch()!=<тут int значение твоего символа>) { <тут код который выполняется в цикле> } код будет выполнятся пока не введешь символ. ЗЫ. getc() и getch() очень схожи по своей работе. Первая читает 1 символ с заданного потока, вторая с консоли (стандартный ввод).
|
|
|
RE: Как работать с COM портом - 2009-08-06 18:40:41.386666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Блин. Читайте первый пост. Человеку нужно из COM порта.
|
|
|
RE: Как работать с COM портом - 2009-08-06 18:50:15.890000
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
Не. Читай 3-ий пост. Видать ввиду его не очень глубоких знаний в C, ему приходится еще и по дороге объяснять кучу другого.
|
|
|
RE: Как работать с COM портом - 2009-08-06 23:03:54.013333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: jogick Спасибо! Подскжите как организовать рботу программы так что бы она выдавала в порт данные до тех пор пока я не нажму определённую кнопку наклаве? Те способы ввода данных что я знаю останавливают программу до окончания ввод с клавы. Эхмм… Для какой ОС? Дос? По-моему, так. Ну или очень похоже. char buf[100], *ptr = buf;
...
if (kbhit ()) {
puts ("Хочу вас поздравить, вы нажали кнопку на клавиатуре.\n");
while (kbhit ()) {
*ptr++ = getc ();
if (ptr[-1] == '\n') {
ptr[-1] = '\0';
printf ("вы набрали целую строчку: `%s'\n", buf);
ptr = buf;
}
if (ptr - buf == sizeof (buf)) {
fprintf (stderr, "СЛЫШЬ! Ты! Это! Харе стучать по клавиатуре. Буфер переполняешь.\n");
exit (-1);
}
}
}
puts ("Вы так и не нашли клавиатуру? Я продолжаю свою деструктивную деятельность, и никто мне не помешает\n"); *nix? Способов уйма. Я пожалуй использовал бы select для проверки того, что что-то есть в STDIN_FILENO. Правда не знаю, как это со всякими там getc'ами увязать, я б наверное read использовал. Или быть может подключил бы ncurses и весь клавиатурный ввод гнал бы через ncurses. win? Не знаю ни одного. Все позабыл давно. Ну разве что положиться на posix совместимость и попытать счастья с select.
|
|
|
|
|