Запись текста в ПЛК с переполнением стека

Я использую библиотеку из CodeSys для записи переменных в ПЛК с программой на C ++.

Вот как я пишу число в ПЛК:

void PLCconnection::WriteVariable(int a_value, int a_listPosition)
{
unsigned long ulStart;
PlcSymbolDesc *pSymbols;
unsigned long ulNumOfSymbols = 0;
int iNumOfVars = 28;
int i;
char **ppszVars = new char*[iNumOfVars];

for (i = 0; i < iNumOfVars; i++)
ppszVars[i] = new char[255];

long lResult = RESULT_FAILED;
lResult = pPLCHandler->GetAllItems(&pSymbols, &ulNumOfSymbols);
if (lResult == RESULT_OK)
{

strcpy(ppszVars[0], pSymbols[a_listPosition].pszName); //getting the variable name

//ppszVar;
/* Write variables value to check, if variables can be written */
unsigned char **ppbyValues = new unsigned char*[2];
ppbyValues[0] = (unsigned char *)new unsigned long;
*(unsigned long *)ppbyValues[0] = a_value;

ulStart = CAL_SysTimeGetMs();
if (pPLCHandler->SyncWriteVarsToPlc(ppszVars, 1, ppbyValues) == RESULT_OK)
{
//writing succeeded
}
else
{
//writing failed
}

delete ppbyValues[0];
delete[] ppbyValues;
}
else
{
// Couldn't retrieve symbols
}
for (i = 0; i < iNumOfVars; i++)
delete[] ppszVars[i];
delete[] ppszVars;

}

Теперь вместо того, чтобы давать int a_valueЯ хочу отправить stringвместо.

Как я могу заставить этот код работать с string?

Ниже вы можете найти некоторую информацию о методе SyncWriteVarsToPLC:

Этот метод может использоваться для передачи списка значений переменных в ПЛК. Значения записываются непосредственно в ПЛК.

  • ppszSymbols: список указателей на имена переменных. Эти переменные будут записаны в ПЛК один раз.

  • ulNumOfSymbols: количество переменных в списке

  • ppbyValues: список указателей на значения переменных, которые должны быть записаны в ПЛК. Внимание: должно соответствовать списку указанных переменных!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]