📄 errorinjection.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "errorInjection.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
ErrorInjection::ErrorInjection()
{
ExtraByte = false;
SubtractByte = false;
ChangeByteRandom = false;
EditBytesManually = false;
ChangeCRC = false;
InvalidControlField = false;
InvalidAddressField = false;
NoResponse = false;
ErrorTime = 0;
errorMask = 0;
}
ErrorInjection::~ErrorInjection()
{
}
bool ErrorInjection::AnyErrors()
{
if (errorMask != 0)
return true;
else
return false;
}
unsigned long ErrorInjection::GetMask()
{
return errorMask;
}
void ErrorInjection::SetErrorMode(bool theExtraByte, bool theSubtractByte,
bool theChangeByteRandom, bool theEditBytesManually, bool theChangeCRC,
bool theInvalidControlField, bool theInvalidAddressField, bool theNoResponse,
long theErrorTime)
{
ExtraByte = theExtraByte;
SubtractByte = theSubtractByte;
ChangeByteRandom = theChangeByteRandom;
EditBytesManually = theEditBytesManually;
ChangeCRC = theChangeCRC;
InvalidControlField = theInvalidControlField;
InvalidAddressField = theInvalidAddressField;
NoResponse = theNoResponse;
ErrorTime = theErrorTime;
errorMask = 0;
if (ExtraByte)
errorMask = errorMask | 0x1;
if (SubtractByte)
errorMask = errorMask | 0x10;
if (ChangeByteRandom)
errorMask = errorMask | 0x100;
if (EditBytesManually)
errorMask = errorMask | 0x1000;
if (ChangeCRC)
errorMask = errorMask | 0x10000;
if (InvalidControlField)
errorMask = errorMask | 0x100000;
if (InvalidAddressField)
errorMask = errorMask | 0x1000000;
if (NoResponse)
errorMask = errorMask | 0x10000000;
}
void ErrorInjection::ClearErrorSettings()
{
ExtraByte = false;
SubtractByte = false;
ChangeByteRandom = false;
EditBytesManually = false;
ChangeCRC = false;
InvalidControlField = false;
InvalidAddressField = false;
NoResponse = false;
ErrorTime = false;
errorMask = 0;
}
bool ErrorInjection::GetExtraByte()
{
return ExtraByte;
}
bool ErrorInjection::GetSubtractByte()
{
return SubtractByte;
}
bool ErrorInjection::GetChangeByteRandom()
{
return ChangeByteRandom;
}
bool ErrorInjection::GetEditBytesManually()
{
return EditBytesManually;
}
bool ErrorInjection::GetChangeCRC()
{
return ChangeCRC;
}
bool ErrorInjection::GetInvalidControlField()
{
return InvalidControlField;
}
bool ErrorInjection::GetInvalidAddressField()
{
return InvalidAddressField;
}
bool ErrorInjection::GetNoResponse()
{
return NoResponse;
}
void ErrorInjection::GetErrorMode(bool *theExtraByte, bool *theSubtractByte, bool *theChangeByteRandom,
bool *theEditBytesManually, bool *theChangeCRC, bool *theInvalidControlField,
bool *theInvalidAddressField, bool *theNoResponse,
long *theErrorTime)
{
*theExtraByte = ExtraByte;
*theSubtractByte = SubtractByte;
*theChangeByteRandom = ChangeByteRandom;
*theEditBytesManually = EditBytesManually;
*theChangeCRC = ChangeCRC;
*theInvalidControlField = InvalidControlField;
*theInvalidAddressField = InvalidAddressField;
*theNoResponse = NoResponse;
*theErrorTime = ErrorTime;
}
void ErrorInjection::UpdateSettingsAfterMessage()
{
if (ErrorTime) // we have a limit on errors
{
ErrorTime--;
if (!ErrorTime) // the last error has been done
{
ExtraByte=false;
SubtractByte=false;
ChangeByteRandom=false;
EditBytesManually=false;
ChangeCRC=false;
InvalidControlField=false;
InvalidAddressField=false;
NoResponse=false;
errorMask=false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -