Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/17: Рейтинг темы: голосов - 17, средняя оценка - 4.94
20 / 20 / 3
Регистрация: 21.03.2010
Сообщений: 221
1

Программирование последовательного порта.

07.10.2010, 16:40. Просмотров 3474. Ответов 5
Метки нет (Все метки)

Здраствуйте. Помогите кто чем может в поиске литературы, исходников по программированию последовательного порта. Получил тему написать прогу "Программа-чат через последовательный порт".
Программу буду писать ТОЛЬКО НА СИ(не С++). Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2010, 16:40
Ответы с готовыми решениями:

Программирование COM порта
Здравствуйте, уважаемые форумчане! Пишу программу на Borland C++ Builder. В ней задается режим...

Программирование COM порта
Возникла необходимость написать приложение которое будет работать с COM портом Помогите пожалуйста...

Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного дос
Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле...

Мониторинг последовательного порта
Добрый день коллеги, работаю сейчас над проектом, где надо мониторить все устройства,...

5
20 / 20 / 3
Регистрация: 21.03.2010
Сообщений: 221
12.10.2011, 16:23  [ТС] 2
Если кто-то считает что это нереально, вот вам код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*Програма-чат через послідовний порт(для двох ПК)*/
 
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
char buf[250],buf2[250];
int com,com2;
void initcom1 () {
          /* налаштування поpту COM-1 на pоботу */
outportb(0x3f8,0x80);  /* пiдготовка до завантаження швидкостi */
outportb(0x3f8,0x60);  /* швидкiсть прийому-пеpедачi в 1200 бод */
outportb(0x3f9,0x00);  /* старший байт подiлювача частоти */
outportb(0x3fB,0x03);  /* бiтiв даних = 8
                  стоп-бiтiв = 1
                  тип паpностi невикоpистовуеться
                  поpти 2F8h i 2F9h в звичайному pежимi */
outportb(0x3fC,0x00); /* модем не викоpистовуеться */
outportb(0x3f9,0x00); /* забоpона всих пеpеpивань */
}
void initcom2 ()
 {
          /* налаштування поpту СОМ-2 на pоботу */
outportb(0x2f8,0x80);  /* пiдготовка до завантаження швидкостi */
outportb(0x2f8,0x60);  /* швидкiсть прийому-пеpедачi в 1200 бод */
outportb(0x2f9,0x00);  /* старший байт подiлювача частоти */
outportb(0x2fB,0x03);  /* бiтiв даних = 8
                стоп-бiтiв = 1
                тип паpностi невикоpистовуеться
                     поpти 2F8h i 2F9h в звичайному pежимi */
outportb(0x2fC,0x00); /* модем не викоpистовуеться */
outportb(0x2f9,0x00); /* забоpона всих пеpеpивань */
}
void gochat (){
char ch;
int z,k,i,dov;
i=0;
k=1;
z=0;
buf[0]=NULL;
buf2[0]=NULL;
do
 {
 if (k==21) 
{
   clrscr();
   k=1;
   gotoxy(1,23);
   printf("%s",buf);
   gotoxy(1,k);
   textcolor(3);
   printf("%s",buf2);
   k++;
}                  /*Приймач*/
  if(((inport(com))&1)!=0) /* пеpевipка на пpийнятi данi */
  {
   ch=inportb(com2);   /* читання пpийнятого бiту */
   buf2[z]=ch;
   z++;
   outport(com,0x20); /* пiдготовка для пpийому слiдуючого символу */
if (ch==13)
{
buf2[z-1]=NULL;
gotoxy(1,k);
textcolor(3);
printf("%s",buf2);
k++;
buf2[0]=NULL;
textcolor(2);
}
  }
                 /*Передавач*/
  if(kbhit())
  {
   ch=getch();
   gotoxy(i+1,23);
   printf("%c",ch);
   buf[i]=ch;
   i++;
   if (ch==13)
{
dov=i;
gotoxy(1,23);
clreol();
gotoxy(1,k);
printf("%s",buf);
buf[i+1]=13;
k++;
   for(i=0;i<=dov+1;i++)
{
do
     {
      outportb(com2,buf[i]);  /* занесення символу в поpт для пеpедачi */
     }
   while((inport(com) & 0x20)==0);
   delay(100);          /* затpимка, якщо буфеp пустий */
   if((inport(com) & 0x10)==1)
   printf("Обрив лінії!!!");
   buf[i]=NULL;
     }
     i=0;
     
   }
  }    
 } while(ch!=27);    /* Вихiд з програми по натисненнi ESC */
}
void main ()
{
 char ch;
 do
 {
 clrscr();
 gotoxy(30,10);
 printf("1.  Com 1\n");
 gotoxy(30,11);
 printf("2.  Com 2\n");
 gotoxy(30,12);
 printf("3.  EXIT\n");
 ch=getch();
 if (ch=='1')
  {
   com=0x3FD;
   com2=0x3F8;
   initcom1();
   clrscr();
   gochat();
  } else
 if (ch=='2')
  {
   com=0x2FD;
   com2=0x2F8;
   initcom2 ();
   clrscr();
   gochat ();
  } else
If(ch=='3')
{
Exit;
}
  }
  while(ch!='1' && ch!='2' && ch!='3');
}
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,816
Записей в блоге: 12
12.10.2011, 17:09 3
ну на сколько я знаю для каждого устройства свои порты(тоесть для той же клавиатуры могут быть разные порты)
и следственно по идеи ты хочешь написать драйвер
в проинципе найди нужную документацию по оборудованию
0
20 / 20 / 3
Регистрация: 21.03.2010
Сообщений: 221
12.10.2011, 17:18  [ТС] 4
Цитата Сообщение от Van111 Посмотреть сообщение
ну на сколько я знаю для каждого устройства свои порты(тоесть для той же клавиатуры могут быть разные порты)
и следственно по идеи ты хочешь написать драйвер
в проинципе найди нужную документацию по оборудованию
Нет, не драйвер, а чат для 2 ПК через COM-порт(RS-232)...
Программа уже готова, отлажена, уже тестировалась...Все норм работает. Выложил потому, что кто-то писал что такое сделать невозможно...
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,816
Записей в блоге: 12
12.10.2011, 17:35 5
Нет, не драйвер, а чат для 2 ПК через COM-порт(RS-232)...
а это типа шнур через два компа кинуть к портам и на порты данные посылать
0
Эксперт С++
3055 / 1397 / 421
Регистрация: 19.01.2009
Сообщений: 3,760
13.10.2011, 00:27 6
Цитата Сообщение от &Alex& Посмотреть сообщение
/*Програма-чат через послідовний порт(для двох ПК)*/
#include <dos.h>
Цитата Сообщение от &Alex& Посмотреть сообщение
Программа уже готова, отлажена, уже тестировалась...Все норм работает
А под каким ОСью тестировали? Как собирали бинарник и каким компилятором?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2011, 00:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как принять число из последовательного порта и отобразить его в edit_box?
Как принять число из последовательного порта и отобразить его?Работаю с помощью CreateFile и...

Программирование Com порта в Microsoft Visual Studio 9.0 C++
Всем привет! Имеется микроконтроллер AVR ATmega128, на борту которого имеется UART. Требуется...

WinAPI и Qt. Как реализовать выпадающий список для конфигурирования свойств последовательного порта
Ребят,подскажите пожалуйста, как замутить выпадающий список для конфигурирования свойств...

Программирование последовательного порта
Добрый день, камрады. Не знаю в верный ли подраздел форума я обращаюсь! Прошу строго не судить! Но...


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

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

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