Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1. #ifdef _MAIN
  2. #include <cvirte.h>            
  3. #include <userint.h>
  4. #include "mpod_uir.h"
  5.  
  6. #include "netsnmplib.h"
  7. #include "WIENER_SNMP.h"
  8.  
  9.  
  10. static int p1h;
  11. HSNMP mpod;
  12.  
  13. void snmptest(void) {
  14.  
  15.  
  16.   if(!mpod) return;
  17.   printf("-----------------------------------------------------------------\n");
  18.  
  19.   double ret;
  20.   double voltage;
  21.   double vSet=0;
  22.   int channel=2;
  23.   int iret;
  24.   int i, j;
  25.  
  26.   printf("Turning channel %i ON\n", channel);  
  27.   setMainSwitch(mpod, 1);
  28.   Sleep(1000);
  29.   printf(".... Turning channel %i ON\n", channel);
  30.   setChannelSwitch(mpod, channel, 1);
  31.   Sleep(1000);
  32.  
  33.   //Test Channel Status
  34.   iret=getChannelSwitch(mpod, channel);
  35.   printf("Channel Status = %i\n\n", iret);
  36.  
  37.  
  38.  
  39.   //getOutputNumber
  40.   iret=getOutputNumber(mpod);
  41.   printf("getOutputNumber = %i\n\n", iret);
  42.  
  43.   //getOutputGroups
  44.   iret=getOutputGroups(mpod);
  45.   printf("getOutputGroups = %i\n\n", iret);
  46.  
  47.  
  48.  
  49.   //Test Setting and reading output Voltage
  50.   vSet =getOutputVoltage(mpod, channel);
  51.   printf("Output Voltage = %f.  I will now change it to 24.2\n", vSet);
  52.   setOutputVoltage(mpod, channel, 24.2);
  53.   vSet =getOutputVoltage(mpod, channel);
  54.   printf("Output Voltage = %f.  I will now change it to 12.3\n", vSet);
  55.   setOutputVoltage(mpod, channel, 12.3);
  56.   vSet =getOutputVoltage(mpod, channel);
  57.   printf("Output Voltage = %f.\n\n", vSet);
  58.  
  59.   //Test Reading the Sense Measurement
  60.   ret = getOutputSenseMeasurement(mpod, channel);
  61.   printf("Sense Voltage =  %f\n", ret);
  62.   Sleep(1000);
  63.   ret = getOutputSenseMeasurement(mpod, channel);
  64.   printf("Sense Voltage =  %f.  It the channel is ramping it should have changed.\n\n", ret);
  65.  
  66.   //Test Reading the Current
  67.   ret = getCurrentMeasurement(mpod, channel);
  68.   printf("Current Measurement =  %f\n\n", ret);
  69.  
  70.   //Test the Ramp
  71.   ret=getOutputRiseRate(mpod, channel);
  72.   printf("Ramp Rate is %f, Let's make it 46.\n", ret);
  73.   setOutputRiseRate(mpod, channel, 4.6);
  74.   ret=getOutputRiseRate(mpod, channel);
  75.   printf("Ramp Rate is %f, Let's make it 100.\n", ret);
  76.   setOutputRiseRate(mpod, channel, 10.0);
  77.   ret=getOutputRiseRate(mpod, channel);
  78.   printf("Ramp Rate is %f.\n\n", ret);
  79.  
  80.   //Test Channel Status
  81.   iret=getChannelSwitch(mpod, channel);
  82.   printf("Channel Status = %i\n\n", iret);
  83.  
  84.  
  85.  
  86.   getMainSwitch(mpod);
  87.   //setMainSwitch(mpod, 0);
  88.   Sleep(1000);
  89.   if (!getMainSwitch(mpod)) {
  90.     printf("Crate is now Off\n");
  91.   }
  92.  
  93.  
  94.   printf("-----------------------------------------------------------------\n");
  95.  
  96.  
  97. }
  98.  
  99.  
  100. int main (int argc, char *argv[]) {
  101.   if (InitCVIRTE (0, argv, 0) == 0)
  102.     return -1;  // out of memory
  103.   if ((p1h = LoadPanel (0, "mpod_uir.uir", PANEL)) < 0)
  104.     return -1;
  105.  
  106.   if(!SnmpInit()) return;                     // basic init
  107.   mpod = SnmpOpen("178.172.43.94");   // open TCP/IP socket
  108.   SetCtrlVal(p1h,PANEL_MPODONOFF,1-getMainSwitch(mpod));
  109.   DisplayPanel (p1h);
  110.   RunUserInterface ();
  111.   DiscardPanel (p1h);
  112.    SnmpClose(mpod);
  113.   SnmpCleanup();                              // finish
  114.   return 0;
  115. }
  116.  
  117. int CVICALLBACK StartCB (int panel, int control, int event,
  118.                          void *callbackData, int eventData1, int eventData2) {
  119.   switch (event) {
  120.     case EVENT_COMMIT:
  121.       snmptest();
  122.       break;
  123.   }
  124.   return 0;
  125. }
  126.  
  127. int CVICALLBACK StopCB (int panel, int control, int event,
  128.                         void *callbackData, int eventData1, int eventData2) {
  129.   switch (event) {
  130.     case EVENT_COMMIT:
  131.  
  132.       break;
  133.   }
  134.   return 0;
  135. }
  136.  
  137. int CVICALLBACK ExitCB (int panel, int control, int event,
  138.                         void *callbackData, int eventData1, int eventData2) {
  139.   switch (event) {
  140.     case EVENT_COMMIT:
  141.       QuitUserInterface (0);
  142.       break;
  143.   }
  144.   return 0;
  145. }
  146.  
  147.  
  148. int CVICALLBACK MpodOnOffCB (int panel, int control, int event,
  149.                              void *callbackData, int eventData1, int eventData2) {
  150.   int val;
  151.   switch (event) {
  152.     case EVENT_COMMIT:
  153.       GetCtrlVal(panel,control,&val);
  154.       getMainSwitch(mpod);
  155.       setMainSwitch(mpod, 1-val);
  156.       Sleep(100);
  157.       if (!getMainSwitch(mpod)) {
  158.          printf("Crate is now Off\n");
  159.       }  else  {
  160.          printf("Crate is now On\n");
  161.       }
  162.       break;
  163.   }
  164.   return 0;
  165. }
  166.  
  167.  
  168. int CVICALLBACK MpodChannelsOutputVoltageCB (int panel, int control, int event,
  169.                                      void *callbackData, int eventData1, int eventData2) {
  170.   double vset,iset;
  171.   switch (event) {
  172.     case EVENT_COMMIT:
  173.       GetCtrlVal(panel,PANEL_VSET,&vset);
  174.       GetCtrlVal(panel,PANEL_ISET,&iset);
  175.       for( int i = 0; i < 4; i++) {
  176.         int j=i*100;
  177.         for( int k = 0; k < 8; k++) {
  178.           int channel = j+k;
  179.           char *cName= getOutputName(mpod, channel);
  180.           if (!cName) continue;
  181.           if (channel==0) continue;
  182.           printf("%d  Vset=%f Iset=%f \n", channel, vset,iset);
  183.           setOutputVoltage(mpod, channel, vset);
  184.           setOutputCurrent(mpod, channel, iset);
  185.        
  186.         }
  187.       }
  188.       break;
  189.   }
  190.   return 0;
  191. }
  192.  
  193.  
  194.  
  195. int CVICALLBACK MpodChannelsOnOffCB (int panel, int control, int event,
  196.                                      void *callbackData, int eventData1, int eventData2) {
  197.   int val;
  198.   switch (event) {
  199.     case EVENT_COMMIT:
  200.        GetCtrlVal(panel,control,&val);
  201.        val=1-val;
  202.       for( int i = 0; i < 4; i++) {
  203.         int j=i*100;
  204.         for( int k = 0; k < 8; k++) {
  205.           int channel = j+k;
  206.           char *cName= getOutputName(mpod, channel);
  207.           if (!cName) continue;
  208.           if (channel==0) continue;
  209.           int state=getChannelSwitch(mpod, channel);
  210.           if (state!= val) setChannelSwitch(mpod, channel, val);
  211.        
  212.         }
  213.       }
  214.       break;
  215.   }
  216.   return 0;
  217. }
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224. int CVICALLBACK GetStatus (int panel, int control, int event,
  225.                            void *callbackData, int eventData1, int eventData2) {
  226.   switch (event) {
  227.     case EVENT_COMMIT:
  228.        // scan MPOD crate, now 4 loops for MPODmini can be changed to 10 for full size crate
  229.   for( int i = 0; i < 4; i++)
  230.   {
  231.           int j=i*100;
  232.           for( int k = 0; k < 8; k++)
  233.           {
  234.         int channel = j+k;
  235.         char * cName= getOutputName(mpod, channel);
  236.         if (!cName) continue;
  237.        
  238.                     int iret=getChannelSwitch(mpod, channel);
  239.                     double vSet      =getOutputVoltage(mpod, channel);
  240.         double iSet      =getOutputCurrent(mpod, channel);
  241.         double vTerminal =getOutputTerminalMeasurement(mpod, channel);
  242.         double vSense    =getOutputSenseMeasurement(mpod, channel);
  243.         double iMon      =getCurrentMeasurement(mpod, channel);
  244.         double vRpUp     =getOutputRiseRate(mpod, channel);  
  245.         double vRpDown   =getOutputFallRate(mpod, channel);  
  246.                     printf("%3i %s\t[%i]\tVset=%g\tIset=%g\tImon=%g\tVmon=%g\tVterm=%g\tRUp=%g\tRDn=%g\n", channel, cName, iret, vSet, iSet, iMon, vSense, vTerminal, vRpUp, vRpDown);
  247.           }
  248.   }
  249.  
  250.   break;
  251.   }
  252.   return 0;
  253. }
  254. #endif
  255.