Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа для работы с COM-портом 
:(
    Опции темы
Lockdog88
Дата 29.7.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.4.2010

Репутация: нет
Всего: нет



Пытаюсь скомпилировать вот этот код на Си:
Код

#include <stdio.h>
#include <conio.h>
#include <dos.h>

#define PORT1 0x3F8

  /* Defines Serial Ports Base Address */
  /* COM1 0x3F8                        */
  /* COM2 0x2F8                   */
  /* COM3 0x3E8                   */
  /* COM4 0x2E8                   */

int main()
{
 int c;
 int ch;
 outportb(PORT1 + 1 , 0);   /* Turn off interrupts - Port1 */

 /*         PORT 1 - Communication Settings         */

 outportb(PORT1 + 3 , 0x80);  /* SET DLAB ON */
 outportb(PORT1 + 0 , 0x03);  /* Set Baud rate - Divisor Latch Low Byte */
                  /* Default 0x03 =  38,400 BPS */
                  /*         0x01 = 115,200 BPS */
                  /*         0x02 =  57,600 BPS */
                  /*         0x06 =  19,200 BPS */
                  /*         0x0C =   9,600 BPS */
                  /*         0x18 =   4,800 BPS */
                  /*         0x30 =   2,400 BPS */
 outportb(PORT1 + 1 , 0x00);  /* Set Baud rate - Divisor Latch High Byte */
 outportb(PORT1 + 3 , 0x03);  /* 8 Bits, No Parity, 1 Stop Bit */
 outportb(PORT1 + 2 , 0xC7);  /* FIFO Control Register */
 outportb(PORT1 + 4 , 0x0B);  /* Turn on DTR, RTS, and OUT2 */

 printf("\nSample Comm's Program. Press ESC to quit \n");
 
 do { c = inportb(PORT1 + 5);          /* Check to see if char has been */
                                          /* received.                     */
      if (c & 1) {ch = inportb(PORT1); /* If so, then get Char          */
                  printf("%c",ch);}    /* Print Char to Screen          */

      if (kbhit()){ch = getch();         /* If key pressed, get Char */
                   outportb(PORT1, ch);} /* Send Char to Serial Port */

    }while (ch !=27); /* Quit when ESC (ASC 27) is pressed */
}



Но Dev-C++ ругается и выдаёт:
"[Linker Error] undefined reference to `outportb'"
"[Linker Error] undefined reference to `inportb'"

Как с этим бороться?
И есть ли решения по работе с com-портом без использования WinAPI, может даже на С++

Заранее спасибо.
PM MAIL   Вверх
GremlinProg
Дата 29.7.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Lockdog88 @  29.7.2010,  11:55 Найти цитируемый пост)
Как с этим бороться?

1. добавить включение #include <dos.h>
2. ну и например забыть о запуске такой программы на современных платформах, типа xp, vista, 7

Цитата(Lockdog88 @  29.7.2010,  11:55 Найти цитируемый пост)
есть ли решения по работе с com-портом без использования WinAPI, может даже на С++

без использования WinAPI - уже нет,
а вот обертки С++ на ком-порт конечно бывают, надо только поискать, например вот так: http://www.google.ru/search?q=CComPort


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Lockdog88
Дата 29.7.2010, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.4.2010

Репутация: нет
Всего: нет



Цитата(Lockdog88 @  29.7.2010,  11:55 Найти цитируемый пост)
Как с этим бороться?

1. добавить включение #include <dos.h>
2. ну и например забыть о запуске такой программы на современных платформах, типа xp, vista, 7

1. Включено
2. Жаль

Цитата(Lockdog88 @  29.7.2010,  11:55 Найти цитируемый пост)
есть ли решения по работе с com-портом без использования WinAPI, может даже на С++

без использования WinAPI - уже нет,
а вот обертки С++ на ком-порт конечно бывают, надо только поискать, например вот так: http://www.google.ru/search?q=CComPort

Спасибо, Кэп.
Хотелось бы услышать об библиотеках, которые кто-то сам уже использовал
PM MAIL   Вверх
kuzulis
Дата 30.7.2010, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: 1
Всего: 1



Цитата

Хотелось бы услышать об библиотеках, которые кто-то сам уже использовал 


Если использовать Qt4 то есть две: QextSerialPort и QSerialDevice.
Если использовать хз что (т.е. чисто для винды) - то хз. smile

---

PM MAIL   Вверх
EnergoHokum
Дата 30.7.2010, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: 3
Всего: 6



Цитата

Хотелось бы услышать об библиотеках, которые кто-то сам уже использовал 

boost::asio
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.