IP 기반 카메라 (basler Ace2000 - 50gm)는 우분투 12.04 64 비트를 실행하는 임베디드 보드에 연결되어 있습니다. 문서에 따라 구성 할 수 있었지만 이제는 원하는 모든 종류의 매개 변수로 프레임 속도로 프레임을 잡을 수 있습니다.갑작스런 충돌 후 프로그램 내의 모든 포인터 변수가 삭제 되었습니까?
typedef Pylon::CBaslerGigEInstantCamera Camera_t;
void Cam_Init()
{
bool Camera_Initialization = false;
Camera_t *Camera;
Camera = new Camera_t();
PylonInitialize();
do{
if(!Camera_Initialization)
{
try
{
CTlFactory& tlFactory = CTlFactory::GetInstance();
// Get all attached devices and exit application if no device is found.
DeviceInfoList_t devices;
qDebug("Detecting Camera ....");
if (tlFactory.EnumerateDevices(devices) == 0)
{
throw RUNTIME_EXCEPTION("No camera present.");
}
Camera = new Camera_t( tlFactory.CreateDevice(devices[0 ]));
Camera->Open();
CAcquireContinuousConfiguration().OnOpened(*Camera);
Camera->StartGrabbing(GrabStrategy_UpcomingImage);
Camera_Initialization = true;
qDebug("Camera is Configured Successfully");
}
catch(GenericException &e)
{
Interface<< "**** An exception occurred! Desription is: " << "\n"<< " " << e.GetDescription() << "\n";
}
}
}while(!Camera_Initialization);
}
이 코드는 큰 프로그램의 일부입니다
이 여기에 초기화 코드이다 (필자는 C++ API를 사용).
문제는 내 프로그램이 갑자기 중단되고 (소스 엔진을 찾지 못했음) 코드를 다시 실행하면 마지막 충돌 이후 5 분 이상 경과 할 때까지 카메라를 감지하지 못하는 것입니다. 그것은
카메라를 초기화 내 코드를 본 것처럼**** An exception occurred! Desription is:
Failed to open 'Basler acA2000-50gm#00305316A684#10.136.18.100:3956'. The device is controlled by another application. Err: GX status 0xe1018006 (0xE1018006)
, 내 카메라에 연결하는 포인터 객체를 사용했습니다 다음과 같은 오류 메시지가 발생하며 나는 코드가이 포인터가 있으므로 삭제되지 않습니다 충돌 때 생각 카메라를 사용할 수 없습니다!
나는 또한 네트워크 문제라고 생각하며 해결 방법을 모른다. 나는 모든 다른 방법을 시도 crashesh 내 프로그램은 다음과 같은 우분투에서 서비스 네트워킹 다시 시작하는 경우 :
sudo service network-manager restart
sudo ifdown eth0 && sudo ifup eth0
.
.
.
을하지만, 그들 중 누구도 나를 위해 일한 내 프로그램이 충돌 할 때 여전히 실행할 수 있도록 5 분 이상 소요 내 프로그램.
5 분 후에 내 코드가 카메라를 올바르게 감지하고 내 코드를 실행할 수 있다는 것은 놀라운 일입니다. 나는 엄청난 시간을 보냈고 카메라를 탐지하기 위해 코드를 실행하기 위해 적어도 5 분간 머물러야합니다 !!! (다음 5 분 동안 위의 오류 메시지를 보여주기 위해 반복됩니다) 나는이 코드를 내 랩톱에서 여러 번 실행했고 PC가 있지만 코드가 충돌 한 후에 문제가없는 코드를 실행할 수 있으므로 임베디드 보드 네트워크에 문제가 있다고 생각합니다!
나는 모든 종류의 변수가 프로그램을 종료 한 후 삭제된다고 생각했지만 그렇게 생각하는 것이 잘못되었다고 생각합니다!
이 문제를 해결하려는 모든 정보를 제공 할 수 있습니다. 감사합니다.
서비스 프로세스를 사용하여 카메라와 상호 작용하는 코드에서 충돌 코드를 격리하십시오. 주 프로세스가 충돌하면 서비스 프로세스가 정상적으로 종료 될 수 있습니다. –
@DavidSchwartz 이러한 서비스를 작성하는 데 익숙해지기위한 유용한 참고 자료를 보여줄 수 있습니까? 나는 어떻게 시작하고 어디에서 봐야하는지 모른다. – PsP