Blame |
Last modification |
View Log
| RSS feed
#include <formatio.h>
#include <utility.h>
#include <ansi_c.h>
#include <rs232.h>
#include "SP2155.h"
#define COMWAIT 1.0
#define COMDELAY 0.05
static int SP2155_Port
;
static int nin
, nout
, ires
;
static char SP2155_Send
[100], SP2155_Receive
[100];
void _VI_FUNC SP2155_Open
(int port
)
{
SP2155_Port
=port
;
OpenComConfig
(SP2155_Port
, "", 38400, 0, 8, 1, 512, 512);
SetXMode
(SP2155_Port
, 0);
SetCTSMode
(SP2155_Port
, LWRS_HWHANDSHAKE_OFF
);
SetComTime
(SP2155_Port
, COMWAIT
);
return;
}
int _VI_FUNC SP2155_Cmd
(char *cmd
, double wait
)
{
Delay
(COMDELAY
);
FlushInQ
(SP2155_Port
);
nout
= sprintf (SP2155_Send
, "%s\r", cmd
);
ComWrt
(SP2155_Port
, SP2155_Send
, nout
);
if (wait
!=0.
) SetComTime
(SP2155_Port
, wait
);
nin
= ComRdTerm
(SP2155_Port
, SP2155_Receive
, 90, 0xa);
if (wait
!=0.
) SetComTime
(SP2155_Port
, COMWAIT
);
if (CompareStrings
(SP2155_Receive
, nin
-3, "ok\r", 0, 0)) return -1;
nin
=nin
-5;
SP2155_Receive
[nin
]=0;
return (nin
);
}
void _VI_FUNC SP2155_Echo
(int mode
)
{
if (mode
) {
SP2155_Cmd
("ECHO",0);
}else{
SP2155_Cmd
("NO-ECHO",0);
}
return;
}
int _VI_FUNC SP2155_GetWavelength
(void)
{
//** returns wavelength in angstrems
int ia
;
float wl
;
SP2155_Cmd
("?NM",0);
sscanf(SP2155_Receive
," %f ",&wl
);
ia
= floor (10*wl
+0.5);
return (ia
);
}
void _VI_FUNC SP2155_SetWavelength
(int wavel
)
{
//** sets wavelength in angstrems
float wl
;
char cmd
[100];
wl
=(float)wavel
/10.
;
sprintf(cmd
,"%0.1f GOTO",wl
);
SP2155_Cmd
(cmd
,10);
}
int _VI_FUNC SP2155_GetGrating
(void)
{
int ig
;
SP2155_Cmd
("?GRATING",0);
sscanf(SP2155_Receive
," %d ",&ig
);
return (ig
);
}
void _VI_FUNC SP2155_SetGrating
(int grating
)
{
char cmd
[100];
if ((grating
!=1)&&(grating
!=2)) return;
sprintf(cmd
,"%0d GRATING",grating
);
SP2155_Cmd
(cmd
,30);
}
int _VI_FUNC SP2155_GetTurret
(void)
{
return (1);
}
void _VI_FUNC SP2155_SetTurret
(int turret
)
{
}
void _VI_FUNC SP2155_SetSpeed
(int aperm
)
{
}
void _VI_FUNC SP2155_Scan
(int wavel
)
{
}
void _VI_FUNC SP2155_Close
(void)
{
CloseCom
(SP2155_Port
);
}
#ifdef SP2155_MAIN
#include <cvirte.h>
int __stdcall WinMain
(HINSTANCE hInstance
, HINSTANCE hPrevInstance
,
LPSTR lpszCmdLine
, int nCmdShow
)
{
int ig
,iangstrem
;
if (InitCVIRTE
(hInstance
, 0, 0) == 0) return -1; /* out of memory */
SP2155_Open
(7);
SP2155_Echo
(0);
SP2155_SetGrating
(1);
ig
=SP2155_GetGrating
();
printf("grating=%d\n",ig
);
// SP2155_Cmd ("?TURRET",0);
SP2155_Close
();
return 0;
}
#endif