Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C++; < >我使用CoDysS的一个库,用C++程序编写变量到PLC。_C++_Plc - Fatal编程技术网

用C++; < >我使用CoDysS的一个库,用C++程序编写变量到PLC。

用C++; < >我使用CoDysS的一个库,用C++程序编写变量到PLC。,c++,plc,C++,Plc,这是我向PLC写入数字的方式: 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*[iNu

这是我向PLC写入数字的方式:

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;

}
void PLCconnection::WriteVariable(int a_值,int a_列表位置)
{
无符号长ulStart;
PlcSymbolDesc*符号;
无符号长符号=0;
int-inumovars=28;
int i;
字符**ppszVars=新字符*[iNumOfVars];
对于(i=0;iGetAllItems(&pSymbols,&ulNumOfSymbols);
如果(lResult==结果_正常)
{
strcpy(ppszVars[0],pSymbols[a_listPosition].pszName);//获取变量名
//ppszVar;
/*写入变量值以检查是否可以写入变量*/
无符号字符**ppbyValues=新的无符号字符*[2];
ppbyValues[0]=(无符号字符*)新的无符号长字符;
*(无符号长*)ppbyValues[0]=一个_值;
ulStart=CAL_SysTimeGetMs();
if(pPLCHandler->SyncWriteVarsToPlc(ppszVars,1,ppbyValues)==RESULT\u确定)
{
//写作成功
}
其他的
{
//写作失败
}
删除ppbyValues[0];
删除[]ppbyvalue;
}
其他的
{
//无法检索符号
}
对于(i=0;i
现在,我想改为发送
string
,而不是给出
int a_值

如何使此代码与
字符串一起工作

您可以在下面找到有关该方法的一些信息
SyncWriteVarsToPLC

此方法可用于将变量值列表传输至PLC。这些值直接写入PLC

  • ppszSymbols:指向变量名的指针列表。这些变量将一次性写入PLC

  • ulNumOfSymbols:列表中的变量数

  • ppbyValues:指向应写入PLC的变量值的指针列表。注意:必须与指定变量列表匹配