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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kazhuravlev
Сообщений: n/a
#1

Управление широковещательным оборудованием - C++

28.05.2011, 16:15. Просмотров 349. Ответов 0
Метки нет (Все метки)

Работаю инженером на телевидении. Контролирую работу широковещательного пред-эфирного, пост-эфирного и эфирного оборудования. Для управления работой некоторых устройств используются дорогие и малоэффективные программы с ограниченной поддержкой протокола управления. В руки попало описание протокола, и примеры реализации его на языке C ( или C++, мне сложно определить ). Встала задача написать программу, способную контролировать работу данного устройства. Так как я являюсь Python/Java программистом, и только догадываюсь о том что написано в коде ниже, я прошу вас помочь мне понять смысл действий, описанных в данном коде. Если кто-либо может в точности перевести это на Python, и оно будет работать - переведу денежку на WebMoney.
С помощью описанной ниже функции remote_send(), по идее должна осуществляться передача команды вышеописанному устройству ( думаю не имеет особого смысла рассказывать о его предназначении ).

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
#define STX0 0x002
#define STX1 0x003
#define ACK0 0x004
#define ACK1 0x005
#define NAK 0x007
char stx = STX0;
const UINT lstab[] =
{
0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0,
0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741,
0x0500, 0xc5c1, 0xc481, 0x0440
};
const UINT mstab[] =
{
0x0000, 0xcc01, 0xd801, 0x1400, 0xf001, 0x3c00,
0x2800, 0xe401, 0xa001, 0x6c00, 0x7800, 0xb401,
0x5000, 0x9c01, 0x8801, 0x4400
};
void do_crc(INT8 ch, UINT16 * crcptr)
{
UINT tmp;
 
tmp = *crcptr ^ ch;
*crcptr = mstab[(tmp>>4) & 0xf] ^ lstab[tmp&0xf] ^ ((*crcptr) >> 8);
}
void remote_send(char * format,...)
{
UINT16 rem_crc = 0;
INT ch;
char message[128];
char* messageptr = (char*)message;
va_list argptr;
va_start(argptr, format);
vsprintf(message, format, argptr);
va_end(argptr);
rem_send_char(stx);
while((ch = *messageptr++) != 0)
{
rem_send_char(ch);
do_crc(ch, &rem_crc);
}
rem_send_char(':');
do_crc(':', &rem_crc);
rem_send_char(rem_crc & 0xff);
rem_send_char(rem_crc >> 8);
if (stx == STX0)
stx = STX1;
else
stx = STX0;
}


Для примера приведу пример использования функции remote_send() в обертке:

C++
1
2
3
4
5
6
7
8
9
// плавно скрыть/показать видео слой
// где 1( единица ) - номер команды ( длинна команды до 3 символов ),
// Layer - один из четырех слоев,
// Up - одно из двух значений( 1 - поднять слой, 2 - опустить)
 
void FadeKeyer(int Layer, bool Up) 
 {
   remote_send("1%x %d", Layer, Up ? 1:0); 
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 16:15     Управление широковещательным оборудованием
Посмотрите здесь:

Switch управление - C++
Здравствуйте. Компилятор (VS2015) пишет ошибку "передача управления в обход инициализации: переменная "а"". Почему случилось, как...

Управление кнопками - C++
Здраствуйте, решил разобраться в этой теме. Как сделать так, чтобы при нажатии кнопки "Вниз" на клавиатуре, изменился ключ реестра? Как...

Управление машинкой - C++
Здраствуйте! Мне нада написать тетрис. Но не простой тертрис, нада что бы машинка (!)сама на трасе обходила препятствия.Тоесть нужно...

Управление строками - C++
Есть ли функции в библиотеке Си (не Си++) позволяющие перезаписывать содержимое строк или менять положение индикатора позиции наподобии...

Управление устройствами - C++
Здравствуйте, У меня возник вопрос, как управлять различными устройствами при помощи с++. Например, как вебка и микр и т.д. Заранее...

Управление стрелками C++ - C++
Написал программу, работает. Но вопрос в том, что когда нажимаю на стрелки, мой символ только обновляется с помощью system("cls"). Нужно...

Управление строками - C++
Всем привет! Я изучаю с++ недавно, в как учебное пособие использую "С++ для чайников". Пример перепечатал с книги, а он не работает! ...

Управление памятью - C++
1. Требования к управлению памятью 1.1. перемещение 1.2. защита 1.3. совместное использование 1.4. логическая организация ...

управление окнами - C++
доброго времени суток форумчане! кто сможет помогите пожалуйста! проблема в том чтобы создать окно с горизонтальной и вертикальной полосами...

Управление змейкой - C++
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <graphics.h> #define N 30 #define M 20 ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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