Vielen dank für die Rückmeldungen.
In den Beispielen aus dem
SDK wird immer das
Handle überprüft.
Dann würde ich Testhalber den Erwerb des Handles und den Aufruf der Funktion entzerren und z.B. hinter 2 Knöpfe legen
Das
Handle passt. Wie schon gesagt liefert die Funktion 1 zurück und ich das Signal wird - überprüfbar - erzeugt. Das
Handle stimmt also und die Hardware klickert auch beim Initialisieren.
Ich habe kein solches Teil. Meine Erfahrungen mit ähnlichen Teilen ist aber das man Anfangs erst mal einen definierten Zustand herstellen muss, z.B. über das initiieren einer Messung.
Danke. Hab ich versucht, keine Besserung.
Du hast den c Typen float mit double übersetzt. Bist du dir sicher dass das stimmt? float hat normalerweise nur 4 Bytes, double jedoch 8.
Nein, leider nicht. Ich hab
double jetzt mal durch
real ersetzt und auch andere Typen nochmal angepasst.
Die Deklaration schaut nun so aus:
Delphi-Quellcode:
function ps2000_set_sig_gen_built_in
(
handle : smallint;
offsetVoltage : longint;
pkToPk : longword;
waveType : integer;
startFrequency : real;
stopFrequency : real;
increment : real;
dwellTime : real;
sweepType : integer;
sweeps : longword)
: smallint;
stdcall;
external '
ps2000.dll';
Resultat bleibt aber auch hier das gleiche ...
ABER ich hab grad mal ein kleines Testprojekt in Dev-C++ erstellt:
Code:
#include <stdio.h>
#include <stdlib.h>
#include "ps2000.h"
int main(int argc, char *argv[])
{
short ps2000_hnd = 0;
long ofsV = 0;
unsigned long pkToPk = 1000000;
PS2000_WAVE_TYPE wt = PS2000_SINE;
float startF = 200, endF = 400, inc = 0, dT = 0;
PS2000_SWEEP_TYPE st = PS2000_UP;
unsigned long sweeps = 0;
int r = 0;
printf("Opening Pico device ...\n");
ps2000_hnd = ps2000_open_unit();
if (!ps2000_hnd) {
printf("Error opening Pico device.\n");
return -1;
}
printf("Device initialized: %d\n", ps2000_hnd);
r = ps2000_set_sig_gen_built_in(
ps2000_hnd,
ofsV,
pkToPk,
wt,
startF,
endF,
inc, dT, st, sweeps
);
printf("Result: %d\n", r);
system("PAUSE");
return 0;
}
... und siehe da: Es kommt genau das raus, was soll, so wie in der PicoScope Software selbst. Schonmal ein riesen Fortschritt.
Das heisst, es muss irgendwie an der Deklaration liegen. Aber nur wo, wir haben doch schon alles Mögliche durchprobiert ...