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

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

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

Модуль от Crestron - C++

06.05.2014, 14:37. Просмотров 300. Ответов 0
Метки нет (Все метки)

Добрый день.
Ребят помогите разобраться с модулем от Crestron.
Честно я не программист... так что на каком это языке написано не понял. (SIMPL Windows Через него я вижу его в
Crestron)
Сам код под спойлером.

Что мне нужно от этого модуля:
1. Телнет сессия на стороннее оборудование через данную телнет сессию будут посылаться команды
2. Под определенным логином и паролем (логин и пароль на стороннем оборудовании воспринимается в 1 строчку через запятую.

На текущий момент в ошибках вот что светится
51. Error: Module S-1.1.1.7 : S2_PIF_Lutron_TCP_IP_Engine at line 370: Invalid Number of bytes for string __FN_DST_STR___Wait1. NumBytes = 2048.
TimeStamp: 14:16:49 5-06-14 UpTime: 0 days 00:17:09.82 Task: RX_WAIT


Кликните здесь для просмотра всего текста


/*******************************************************************************************
SIMPL+ Module Information
(Fill in comments below)
*******************************************************************************************/
/*
Dealer Name:
System Name:
System Number:
Programmer:
Comments:
*/


/*******************************************************************************************
Compiler Directives
(Uncomment and declare compiler directives as needed)
*******************************************************************************************/
#SYMBOL_NAME "PIF Lutron P5 Engine"
#HINT "This module works with P5 Lutron processors "



#HELP_BEGIN
The using of this modul:

Parameter:
Password - the password using in your home works ilumination prorramm.
Inputs
RX$ -data receiving from processor
Connect - digital input to establisch communicationwithprocessor.
Otput
TX$ - data sending to processor;
KeypadKLS$ - output return informanion about state of keypads in HWI system
KeypadKBP$ - output return informanion about pressing of keypads in HWI system
KeypadKBDT$ - output return informanion about double press of keypads in HWI system



#HELP_END

//Useful constants
#DEFINE_CONSTANT Init_login "LutronGUI"
//#DEFINE_CONSTANT loginPassword "LutronGUI,jetski"

#DEFINE_CONSTANT MAX_MESSAGE_LENGTH 2048
#DEFINE_CONSTANT PULS_TIME 10

#DEFINE_CONSTANT logOutCMD "LOGOUT"
#DEFINE_CONSTANT CMD_KLMON "KLMON"
#DEFINE_CONSTANT CMD_KBMON "KBMON"
#DEFINE_CONSTANT CMD_DLMON "DLMON"





#HELP_BEGIN
This modul works with Home Works proocessor P5 series only.
#HELP_END

/*******************************************************************************************
Include Libraries
(Uncomment and include additional libraries as needed)
*******************************************************************************************/
// #CRESTRON_LIBRARY ""
// #USER_LIBRARY ""

/*******************************************************************************************
DIGITAL, ANALOG and SERIAL INPUTS and OUTPUTS
(Uncomment and declare inputs and outputs as needed)
*******************************************************************************************/
DIGITAL_INPUT Connection;

//ANALOG_INPUT ADR_PROCESOR;



BUFFER_INPUT Rx$[MAX_MESSAGE_LENGTH];


// BUFFER_INPUT
STRING_OUTPUT Tx$;
DIGITAL_OUTPUT Estab_Connect;
DIGITAL_OUTPUT Connection_fb;
DIGITAL_OUTPUT New_Data;

STRING_OUTPUT KeypadKLS$, KeypadKBP$,KeypadKBDT$, DimmerDL$;

/*******************************************************************************************
Parameters
(Uncomment and declare parameters as needed)
*******************************************************************************************/
// INTEGER_PARAMETER
// SIGNED_INTEGER_PARAMETER
// LONG_INTEGER_PARAMETER
// SIGNED_LONG_INTEGER_PARAMETER
STRING_PARAMETER Init_Password[13];



/*******************************************************************************************
Structure Definitions
(Uncomment and define structure definitions as needed)
Note: Be sure to initialize all declared STRING variables as needed
For example, in Function Main: struct.myString = "";
*******************************************************************************************/
/*
STRUCTURE MyStruct1
{
};

MyStruct1 struct;
*/

/*******************************************************************************************
Global Variables
(Uncomment and declare global variables as needed)
Note: Be sure to initialize all declared STRING variables as needed
For example, in Function Main: myString = "";
*******************************************************************************************/
INTEGER ThereIsConect;

// LONG_INTEGER
// SIGNED_INTEGER
// SIGNED_LONG_INTEGER
// STRING


/*******************************************************************************************
Functions
(Add any additional functions here)
Note: Functions must be physically placed before the location in
the code that calls them.
*******************************************************************************************/

Function Initial_Proces()
{
string data_out[30];

MakeString(data_out,"%s,%s\n",Init_login, Init_Password);
Tx$ = data_out;
}

Function Disconnect_Proces()
{
string data_out[30];
MakeString(data_out,"%s\n",logOutCMD);
Tx$ = data_out;
print("Disconect! \n");
ThereIsConect = 0;
Connection_fb =OFF;

}

function Estab_Connection()
{
string data_out[30];
MakeString(data_out,"%s\n",CMD_KLMON);
Tx$ = data_out;
print("Sent KLMON \n");
MakeString(data_out,"%s\n",CMD_KBMON);
Tx$ = data_out;
print("Sent KLMON \n");
MakeString(data_out,"%s\n",CMD_DLMON);
Tx$ = data_out;
print("Sent DLMON \n");

ThereIsConect = 1;
Connection_fb =ON;

}

Function DL_Parse_Message(string message)
{
// Parsing for string -DL, [01:01:00:02], 50

integer fist_ch;
integer len_str;
string temp_str[100];
string ADR_str[100];
string STATE_str[100];

//print("Received for parsing: %S\n",message);
while(find("DL",message)) {
fist_ch = find("DL",message);
temp_str = RemoveByLength(fist_ch+4,message);
ADR_str = RemoveByLength(11,message);
temp_str = RemoveByLength(2,message);
STATE_str = message;
//print ("ADR KLS is: %s STATE is: %s\n",ADR_str,STATE_str);
MakeString(temp_str,"DL[%s]%s\r",ADR_str,STATE_str);
DimmerDL$ = temp_str;
Pulse(PULS_TIME,New_Data );
}
}


Function KLS_Parse_Message(string message)
{
// Parsing for string -\x0D\x0AKLS, [01:06:20], 000000000000010000000000\x0D\x0A
integer fist_ch;
integer len_str;
string temp_str[100];
string ADR_str[100];
string STATE_str[100];

//print("Received for parsing: %S\n",message);
while(find("KLS",message)) {
fist_ch = find("KLS",message);
temp_str = RemoveByLength(fist_ch+4,message);
ADR_str = RemoveByLength(10,message);
temp_str = RemoveByLength(2,message);
STATE_str = RemoveByLength(24,message);
//print ("ADR KLS is: %s STATE is: %s\n",ADR_str,STATE_str);
MakeString(temp_str,"%s%s\r",ADR_str,STATE_str);
KeypadKLS$ = temp_str;
}
}


Function KBDT_Parse_Message(string message)
{

// Parsing for string -KBDT, [01:04:04],01
integer fist_ch;
integer len_str;
string temp_str[100];
string ADR_str[20];
string BTN_str[5];

//print("Received for parsing: %S\n",message);
if (find("KBDT",message)){
while(find("KBDT",message)) {
fist_ch = find("KBDT",message);
temp_str = RemoveByLength(fist_ch+5,message);
ADR_str = RemoveByLength(10,message);
temp_str = RemoveByLength(2,message);
BTN_str = RemoveByLength(2,message);
//print ("ADR KBP is: %s STATE is: %s\n",ADR_str,STATE_str);
MakeString(temp_str,"KBDT%s%s\r",ADR_str,BTN_str);
KeypadKBDT$ = temp_str;
}
}

}

Function KBP_Parse_Message(string message)
{
// Parsing for string - KBP, [01:04:04], 1
integer fist_ch;
integer len_str;
string temp_str[100];
string ADR_str[20];
string BTN_str[5];

//print("Received for parsing: %S\n",message);
if (find("KBP",message)){
while(find("KBP",message)) {
fist_ch = find("KBP",message);
temp_str = RemoveByLength(fist_ch+4,message);
ADR_str = RemoveByLength(10,message);
temp_str = RemoveByLength(2,message);
BTN_str = RemoveByLength(2,message);
//print ("ADR KBP is: %s STATE is: %s\n",ADR_str,STATE_str);
MakeString(temp_str,"KBP%s%s\r",ADR_str,BTN_str);
KeypadKBP$ = temp_str;
}
}
if (find("KBR",message)){
while(find("KBR",message)) {
fist_ch = find("KBR",message);
temp_str = RemoveByLength(fist_ch+4,message);
ADR_str = RemoveByLength(10,message);
temp_str = RemoveByLength(2,message);
BTN_str = RemoveByLength(2,message);
//print ("ADR KBR is: %s STATE is: %s\n",ADR_str,STATE_str);
MakeString(temp_str,"KBR%s%s\r",ADR_str,BTN_str);
KeypadKBP$ = temp_str;
}
}


}


/*******************************************************************************************
Event Handlers
(Uncomment and declare additional event handlers as needed)
*******************************************************************************************/

PUSH Connection
{
if (Connection = on)
{
Estab_Connect = ON;
}
}

RELEASE Connection
{
if (Connection = Off)
{
print("%s\n","Lutron Disconnect.");
call Disconnect_Proces();
Estab_Connect = off;
}
}







CHANGE RX$

{
wait(0,RX_WAIT) { //ensure only 1 thread at a time
string message[MAX_MESSAGE_LENGTH]; // temporary variable to hold individual message
integer first_ch;
string FB_string[17];

//print("LUTRON RX: %s \n",Rx$);
IF(find("LOGIN:",RX$)) {
message = remove("LOGIN:",Rx$);
call Initial_Proces();
}

IF(find("LNET>",RX$)) {
//print("find LNET: %s all length is %d \n",Rx$, len(Rx$));
IF(ThereIsConect = 0){
//print("Call Estab_conect prc \n");
message = remove("LNET>",Rx$);
call Estab_Connection();
}
}


IF(find("KLS",RX$)) {
message = Rx$;
// \x0D\x0AKLS, [01:06:20], 000000000000010000000000\x0D\x0A
call KLS_Parse_Message(message);
}

IF(find("KBP",RX$)) {
message = Rx$;
call KBP_Parse_Message(message);
//KBP, [01:04:04], 1
}

IF(find("KBR",RX$)) {
message = Rx$;
//KBR, [01:04:04], 1
call KBP_Parse_Message(message);

}
IF (find("KBDT", RX$)) {
message = Rx$;
call KBDT_Parse_Message(message);
}
IF (find("DL", RX$)) {
message = Rx$;
call DL_Parse_Message(message);
}




// Clear all buffer
message = RemoveByLength(len(Rx$),Rx$);


ProcessLogic();
}


}






/*******************************************************************************************
Main()
Uncomment and place one-time startup code here
(This code will get called when the system starts up)
*******************************************************************************************/
Function Main()
{

Estab_Connect = 0;
ThereIsConect = 0;
}



Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 14:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Модуль от Crestron (C++):

Создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу - C#
Как же все таки создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу. На многих форумах да и здесь находил код: ...

модуль S его перемещения, модуль средней скорости, а также среднепутевую скорость - Механика
Катер движется по озеру с постоянной по модулю скоростью 18 км/ч. Сначала в течении 1 минуты 40 секунды он идёт на север, затем, повернув...

Поставил 3-й модуль памяти, комп видит только один модуль - Оперативная память
Проблема такая, в материнке было 2 модуля Самсунг DDR3 по 2гб каждый(2 синих слота), решил расширить, докупил еще одну оперативку на 4 гб...

Для чего в этой комплектации модуль коммутатора и модуль администрирования? - Серверы
- Блейд-шасси IBM BladeCenter E - 1шт - Блейд-сервер IBM BladeCenter HS22 - 14 шт: - Модуль коммутатора Cisco Intelligent Gigabit...

Создать модуль, и программу которая присоед-ет модуль и выдает подпрограммы раз за разом - PascalABC.NET
unit leoro; interface Type A=array of integer; var i,j,k:integer; x,y,z:A; p:real; ...

Нужен микроконтроллер с поддержкой USB -slave, и можно было подключить модуль wifi и модуль 3g - Микроконтроллеры
Нужен микроконтроллер с поддержкой USB -slave, и можно было подключить модуль wifi и модуль 3g... Спасибо за внимание

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 14:37
Привет! Вот еще темы с ответами:

Создать модуль и программу, которая будет тестировать модуль - Pascal ABC
Модуль должен состоять из процедур и функций которые надам я Процедура: извините что в формате рисунка програмы не осталось,остался...

Msi x370 После чистки ноутбука от пыли перестали работать модуль wifi и модуль сетевого адаптера - Ремонт ноутбуков
После чистки ноутбука msi x370-455ru от пыли перестали работать модули сетевого адаптера и wifi

Типизированные файлы/Модуль Graph/Модуль DOS - Turbo Pascal
Всем доброго время суток! Народ, помогите, пожалуйста!!! У меня не получается разобраться с программами(( Я темы не совсем понимаю, первый...

Создайте модуль, в котором будет храниться процедура создания следующей картинки. Используя модуль, поместите картинку по углам экрана и в центре. - Pascal ABC
Помогите пожалуйста Создайте модуль, в котором будет храниться процедура создания следующей картинки. Используя модуль, поместите...


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

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

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