С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

28.05.2011, 16:15. Просмотров 366. Ответов 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); 
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 16:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Управление широковещательным оборудованием (C++):

Написать кликер-авторегу, взаимодействующую с оборудованием по API - C++
Товарищи!) Помогите написать кликер-авторегу, взаимодействующую с оборудованием по апи (оно готово) Также нужно будет сделать несколько...

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой - C++
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Управление AV оборудованием фирмы Pioneer - Java Сети
Нужно управлять AV ресиверами VSX-528 Pioneer по сети(так думаю по DLNA) через приложение под андроид. Приложение самой этой фирмы под...

Зарезервировано оборудованием 1 гб из 4 - Windows 7
Ребят помогите! У меня 2 планки DDR2 по 2 Гб....на windows 7 x32 комп видел все 4 из 4 а на x64 написано, установлено 4гб(3 доступно),...

Работа с торговым оборудованием - C#
Приветствую! Подскажите, кто нибудь пытался связать ПО на C# со сканером штрих кода и с принтером? какой нибудь такой сканер ...

Память зарезервирована оборудованием - Оперативная память
Здравствуйте. Емеется ноутбук с 2-мя видеокартами и 4-мя гигами памяти, на нем стоит Win 7 x32. Видео №1 - Radeon r7, на наклейке...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2011, 16:15
Привет! Вот еще темы с ответами:

1C 8.x Работа с внешним оборудованием - 1С
Добрый день. Может кто нибудь подсказать, или направить на ссылку истинную, как работать с внешним оборудованием, а в частности с юсб...

Прерывания IRQ 22: конфликты с оборудованием - Материнские платы
Проблема такая, сгорела сетевая карта, поставил такую же, не новую, но в рабочем состоянии, спустя примерно неделю моего мертвого интернета...

2 гигабайта RAM зарезервировано оборудованием - Windows 7
В общем дело обстоит так. Сгорел чип у меня на старой видеокарте, пока разбирался что к чему обновил BIOS материнки, использовал встроенную...

Эмулятор сети с оборудованием разных вендоров - Сети
Доброго дня, коллеги! Появилась необходимость сэмулировать существующую сеть - протестировать планируемые изменения - и столкнулся с...


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

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

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