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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Интегрировать программу с Excel(OpenOffice Calc) http://www.cyberforum.ru/cpp/thread591567.html
Всем доброго времени суток. Необходимо интегрировать программу в какой либо табличный процессор(Excel,OpenOffice Calc). То есть что бы мною написанная программа брала данные из таблицы,выполняла действия и результат возвращала туда же в таблицу. Думаю сформулировал более менее понятно. А теперь собственно вопрос: в какую сторону посмотреть, почитать,какие пути решения существуют!? Заранее...
C++ Синтаксис объявления freind, и компиляторы Одному так подавай, другому - так подавай. А как же стандарт? Неужели нет единого регламентированного синтаксиса объявления класса-френда, который одинаково понимают все компиляторы с++? Собственно, требуется следующее: что бы гцц, мингв, и студийный компиляторы скушали одно и тоже блюдо: #include <iostream> using namespace std; template<class T> http://www.cyberforum.ru/cpp/thread586904.html
C++ Клонирование объекта шаблонного класса
Задача ниже представленного механизма - запоминать функции/методы со всеми аргументами, и производить их отложенный запуск по требованию В ниже представленном коде нужно организовать возможность объекту откопировать себя в динамической памяти, и вернуть указатель. Для этого использовались два подхода: 1. Копирующий конструктор (способ сработал, и проблем нет). 2. Конструктор с...
Программа управления проектором Nec моделей VT60, VT70, VT80, VT90, VT700, LT170 по порту Rs232 C++
Помогите написать программку на С++ или ассемблере, которая посылала бы простейшие команды на проектор, уже неделю пытаюсь разобраться, никак толком не выйдет(((. есть мануалка с командами
C++ Переполнение буфера: что тут происходит? http://www.cyberforum.ru/cpp/thread581764.html
Добрый вечер; у меня есть уязвимая программа, которая в буфер длиной 30 копирует строку, переданную как аргумент этой программе. Делал по этой статье. Задача - осуществить вызов командной строки. В общем, после переполнения стек выглядит вот так: - буфер - EBP - адрес возврата - аргумент для функции system() Как я понимаю, после завершения копирования делается прыжок по адресу...
C++ inline assembler VS чтение по указателю Доброе время суток. Задача состоит в чтении 1 байта по адресу указателя. Проблема с пониманием, что не так с типами операндов. char readFromPointer(char* pointer) { char result; __asm mov edi, pointer __asm mov result, return result; } подробнее

Показать сообщение отдельно
TAMEPJlAH
1 / 1 / 0
Регистрация: 02.05.2010
Сообщений: 74

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

01.06.2012, 10:07. Просмотров 1463. Ответов 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);
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru