Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
TAMEPJlAH
1 / 1 / 0
Регистрация: 02.05.2010
Сообщений: 74
#1

RS-232 (COM - порт) и С++ - C++

01.06.2012, 10:07. Просмотров 1542. Ответов 1
Метки нет (Все метки)

Подскажите, пожалуйста, как через прерывания написать программу для управления через COM-порт. Например, по линии Tx с компьютера передаем данные (как они закодированы? например передаем единицу - отключение устройства, 0 - включение).
Есть программа, в нее нужно дописать связь с ПК по протоколу RS-232.
Скину на всякий случай программу. Вот задание: блок управления источником бесперебойного питания, который реализует следующую функциональность: отслеживание параметров сети питания и зарядка батареи, и изменение текущего режима питания (бытовая сеть, батарея), световая и звуковая индикация текущего режима работы.
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
#include <util/delay.h>
#include <avr/interrupt.h>
unsigned char time,t;
 
ISR (SIG_OUTPUT_COMPARE1A){
    if (time==1) {
        t++;
        if (t%2==0) {PORTD  &=~_BV(PD1) //светодиод выкл
                &~_BV(PD2);}            //зуммер выкл
            else {PORTD |=_BV(PD1)      //светодиод вкл
                        |_BV(PD2);} //зуммер вкл
    }
};
int main (void) 
{
    DDRD = 0xFF;
    PORTD |=_BV(2);
    TCCR1B |=_BV(WGM12);
    TCCR1B |=_BV(CS10) |_BV(CS11) &~_BV(CS12);
    OCR1A=15624;
    TIMSK1 |=_BV(OCIE1A);
    sei();
 
ADCSRA |=_BV(ADEN) //Включение АЦП
    |_BV(ADPS1)|_BV(ADPS0); // предделитель преобразователя на 8
ADMUX &=~_BV(REFS1) &~_BV(REFS0) // внешний ИОН
&~_BV(MUX0)&~_BV(MUX1)&~_BV(MUX2)&~_BV(MUX3); // вход PC0
 
 
while(1)
    { 
    unsigned int u1,u2;
    ADCSRA |=_BV(ADSC); //Начинаем преобразование
    while ((ADCSRA&(1 << ADIF))== 0); //Ждем окончания преобразования
     u1 = ADC;  // Считываем  ADC
         
if ((u1 > 778) && (u1 < 983))   //3.8V<u<4.8V
    {PORTD |=_BV(PD1)       //светодиод вкл
           &~_BV(PD0);      //реле выкл
           ADMUX &=~_BV(MUX0);
           time=0;}
    else {                          //u<3.8V   u>4.8V
        PORTD |=_BV(PD0)|_BV(PD3);  //вкл реле №1 и №2
        ADMUX |=_BV(MUX0);
        time=1;}
 
    ADCSRA |=_BV(ADSC); //Начинаем преобразование
    while ((ADCSRA&(1 << ADIF))== 0); //Ждем окончания преобразования
     u2 = ADC;  // Считываем  ADC
 
if (u2 > 983)               //u>4.8V от батареи
    {PORTD &=~_BV(PD3);}    //выкл реле №2
    else {PORTD |=_BV(PD3);}    //вкл реле №2
    _delay_ms(30);
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2012, 10:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос RS-232 (COM - порт) и С++ (C++):

Переход с RS-232 на TCP/IP - C++ Builder
Доброго всем времени суток. Всегда работал с устройствами по средствам интерфейса RS-232, программно это выглядело как открытие COM порта,...

Программа для роботы с устройством через RS-232 - C++ Builder
Доброго всем времени суток. Есть устройство, а точнее сканирующий приёмник, которое может обменивается данными через порт RS-232. Все...

Последовательный интерфейс RS 232 - Visual C++
Имеется программа работающая с радио сканерами. Через ком порт приходит информация со сканера, одновременно два сканера работать не могут,...

Com Port RS 232 - C++ WinAPI
Доброго времени суток. Имеется термопринтер, подключенный к com порту (RS 232C). Работаю в Builder и необходимо отправить на печать строку....

Библиотека С++ для RS-232 - C++
Народ, а есть уже написанная кем нибуть библиотека на С++ для RS-232? Начал изучать С++ на windows в консоле, охота побыстрее применить уже...

Обмен данными с ЭБУ через RS-232 - C++
Всем добра, уважаемые форумчане! Это мой первый пост, прошу сильно не ругать:) Итак, поехали: Задача- &quot;поговорить&quot; с ЭБУ через...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
magirus
Супер-модератор
Эксперт по компьютерным сетямЭксперт Windows
26620 / 14934 / 858
Регистрация: 15.09.2009
Сообщений: 64,869
Записей в блоге: 70
01.06.2012, 21:02 #2
протокола RS-232 не существует.
существует среда передачи - интерфейс RS232,
а какой протокол вы будете задействовать - это ваше дело.
можете свой написать....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2012, 21:02
Привет! Вот еще темы с ответами:

Game порт. или не Game порт - C++
Добрый день! Конструирую свой игровой девайс (корабельный штурвал). Суть - вращаемый вал, непосредственно над ним лазерная мышь. С...

Блок управления и rs 232 - C++ COM
Доброго времени суток, форумчане. Сразу перейду к делу, есть блок управления двумя фотоприемниками и затворами, нужно программно обеспечить...

Передача команд SCPI по RS-232 - C++ COM
Привет всем есть такая задачка нужно написать программу на (MFC)c++ для управления измерительными приборами через RS-232, в частности...

Открыть порт 4444 в брэндмауэре. Антивируса нет. провайдером порт открыт - Сети
Подскажите как открыть данный порт,все делал как тут http://windows.microsoft.com/ru-ru/windows/open-port-windows-firewall#1TC=windows-7....


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

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

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