Subversion Repositories f9daq

Rev

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