<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[problem beim speicherzugriff, bei getriggerten Kameras]]></title><description><![CDATA[<p>Hallo,<br />
kennt sich hier jemand mit der ids Kameraschnittstellen Programmierung aus?? Ich nutze 3 gigE Kameras von ids, wobei ich mit einer die anderen beiden triggere. Sobald ich den triggermode der zwei getriggerten Kameras aktiviere, kann ich nicht auf den Speicher zugreifen...<br />
Es wird mir angezeigt, dass die Kameras nicht geöffnet bzw. initialisiert sind, obwohl das getan wurde. Hier ein Codeausschnitt, hoffe das jemand damit etwas anfangen kann.</p>
<pre><code>/Init Gray and Colour Cams
if(is_InitCamera(&amp;phCamColour,NULL)==0 &amp;&amp;
	   is_InitCamera(&amp;phCamGray1,NULL)==0  &amp;&amp;
	   is_InitCamera(&amp;phCamGray2,NULL)==0)
	{

		//set memory format
		is_SetColorMode (phCamColour, IS_CM_BGR8_PACKED );
		is_SetColorMode (phCamGray1, IS_CM_MONO8);
		is_SetColorMode (phCamGray2, IS_CM_MONO8);
		//
		is_SetDisplayMode (phCamColour, IS_SET_DM_DIB);
		is_SetDisplayMode (phCamGray1, IS_SET_DM_DIB);
		is_SetDisplayMode (phCamGray2, IS_SET_DM_DIB);

		//set framerate
		is_SetFrameRate (phCamColour, FPS, &amp;newFPS);
		is_SetFrameRate (phCamGray1, FPS, &amp;newFPS);
		is_SetFrameRate (phCamGray2, FPS, &amp;newFPS);

		//set flash(trigger puls)
		is_SetFlashDelay (phCamColour,pulDelay,  pulDuration);
		is_SetFlashStrobe (phCamColour, IS_SET_FLASH_HI_ACTIVE, 0);
		//set trigger
		is_SetExternalTrigger (phCamColour, IS_SET_TRIGGER_OFF);
		is_SetExternalTrigger (phCamGray1, IS_SET_TRIGGER_HI_LO);
		is_SetExternalTrigger (phCamGray2, IS_SET_TRIGGER_HI_LO);

		// create Ringbuffer
		char *pFrameBuffer[iBufferSize]; 
		char *pFrameBufferGray1[iBufferSize]; 
		char *pFrameBufferGray2[iBufferSize]; 

		INT pFrame[iBufferSize]; 
		INT pFrameGray1[iBufferSize]; 
		INT pFrameGray2[iBufferSize]; 

		is_ClearSequence(phCamColour); 
		is_ClearSequence(phCamGray1); 
		is_ClearSequence(phCamGray2); 

		for (int i = 0; i &lt; iBufferSize; ++i) 
		{ 

			if (is_AllocImageMem(phCamColour, m_nSizeX, m_nSizeY, 24, &amp;pFrameBuffer[i], &amp;pFrame[i]) != IS_SUCCESS) 
				return false; 
			if (is_AddToSequence(phCamColour, pFrameBuffer[i], pFrame[i]) != IS_SUCCESS) 
				return false; 		
			if (is_AllocImageMem(phCamGray1, m_nSizeX,m_nSizeY, 8, &amp;pFrameBufferGray1[i], &amp;pFrameGray1[i]) != IS_SUCCESS) 
				return false; 
			if (is_AddToSequence(phCamGray1, pFrameBufferGray1[i], pFrameGray1[i]) != IS_SUCCESS) 
				return false; 
			if (is_AllocImageMem(phCamGray2, m_nSizeX, m_nSizeY, 8, &amp;pFrameBufferGray2[i], &amp;pFrameGray2[i]) != IS_SUCCESS) 
				return false; 
			if (is_AddToSequence(phCamGray2, pFrameBufferGray2[i], pFrameGray2[i]) != IS_SUCCESS) 
				return false; 

			pFrame[i] = i + 1; 
			pFrameGray1[i] = i + 1;
			pFrameGray2[i] = i + 1;
		} 
		//capture Video
		is_CaptureVideo(phCamColour, IS_WAIT);
		is_CaptureVideo(phCamGray1, IS_WAIT);
		is_CaptureVideo(phCamGray2, IS_WAIT);

		//init ImageQueue
		is_InitImageQueue (phCamColour, 0);
		is_InitImageQueue (phCamGray1, 0);
		is_InitImageQueue (phCamGray2, 0);
		char *pBuffer = NULL;
		INT nMemID = 0;
		char *pBufferGray1 = NULL;
		INT nMemIDGray1 = 0;
		char *pBufferGray2 = NULL;
		INT nMemIDGray2 = 0;

		//grab next image from queue
		while (IS_SUCCESS == is_WaitForNextImage(phCamColour, 1000, &amp;pBuffer, &amp;nMemID))
		{
			//returns 3 as return value!!!
			is_WaitForNextImage(phCamGray1, 1000, &amp;pBufferGray1, &amp;nMemIDGray1);
			is_WaitForNextImage(phCamGray2, 1000, &amp;pBufferGray2, &amp;nMemIDGray2);

			//set memory address
			img-&gt;imageData=pBuffer;
			imgGray1-&gt;imageData=pBufferGray1;
			imgGray2-&gt;imageData=pBufferGray2;

			//show images
			cvShowImage(&quot;test&quot;,img);
			cvShowImage(&quot;gray1&quot;,imgGray1);	//program crashes
			cvShowImage(&quot;gray2&quot;,imgGray2);
			cvWaitKey(1);

			//release memory
			is_UnlockSeqBuf (phCamColour, nMemID, pBuffer);
			is_UnlockSeqBuf (phCamGray1, nMemIDGray1, pBufferGray1);
			is_UnlockSeqBuf (phCamGray2, nMemIDGray2, pBufferGray2);
		}
</code></pre>
<p>Hat jemand eine Ahnung wo mein Fehler ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286092/problem-beim-speicherzugriff-bei-getriggerten-kameras</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 03:22:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286092.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 May 2011 13:59:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Tue, 03 May 2011 13:59:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
kennt sich hier jemand mit der ids Kameraschnittstellen Programmierung aus?? Ich nutze 3 gigE Kameras von ids, wobei ich mit einer die anderen beiden triggere. Sobald ich den triggermode der zwei getriggerten Kameras aktiviere, kann ich nicht auf den Speicher zugreifen...<br />
Es wird mir angezeigt, dass die Kameras nicht geöffnet bzw. initialisiert sind, obwohl das getan wurde. Hier ein Codeausschnitt, hoffe das jemand damit etwas anfangen kann.</p>
<pre><code>/Init Gray and Colour Cams
if(is_InitCamera(&amp;phCamColour,NULL)==0 &amp;&amp;
	   is_InitCamera(&amp;phCamGray1,NULL)==0  &amp;&amp;
	   is_InitCamera(&amp;phCamGray2,NULL)==0)
	{

		//set memory format
		is_SetColorMode (phCamColour, IS_CM_BGR8_PACKED );
		is_SetColorMode (phCamGray1, IS_CM_MONO8);
		is_SetColorMode (phCamGray2, IS_CM_MONO8);
		//
		is_SetDisplayMode (phCamColour, IS_SET_DM_DIB);
		is_SetDisplayMode (phCamGray1, IS_SET_DM_DIB);
		is_SetDisplayMode (phCamGray2, IS_SET_DM_DIB);

		//set framerate
		is_SetFrameRate (phCamColour, FPS, &amp;newFPS);
		is_SetFrameRate (phCamGray1, FPS, &amp;newFPS);
		is_SetFrameRate (phCamGray2, FPS, &amp;newFPS);

		//set flash(trigger puls)
		is_SetFlashDelay (phCamColour,pulDelay,  pulDuration);
		is_SetFlashStrobe (phCamColour, IS_SET_FLASH_HI_ACTIVE, 0);
		//set trigger
		is_SetExternalTrigger (phCamColour, IS_SET_TRIGGER_OFF);
		is_SetExternalTrigger (phCamGray1, IS_SET_TRIGGER_HI_LO);
		is_SetExternalTrigger (phCamGray2, IS_SET_TRIGGER_HI_LO);

		// create Ringbuffer
		char *pFrameBuffer[iBufferSize]; 
		char *pFrameBufferGray1[iBufferSize]; 
		char *pFrameBufferGray2[iBufferSize]; 

		INT pFrame[iBufferSize]; 
		INT pFrameGray1[iBufferSize]; 
		INT pFrameGray2[iBufferSize]; 

		is_ClearSequence(phCamColour); 
		is_ClearSequence(phCamGray1); 
		is_ClearSequence(phCamGray2); 

		for (int i = 0; i &lt; iBufferSize; ++i) 
		{ 

			if (is_AllocImageMem(phCamColour, m_nSizeX, m_nSizeY, 24, &amp;pFrameBuffer[i], &amp;pFrame[i]) != IS_SUCCESS) 
				return false; 
			if (is_AddToSequence(phCamColour, pFrameBuffer[i], pFrame[i]) != IS_SUCCESS) 
				return false; 		
			if (is_AllocImageMem(phCamGray1, m_nSizeX,m_nSizeY, 8, &amp;pFrameBufferGray1[i], &amp;pFrameGray1[i]) != IS_SUCCESS) 
				return false; 
			if (is_AddToSequence(phCamGray1, pFrameBufferGray1[i], pFrameGray1[i]) != IS_SUCCESS) 
				return false; 
			if (is_AllocImageMem(phCamGray2, m_nSizeX, m_nSizeY, 8, &amp;pFrameBufferGray2[i], &amp;pFrameGray2[i]) != IS_SUCCESS) 
				return false; 
			if (is_AddToSequence(phCamGray2, pFrameBufferGray2[i], pFrameGray2[i]) != IS_SUCCESS) 
				return false; 

			pFrame[i] = i + 1; 
			pFrameGray1[i] = i + 1;
			pFrameGray2[i] = i + 1;
		} 
		//capture Video
		is_CaptureVideo(phCamColour, IS_WAIT);
		is_CaptureVideo(phCamGray1, IS_WAIT);
		is_CaptureVideo(phCamGray2, IS_WAIT);

		//init ImageQueue
		is_InitImageQueue (phCamColour, 0);
		is_InitImageQueue (phCamGray1, 0);
		is_InitImageQueue (phCamGray2, 0);
		char *pBuffer = NULL;
		INT nMemID = 0;
		char *pBufferGray1 = NULL;
		INT nMemIDGray1 = 0;
		char *pBufferGray2 = NULL;
		INT nMemIDGray2 = 0;

		//grab next image from queue
		while (IS_SUCCESS == is_WaitForNextImage(phCamColour, 1000, &amp;pBuffer, &amp;nMemID))
		{
			//returns 3 as return value!!!
			is_WaitForNextImage(phCamGray1, 1000, &amp;pBufferGray1, &amp;nMemIDGray1);
			is_WaitForNextImage(phCamGray2, 1000, &amp;pBufferGray2, &amp;nMemIDGray2);

			//set memory address
			img-&gt;imageData=pBuffer;
			imgGray1-&gt;imageData=pBufferGray1;
			imgGray2-&gt;imageData=pBufferGray2;

			//show images
			cvShowImage(&quot;test&quot;,img);
			cvShowImage(&quot;gray1&quot;,imgGray1);	//program crashes
			cvShowImage(&quot;gray2&quot;,imgGray2);
			cvWaitKey(1);

			//release memory
			is_UnlockSeqBuf (phCamColour, nMemID, pBuffer);
			is_UnlockSeqBuf (phCamGray1, nMemIDGray1, pBufferGray1);
			is_UnlockSeqBuf (phCamGray2, nMemIDGray2, pBufferGray2);
		}
</code></pre>
<p>Hat jemand eine Ahnung wo mein Fehler ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057807</guid><dc:creator><![CDATA[bronkobob]]></dc:creator><pubDate>Tue, 03 May 2011 13:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Tue, 03 May 2011 19:56:33 GMT]]></title><description><![CDATA[<p>Danke für die C++-Tags.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058096</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 03 May 2011 19:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Wed, 04 May 2011 07:59:12 GMT]]></title><description><![CDATA[<p>Hallo bronkobob,</p>
<p>versuche es doch mal direkt bei IDS, die haben einen sehr guten Support die können Dir sicher weiterhelfen.</p>
<p>Herzliche Grüsse<br />
Walter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058235</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Wed, 04 May 2011 07:59:12 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Wed, 04 May 2011 08:20:21 GMT]]></title><description><![CDATA[<p>Ja, die haben eigentlich auch einen guten Support, doch die hatten nichts am Code auszusetzen.<br />
Ich habe jetzt herausgefunden, dass wenn ich die Frame per seconds unter 20 Stelle keine Fehler mehr auftritt. Selbst wenn ich die Frames gar nicht mehr anzeige, bekomme ich ab 20 frames in der sekunde ne fehlermeldung. Ist die Speicherverwaltung so langsam, dass nicht mehr Bilder pro sekunde verarbeitet werden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058245</guid><dc:creator><![CDATA[Bronkobob]]></dc:creator><pubDate>Wed, 04 May 2011 08:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Wed, 04 May 2011 08:27:02 GMT]]></title><description><![CDATA[<p>Return value 3 ist doch ein timeout. Du kriegst also scheinbar innerhalb deines Timeouts (1000 ms) kein Trigger-Signal und somit wird der Puffer gar nicht gefüllt. Du darfst sowieso nur fortfahren, wenn deine is_WaitForNextImage-Aufrufe beide IS_SUCCESS zurückgeben und die Zeiger nicht NULL sind. Aber egal, du bist sicher noch am rumprobieren und hast deshalb nicht alle Überprüfen im Programm. Jedenfalls solltest du mal überlegen, warum dein Trigger-Eingang nichts meldet. Was genau ist denn eigentlich dein Trigger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058250</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 04 May 2011 08:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Wed, 04 May 2011 08:32:05 GMT]]></title><description><![CDATA[<p>Bronkobob schrieb:</p>
<blockquote>
<p>Ja, die haben eigentlich auch einen guten Support, doch die hatten nichts am Code auszusetzen.<br />
Ich habe jetzt herausgefunden, dass wenn ich die Frame per seconds unter 20 Stelle keine Fehler mehr auftritt. Selbst wenn ich die Frames gar nicht mehr anzeige, bekomme ich ab 20 frames in der sekunde ne fehlermeldung. Ist die Speicherverwaltung so langsam, dass nicht mehr Bilder pro sekunde verarbeitet werden können?</p>
</blockquote>
<p>Ok, nun sieht die Sache schon anders aus. Hm, ich würde an deiner Stelle mal ausprobieren, ob du - sofern möglich - mit anderen Settings (z.B. geringere exposure time) eine höhere Framerate erzielen kannst. Außerdem hat die Kamera ja eine maximale Pixel- bzw. Zeilenfrequenz, die du vielleicht schon überschreiten willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058254</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 04 May 2011 08:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Wed, 04 May 2011 09:06:39 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Info, ich habe die Pixelclock hochgesetzt und jetzt funzt es.<br />
Ist nur komisch, dass es im Nicht-Trigger-mode auch ohne manuelle Veränderung der Pixelclock funktionierte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058270</guid><dc:creator><![CDATA[Bronkobob]]></dc:creator><pubDate>Wed, 04 May 2011 09:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim speicherzugriff, bei getriggerten Kameras on Wed, 04 May 2011 09:40:36 GMT]]></title><description><![CDATA[<p>Bronkobob schrieb:</p>
<blockquote>
<p>Vielen Dank für die Info, ich habe die Pixelclock hochgesetzt und jetzt funzt es.<br />
Ist nur komisch, dass es im Nicht-Trigger-mode auch ohne manuelle Veränderung der Pixelclock funktionierte.</p>
</blockquote>
<p>Verstehe ich auch nicht. Nach meinem Verständnis und meiner Erfahrung sollte die Kamera im Freerun-Modus die Frequenz liefern, die man setzt (vorausgesetzt, man kann sie auch setzen, ansonsten gibts nur full speed) bzw. die eingestellt ist. Oder hält die Kamera eventuell 2 Werte (Frequenz freerun und Frequenz triggered)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058302</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 04 May 2011 09:40:36 GMT</pubDate></item></channel></rss>