SetTagByteBit e GetTagByteBit in cScript

Spesso è utile estrarre un bit da un byte per diminuire il numero di tag in scambio con il PLC

Di seguito il codice necessario per settare un bit all’interno di un byte

BOOL SetTagByteBit(char* pszTagDest, int iNumBit, short int iValue)
{
int iRit=TRUE;
char szTagDest[NC]; //contiene nome tag
int iAgg;

iAgg=iNumBit;

//Crea nome destinazione
sprintf(szTagDest,”%s”,pszTagDest);

if(iValue)
{
//Setta il bit
SetTagByteWait(szTagDest,GetTagByte(szTagDest) | (1<<iAgg));
}
else
{
//Resetta il bit
SetTagByteWait(szTagDest,GetTagByte(szTagDest) &~ (1<<iAgg));
}
return(iRit);

}

Di seguito il codice necessario per ottenere lo stato di un bit all’interno di un byte.

BOOL GetTagByteBit(char* pszTagSource, int iNumBit)
{

int iRit;
int iAgg;
char szTagSource[NC]; //contiene nome tag

//Crea nome sorgente
sprintf(szTagSource,”%s”,pszTagSource);

iAgg=iNumBit;

//Leggi valore
if(GetTagByte(szTagSource) & (1<<iAgg))
{
iRit=TRUE;
}
else
{
iRit=FALSE;
}
return(iRit);

}

Le funzioni servono di esempio ma sono facilmente estendibili per la stessa operazione su una word o una doppiaword.

Invia l'articolo in formato PDF a PDF Free

Comments

Leave a Reply