externe Werte Lesen macht komische Sachen...
-
Hallo Freunde,
ich bin kein Profi, jedoch erscheint mir ein Quellcode logisch. Nur habe ich ein Problem damit. Folgendes: In meinem hier geposteten Code kann man Parametereinstellungen vornehmen, um Daten über eine Interfacekarte von einem Meßgerät zu lesen.
So jetzt habe ich hier mal alles eingestellt und möchte 30 Werte in ein Array lesen, und anschließend anzeigen! Alles soweit funktionsfähig
ABER: immer der letzte Wert ist eine undefinierte Zahl die ungefähr so aussieht:
-18235640000000000000000000
Jetzt habe ich schon jede Menge versucht nur egal wieviel Werte ich anzeigen will sei es 20 oder 30 oder volle 8191 mit der null gezählt, immer ist der letzte Wert so ein mist??? ich bin am verzweifeln! vielleicht hat ja jemand eine IDEE? Dafür wäre ich sehr dankbar.lg smarty
hier der code:
#include <stdio.h> #include <conio.h> #include "IK220Con.h" ULONG IKCard[16]; USHORT Ax; USHORT Alarm; USHORT Status; char VersCard[20], VersDrv[20], VersDll[20]; double CntVal; double start=0; ULONG DllStatus, DllInfo; //En-Dat USHORT EnStatus; USHORT EnType; ULONG EnPeriod; ULONG EnStep; USHORT EnTurns; USHORT EnRefDist; USHORT EnCntDir; void main (void) { if (!IK220Find (IKCard)) // Search IK 220 { printf ("Error: IK220Find\n"); // Read DLL-Status if (!IK220DllStatus (&DllStatus, &DllInfo)) printf ("Error: IK220DllStatus\n"); printf ("DLL-Status: 0x%08lX DLL-Info: 0x%08lX", DllStatus, DllInfo); _getch(); return; } for (Ax=0; Ax<2; Ax++) if (IKCard[Ax]) { // INIT IK 220 if (!IK220Init (Ax)) printf ("Error: IK220Init axis %d\n", Ax); else { printf ("Axis %d initialized - ", Ax); // Parameter settings IK 220 // inkrement. messure tool IK220WritePar(Ax,1,0); // 1Vpp messure tool IK220WritePar(Ax,2,0); // time interval for the int. Timer here->100µs IK220WritePar(Ax,11,33); // intern Ram, howmany values at the RAM IK220WritePar(Ax,13,29); // release intern Timer Latch L0 IK220WritePar(Ax,14,1); // write Register 0 to RAM on IK220 (Single Shot) IK220ModeRam(Ax,3); // Timersignal output to -Lout2 X21/1 IK220ModeTimer(0,1); // Output IK Card values if (!IK220Version (Ax, &VersCard[0], &VersDrv[0], &VersDll[0])) printf ("Error: IKVersion\n"); else printf ("Card: %s %s %s\n", VersCard, VersDrv, VersDll); } } // Output Card adress(es) for (Ax=0; Ax<2; Ax++) if (IKCard[Ax]) printf ("IK 220 (%2d) at address: 0x%08lX\n", Ax, IKCard[Ax]); printf ("\n"); USHORT maxDataCount = 29; double axisData[29]; USHORT dataCount = 0; USHORT dataStatus = 0; int i; int lStatus; // trigger Latch IK220LatchInt(0); // waiting about the intern IK220 memory is full do { IK220Latched(0,0,&lStatus); } while (lStatus==0); // read data from IK220 (Axis 0) memory and put it on a array IK220BurstRam(0,maxDataCount, &axisData[dataCount], &dataCount, &dataStatus); // Output all Data on display for(i=0;i<=dataCount;i++) { printf (" (%3i) Axis %d: %12.4f ",i, 1, axisData[i]); printf ("\r"); printf ("\n"); } _getch(); printf ("\n\n"); }
-
IK220Con.h hab ich nicht, also les ich den Code gleich gar nicht.
Aber das klingt sehr nach Pufferüberlauf.
-
hier
for(i=0;i<=dataCount;i++) { printf (" (%3i) Axis %d: %12.4f ",i, 1, axisData[i]); printf ("\r"); printf ("\n"); }
muss es wohl
for(i=0;i<dataCount;i++) // ohne =
heißen, oder?
jenz
-
Jenz ich sage viellen DANK! vor lauter Bäumen sah ich den Wald nicht. Danke und einen schönen Tag.
-
Hallo College,
Ich bin ein Test-Ingenieur in der Türkei. Ich fand den Code via Google. Ich versuche, beide Achsen von IK220 gleichzeitig lesen. zu tun, dass ich verwenden innerem Verriegelung (internal latching) haben. könnten Sie mir helfen, für C-Code, um beide Achsen gleichzeitig lesen?
Danke Schön.
Grüsse.
Bahadir ISCAN