Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
 Аватар для &Alex&
20 / 20 / 3
Регистрация: 21.03.2010
Сообщений: 221

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

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

Студворк — интернет-сервис помощи студентам
Здраствуйте. Помогите кто чем может в поиске литературы, исходников по программированию последовательного порта. Получил тему написать прогу "Программа-чат через последовательный порт".
Программу буду писать ТОЛЬКО НА СИ(не С++). Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2010, 16:40
Ответы с готовыми решениями:

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

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

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

5
 Аватар для &Alex&
20 / 20 / 3
Регистрация: 21.03.2010
Сообщений: 221
12.10.2011, 16:23  [ТС]
Если кто-то считает что это нереально, вот вам код:
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
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
12.10.2011, 17:09
ну на сколько я знаю для каждого устройства свои порты(тоесть для той же клавиатуры могут быть разные порты)
и следственно по идеи ты хочешь написать драйвер
в проинципе найди нужную документацию по оборудованию
0
 Аватар для &Alex&
20 / 20 / 3
Регистрация: 21.03.2010
Сообщений: 221
12.10.2011, 17:18  [ТС]
Цитата Сообщение от Van111 Посмотреть сообщение
ну на сколько я знаю для каждого устройства свои порты(тоесть для той же клавиатуры могут быть разные порты)
и следственно по идеи ты хочешь написать драйвер
в проинципе найди нужную документацию по оборудованию
Нет, не драйвер, а чат для 2 ПК через COM-порт(RS-232)...
Программа уже готова, отлажена, уже тестировалась...Все норм работает. Выложил потому, что кто-то писал что такое сделать невозможно...
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
12.10.2011, 17:35
Нет, не драйвер, а чат для 2 ПК через COM-порт(RS-232)...
а это типа шнур через два компа кинуть к портам и на порты данные посылать
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
13.10.2011, 00:27
Цитата Сообщение от &Alex& Посмотреть сообщение
/*Програма-чат через послідовний порт(для двох ПК)*/
#include <dos.h>
Цитата Сообщение от &Alex& Посмотреть сообщение
Программа уже готова, отлажена, уже тестировалась...Все норм работает
А под каким ОСью тестировали? Как собирали бинарник и каким компилятором?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2011, 00:27
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru