Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2017, 08:31   #1
suraba
Пользователь
 
Регистрация: 24.01.2017
Сообщений: 13
По умолчанию Как сделать результатом функции две переменные.

Здравствуйте!
Нужна помощь!
Есть функция результатом работы которой должно быть два значения
старший high, и младший low байт CRC.


Код:
private: int CalcCRC16(int *x, int size_t){
				
unsigned short crc = 0xFFFF;
				
// Compute the MODBUS RTU CRC
for (int i = 0; i < size_t; i++) {
crc ^=  x[i];          
  
for (int i = 0; i < 8; i++) {   
if ((crc & 0x0001) != 0)
{      // If the LSB is set
crc >>= 1;                    
crc ^= 0xA001;
}
else                           
crc >>= 1;             
}
}

return crc;
}

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

int adr = Int32::Parse(this->textBox1->Text);

int x[9] = {adr, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02};

unsigned short high;
unsigned short low;
unsigned short CRC;

CRC = CalcCRC16(x, 9); 

high = CRC & 0xFF; 
low = (CRC >> 8) & 0xFF;

this->textBox2->Text = String::Format("{0:X2} ", high);
this->textBox2->AppendText(String::Format("{0:X2}", low));
				 
}
Буду очень признателен.
suraba вне форума Ответить с цитированием
Старый 12.04.2017, 08:40   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

struct (или class) или принимать параметры по ссылке или указателю и изменять их значения.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.04.2017, 10:28   #3
suraba
Пользователь
 
Регистрация: 24.01.2017
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
struct (или class) или принимать параметры по ссылке или указателю и изменять их значения.
Получилось сделать через массив.

Код:
private: int CalcCRC16(int *func, int size_t, int *crc){
				
unsigned short x = 0xFFFF;
				
// Рассчёт CRC16 (MODBUS RTU)
for (int i = 0; i < size_t; i++) {
x ^=  func[i];          
  
for (int i = 0; i < 8; i++) {   
if ((x & 0x0001) != 0)
{
x >>= 1;                    
x ^= 0xA001;
}
else                           
x >>= 1;             
}
}

crc[0] = x & 0xFF; 
crc[1] = (x >> 8) & 0xFF;

return 0;
}

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

int adr = Int32::Parse(this->textBox1->Text);

int func[9] = {adr, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02};

int* crc = new int[2];

CalcCRC16(func, 9, crc); 

this->textBox2->Text = String::Format("{0:X2} ", crc[0]) + String::Format("{0:X2} ", crc[1]);
				 
}

Последний раз редактировалось suraba; 12.04.2017 в 10:49.
suraba вне форума Ответить с цитированием
Старый 12.04.2017, 10:29   #4
suraba
Пользователь
 
Регистрация: 24.01.2017
Сообщений: 13
По умолчанию

Попробую сделать также через struct.
suraba вне форума Ответить с цитированием
Старый 12.04.2017, 10:31   #5
suraba
Пользователь
 
Регистрация: 24.01.2017
Сообщений: 13
По умолчанию

Alex11223 благодарю!

Последний раз редактировалось suraba; 12.04.2017 в 10:40.
suraba вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тут и переменные и функции, как это работает? spoon100500 JavaScript, Ajax 3 27.10.2016 15:02
Как объединить две функции в 1 ячейке jekakeba Microsoft Office Excel 14 15.11.2015 15:53
Как правильно сделать ссылку содержащую переменные php и js? Illusiony PHP 5 05.03.2015 18:06
Как сделать переменные суперглобальными PHP? Aleskandr PHP 2 13.06.2011 23:12
Как прописать переменные типа array в функции? Dux Общие вопросы Delphi 2 09.12.2008 23:46