Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1. #include <formatio.h>
  2. #include <utility.h>
  3. #include <ansi_c.h>
  4. #include <rs232.h>
  5. #include "SP2155.h"
  6.  
  7. #define COMWAIT 1.0
  8. #define COMDELAY 0.05
  9.  
  10. static int SP2155_Port;
  11. static int nin, nout, ires;
  12. static char SP2155_Send[100], SP2155_Receive[100];
  13.  
  14. void _VI_FUNC SP2155_Open (int port)
  15. {
  16.   SP2155_Port=port;
  17.  
  18.   OpenComConfig (SP2155_Port, "", 38400, 0, 8, 1, 512, 512);
  19.   SetXMode (SP2155_Port, 0);
  20.   SetCTSMode (SP2155_Port, LWRS_HWHANDSHAKE_OFF);
  21.   SetComTime (SP2155_Port, COMWAIT);
  22.  
  23.   return;
  24. }
  25.  
  26. int _VI_FUNC SP2155_Cmd (char *cmd, double wait)
  27. {
  28.   Delay(COMDELAY);
  29.   FlushInQ (SP2155_Port);
  30.   nout = sprintf (SP2155_Send, "%s\r", cmd);
  31.   ComWrt (SP2155_Port, SP2155_Send, nout);
  32.   if (wait!=0.) SetComTime (SP2155_Port, wait);
  33.   nin = ComRdTerm (SP2155_Port, SP2155_Receive, 90, 0xa);
  34.   if (wait!=0.) SetComTime (SP2155_Port, COMWAIT);
  35.   if (CompareStrings (SP2155_Receive, nin-3, "ok\r", 0, 0)) return -1;
  36.   nin=nin-5;
  37.   SP2155_Receive[nin]=0;
  38.   return (nin);
  39. }
  40.  
  41. void _VI_FUNC SP2155_Echo (int mode)
  42. {
  43.   if (mode) {
  44.     SP2155_Cmd ("ECHO",0);
  45.   }else{
  46.     SP2155_Cmd ("NO-ECHO",0);
  47.   }
  48.   return;
  49. }
  50.  
  51. int _VI_FUNC SP2155_GetWavelength (void)
  52. {
  53. //** returns wavelength in angstrems
  54.  
  55.   int ia;
  56.   float wl;
  57.  
  58.   SP2155_Cmd ("?NM",0);
  59.   sscanf(SP2155_Receive," %f ",&wl);
  60.   ia = floor (10*wl+0.5);
  61.   return (ia);
  62. }
  63.  
  64. void _VI_FUNC SP2155_SetWavelength (int wavel)
  65. {
  66. //** sets wavelength in angstrems
  67.  
  68.   float wl;
  69.   char cmd[100];
  70.  
  71.   wl=(float)wavel/10.;
  72.   sprintf(cmd,"%0.1f GOTO",wl);
  73.   SP2155_Cmd (cmd,10);
  74. }
  75.  
  76. int _VI_FUNC SP2155_GetGrating (void)
  77. {
  78.   int ig;
  79.  
  80.   SP2155_Cmd ("?GRATING",0);
  81.   sscanf(SP2155_Receive," %d ",&ig);
  82.   return (ig);
  83. }
  84.  
  85. void _VI_FUNC SP2155_SetGrating (int grating)
  86. {
  87.   char cmd[100];
  88.  
  89.   if ((grating!=1)&&(grating!=2)) return;
  90.   sprintf(cmd,"%0d GRATING",grating);
  91.   SP2155_Cmd (cmd,30);
  92. }
  93.  
  94. int _VI_FUNC SP2155_GetTurret (void)
  95. {
  96.   return (1);    
  97. }
  98.  
  99. void _VI_FUNC SP2155_SetTurret (int turret)
  100. {
  101.    
  102. }
  103.  
  104. void _VI_FUNC SP2155_SetSpeed (int aperm)
  105. {
  106.    
  107. }
  108.  
  109. void _VI_FUNC SP2155_Scan (int wavel)
  110. {
  111.    
  112. }
  113.  
  114. void _VI_FUNC SP2155_Close (void)
  115. {
  116.   CloseCom (SP2155_Port);
  117. }
  118.  
  119. #ifdef SP2155_MAIN
  120.  
  121. #include <cvirte.h>
  122.  
  123. int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  124.                                            LPSTR lpszCmdLine, int nCmdShow)
  125. {
  126.   int ig,iangstrem;
  127.  
  128.   if (InitCVIRTE (hInstance, 0, 0) == 0) return -1;    /* out of memory */
  129.  
  130.   SP2155_Open (7);
  131.   SP2155_Echo (0);
  132.   SP2155_SetGrating (1);
  133.   ig=SP2155_GetGrating ();
  134.   printf("grating=%d\n",ig);
  135. //  SP2155_Cmd ("?TURRET",0);
  136.  
  137.   SP2155_Close ();
  138.        
  139.   return 0;
  140. }
  141.  
  142. #endif
  143.