' schrieb:Dann zeige doch mal denn Code. Wie ist das Array deklariert?
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
#include "extcode.h"
#include <stdio.h>
#include <windows.h>
#include <mil.h>
#define DLL_EXPORT __declspec (dllexport)
typedef struct {
int32 dimSizes[2];
uInt16 Numeric[1];
} TD1;
typedef TD1 **TD1Hdl;
.
.
.
DLL_EXPORT void Fetch(TD1Hdl Array, uInt16 *FrameNumber);
void Fetch(TD1Hdl Array, uInt16 *FrameNumber)
{
if(MilGrabImageBuffer[NumberOfGrabBuffers])
{
(*Array)->dimSizes[0] = PixelY; // rows
(*Array)->dimSizes[1] = PixelX; // cols
// Check user given value.
if((*FrameNumber > NumberOfGrabBuffers) || (*FrameNumber <= 0))
MessageBox(NULL, "Your chosen Frame number is out of range.nChose a smaller value.", "Mil Hub Error", MB_ICONSTOP | MB_OK | MB_SYSTEMMODAL);
else
{
// Copy 2d buffer into an user allocated array (*Array).
MbufGet2d(MilGrabImageBuffer[*FrameNumber], 0, 0, PixelX, PixelY, &((**Array).Numeric[0])); // Pointer to first array element
if(MappGetError(M_GLOBAL, M_NULL))
MessageBox(NULL, "Error occured by getting image buffer.", "Mil Hub Error", MB_ICONSTOP | MB_OK | MB_SYSTEMMODAL);
}
}
}
</div>
' schrieb:Wie rufst Du NumericArrayResize auf?
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>NumericArrayResize(uW, 2L, (UHandle *) (*Array)->Numeric, SizeX*SizeY);</div>
uW = Data is an array of unsigned 16-bit integers.
2L = 2 Dimensions
UHandle = A pointer to the handle that you want to resize.
SizeX*SizeY = The new number of elements to which the handle should refer.
' schrieb:Warum hast Du beim Aufruf der MIL Funktion SizeX und SizeY aber bei der Initialisierung SizelX und SizeY?
Falls du
SizelX meinst, dass war ein Tippfehler. Im code ist es richtig.
' schrieb:Bist Du sicher dass die MIL Funktion kein Padding von Rows durchführt und damit das Array effektiv zu klein ist?
Nein bin ich mir nicht. Allerdings hatte ich nie Probleme innerhalb der CIN. Da klappte das Kopieren des Puffers ohne Probleme.
' schrieb:Was für ein Bilddatentyp ist es (Integer, Float, Greyscale, RGB)?
Rolf Kalbermatter
uInt16
Danke für deine schnelle Antwort. Meine Angaben waren wohl etwas unvollständig.