Rev 326 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 326 | Rev 357 | ||
|---|---|---|---|
| Line 655... | Line 655... | ||
| 655 | if (sa02Verbose) { |
655 | if (sa02Verbose) { |
| 656 | sa02Printf("Data in the file:%s\n", filename); |
656 | sa02Printf("Data in the file:%s\n", filename); |
| 657 | } |
657 | } |
| 658 | if (gFp) { |
658 | if (gFp) { |
| 659 | fp=gFp; |
659 | fp=gFp; |
| - | 660 | } |
|
| 660 |
|
661 | else { |
| 661 | if (append) { |
662 | if (append) { |
| 662 | fp=fopen(filename,"ab"); |
663 | fp=fopen(filename,"ab"); |
| - | 664 | } |
|
| 663 |
|
665 | else { |
| 664 | fp=fopen(filename,"wb"); |
666 | fp=fopen(filename,"wb"); |
| 665 | } |
667 | } |
| 666 | } |
668 | } |
| 667 | output=1; |
669 | output=1; |
| 668 | // run header |
670 | // run header |
| Line 676... | Line 678... | ||
| 676 | runinfo.ch = ch; |
678 | runinfo.ch = ch; |
| 677 | runinfo.neve= toread; |
679 | runinfo.neve= toread; |
| 678 | runinfo.writemode= towrite; |
680 | runinfo.writemode= towrite; |
| 679 | sa02Printf("RUNINFO x0=%d nx=%d dx=%d\n", runinfo.x0,runinfo.dx,runinfo.nx); |
681 | sa02Printf("RUNINFO x0=%d nx=%d dx=%d\n", runinfo.x0,runinfo.dx,runinfo.nx); |
| 680 | nbtotal+=fwrite(&runinfo, 1,sizeof(runinfo),fp); //gzip |
682 | nbtotal+=fwrite(&runinfo, 1,sizeof(runinfo),fp); //gzip |
| - | 683 | } |
|
| 681 |
|
684 | else { |
| 682 | if (sa02Verbose) { |
685 | if (sa02Verbose) { |
| 683 | sa02Printf("Data are not written to the file!\n"); |
686 | sa02Printf("Data are not written to the file!\n"); |
| 684 | } |
687 | } |
| 685 | } |
688 | } |
| 686 | 689 | ||
| 687 | if (!neve & (towrite || toread) ) { |
690 | if (!neve & (towrite || toread) ) { |
| 688 | neve=1; |
691 | neve=1; |
| 689 | } |
692 | } |
| 690 | 693 | ||
| 691 | 694 | ||
| Line 714... | Line 717... | ||
| 714 | int icfa_visible=0; |
717 | int icfa_visible=0; |
| 715 | int icfa_add=0; |
718 | int icfa_add=0; |
| 716 | GetPanelAttribute (p6h, ATTR_VISIBLE, &icfa_visible); |
719 | GetPanelAttribute (p6h, ATTR_VISIBLE, &icfa_visible); |
| 717 | GetCtrlVal (p6h, MINIRICH_ADD, &icfa_add); |
720 | GetCtrlVal (p6h, MINIRICH_ADD, &icfa_add); |
| 718 | if (icfa_visible) { |
721 | if (icfa_visible) { |
| 719 | icfa_Init(); |
722 | icfa_Init(); |
| 720 | icfa_Histo(); |
723 | icfa_Histo(); |
| 721 | } |
724 | } |
| 722 | /////////////////////////////////////////////////////////////// |
725 | /////////////////////////////////////////////////////////////// |
| 723 | SetCtrlAttribute (p1h, P1_GRAPH2D, ATTR_LABEL_TEXT , title); |
726 | SetCtrlAttribute (p1h, P1_GRAPH2D, ATTR_LABEL_TEXT , title); |
| 724 | H2DInit(h2, "h2d",title, 144*4, 0,1,neve,data0, dstep); |
727 | H2DInit(h2, "h2d",title, 144*4, 0,1,neve,data0, dstep); |
| 725 | H2DSetTitleY(h2,scmd); |
728 | H2DSetTitleY(h2,scmd); |
| 726 | 729 | ||
| 727 | sa02Printf("H2D nx=%d ny=%d i=%d neve=%d\n", H2DGetNbinsX(h2),H2DGetNbinsY(h2), i, neve); |
730 | sa02Printf("H2D nx=%d ny=%d i=%d neve=%d\n", H2DGetNbinsX(h2),H2DGetNbinsY(h2), i, neve); |
| 728 | 731 | ||
| 729 | 732 | ||
| 730 | plot2d(h2,1); |
733 | plot2d(h2,1); |
| 731 | for (i=0; i<neve; i++) { |
734 | for (i=0; i<neve; i++) { |
| 732 | int nb = sizeof(uint32_t); |
735 | int nb = sizeof(uint32_t); |
| 733 | int count=0; |
736 | int count=0; |
| 734 | 737 | ||
| 735 | 738 | ||
| 736 | for (board=0; board<4; board++) { |
739 | for (board=0; board<4; board++) { |
| 737 | 740 | ||
| 738 | switch (towrite) { |
741 | switch (towrite) { |
| 739 | case 1: { |
742 | case 1: { |
| 740 | rdata[count+2]= data; |
743 | rdata[count+2]= data; |
| Line 756... | Line 759... | ||
| 756 | break; |
759 | break; |
| 757 | } |
760 | } |
| 758 | } |
761 | } |
| 759 | if (towrite==3) { |
762 | if (towrite==3) { |
| 760 | SetCtrlVal(p1h,P1_SETVALUE, chip*36+ch ); |
763 | SetCtrlVal(p1h,P1_SETVALUE, chip*36+ch ); |
| - | 764 | } |
|
| 761 |
|
765 | else { |
| 762 | SetCtrlVal(p1h,P1_SETVALUE, data); |
766 | SetCtrlVal(p1h,P1_SETVALUE, data); |
| 763 | } |
767 | } |
| 764 | 768 | ||
| 765 | 769 | ||
| 766 | 770 | ||
| 767 | } |
771 | } |
| 768 | 772 | ||
| 769 | Sa02SetNeve(toread); |
773 | Sa02SetNeve(toread); |
| 770 | sa02Reset(); |
774 | sa02Reset(); |
| 771 | 775 | ||
| 772 | // for ( j=0; j< toread; j++) |
776 | // for ( j=0; j< toread; j++) |
| 773 | { |
777 | { |
| 774 | int eventerror = 0; |
778 | int eventerror = 0; |
| 775 | 779 | ||
| 776 | if ( (count +2 +dsize) >= maxsize) { |
780 | if ( (count +2 +dsize) >= maxsize) { |
| Line 781... | Line 785... | ||
| 781 | } |
785 | } |
| 782 | 786 | ||
| 783 | do { |
787 | do { |
| 784 | if (sendswtrg == 1) Sa02SoftwareTrigger(); |
788 | if (sendswtrg == 1) Sa02SoftwareTrigger(); |
| 785 | nb = sa02Read(mask, &rdata[count+2] ); |
789 | nb = sa02Read(mask, &rdata[count+2] ); |
| - | 790 | } |
|
| 786 |
|
791 | while ( nb==0 && !ctrl_c); |
| 787 | if (nb==0) sa02Printf("nb==0 LINE=%d\n",__LINE__); |
792 | if (nb==0) sa02Printf("nb==0 LINE=%d\n",__LINE__); |
| 788 | 793 | ||
| 789 | if (testfixeddata && nb>0) { |
794 | if (testfixeddata && nb>0) { |
| 790 | int len = nb / sizeof(uint32_t); |
795 | int len = nb / sizeof(uint32_t); |
| 791 | for (ir=0; ir<len; ir++) { |
796 | for (ir=0; ir<len; ir++) { |
| Line 800... | Line 805... | ||
| 800 | readerror++; |
805 | readerror++; |
| 801 | if (readerror==3) { |
806 | if (readerror==3) { |
| 802 | ctrl_c = 1; |
807 | ctrl_c = 1; |
| 803 | system("date >> firmware.lock"); |
808 | system("date >> firmware.lock"); |
| 804 | } |
809 | } |
| - | 810 | } |
|
| 805 |
|
811 | else { |
| 806 | readerror= 0; |
812 | readerror= 0; |
| 807 | } |
813 | } |
| 808 | 814 | ||
| 809 | for (ich=0; ich<144*4; ich++) { |
815 | for (ich=0; ich<144*4; ich++) { |
| 810 | int xch = (143 - ich%144) + ich/144*144; |
816 | int xch = (143 - ich%144) + ich/144*144; |
| 811 | H2DFillBin(h2, xch,i,rdata[count+2+ich]); |
817 | H2DFillBin(h2, xch,i,rdata[count+2+ich]); |
| 812 | } |
818 | } |
| 813 | 819 | ||
| 814 | if (icfa_visible) icfa_Event(&rdata[count+2], icfa_add ); |
820 | if (icfa_visible) icfa_Event(&rdata[count+2], icfa_add ); |
| 815 | 821 | ||
| 816 | /* |
822 | /* |
| 817 | for (ich=0; ich<144; ich++) { |
823 | for (ich=0; ich<144; ich++) { |
| 818 | // id=(35-ich/4)+gBoardNumber*36; |
824 | // id=(35-ich/4)+gBoardNumber*36; |
| 819 | // shft=(ich%4)*8; |
825 | // shft=(ich%4)*8; |
| 820 | id=(17-ich/8)+sa02BoardNumber*18; |
826 | id=(17-ich/8)+sa02BoardNumber*18; |
| Line 826... | Line 832... | ||
| 826 | } |
832 | } |
| 827 | if (sa02Verbose>2) { |
833 | if (sa02Verbose>2) { |
| 828 | sa02Printf("%02X ",(rdata[count+2+id]>> shft)& 0xF ); |
834 | sa02Printf("%02X ",(rdata[count+2+id]>> shft)& 0xF ); |
| 829 | // sa02Printf("%02X ",(rdata[count+2+id]>> shft)& 0xFF ); |
835 | // sa02Printf("%02X ",(rdata[count+2+id]>> shft)& 0xFF ); |
| 830 | } |
836 | } |
| 831 | } |
837 | } |
| 832 | */ |
838 | */ |
| 833 | 839 | ||
| 834 | if (sa02Verbose>2) sa02Printf("\n" ); |
840 | if (sa02Verbose>2) sa02Printf("\n" ); |
| 835 | if (nb>=0) count+=module_header(0x3,&rdata[count],nb/sizeof(uint32_t)); // recid 0x3 |
841 | if (nb>=0) count+=module_header(0x3,&rdata[count],nb/sizeof(uint32_t)); // recid 0x3 |
| 836 | 842 | ||
| Line 850... | Line 856... | ||
| 850 | sa02Printf("%d events in %2.2f min (%d s) TIMEOUTS=%d %s",ncount, (double)(t-tstart)/60.,t-tstart, nerrors, ctime(&t)); |
856 | sa02Printf("%d events in %2.2f min (%d s) TIMEOUTS=%d %s",ncount, (double)(t-tstart)/60.,t-tstart, nerrors, ctime(&t)); |
| 851 | } |
857 | } |
| 852 | if (aborttimeout && (t-tstart)>aborttimeout) { |
858 | if (aborttimeout && (t-tstart)>aborttimeout) { |
| 853 | sa02Printf("Abort timeout reached ....\n"); |
859 | sa02Printf("Abort timeout reached ....\n"); |
| 854 | ctrl_c=1; |
860 | ctrl_c=1; |
| 855 | break; |
861 | break; |
| 856 | } |
862 | } |
| 857 | told=t; |
863 | told=t; |
| 858 | if (nb==0) { |
864 | if (nb==0) { |
| 859 | nerrors++; |
865 | nerrors++; |
| 860 | //j--; /// kako potem pride cez zeljeno stevil ozadetkov? |
866 | //j--; /// kako potem pride cez zeljeno stevil ozadetkov? |
| 861 | } else { |
- | |
| 862 | ncount++; |
- | |
| 863 | } |
867 | } |
| - | 868 | else { |
|
| - | 869 | ncount++; |
|
| - | 870 | } |
|
| 864 | } |
871 | } |
| 865 | if (externalcmd) { |
872 | if (externalcmd) { |
| 866 | char ecmd[256]; |
873 | char ecmd[256]; |
| 867 | sprintf(ecmd,"%s %u %u %u %u",externalcommand,(unsigned int) tstart,data, rdata[2], rdata[3]); |
874 | sprintf(ecmd,"%s %u %u %u %u",externalcommand,(unsigned int) tstart,data, rdata[2], rdata[3]); |
| 868 | if (sa02Verbose) { |
875 | if (sa02Verbose) { |
| 869 | sa02Printf("Executing external command %s\n",ecmd); |
876 | sa02Printf("Executing external command %s\n",ecmd); |
| 870 | } |
877 | } |
| 871 | system(ecmd); |
878 | system(ecmd); |
| 872 | } |
879 | } |
| 873 | 880 | ||
| 874 | if (output && Random(0,1)<fraction) { |
881 | if (output && Random(0,1)<fraction) { |
| 875 | evtrec.id = EVTREC_ID; |
882 | evtrec.id = EVTREC_ID; |
| 876 | evtrec.len=count*sizeof(uint32_t)+ sizeof(evtrec); |
883 | evtrec.len=count*sizeof(uint32_t)+ sizeof(evtrec); |
| 877 | evtrec.time= (uint32_t) time(NULL); |
884 | evtrec.time= (uint32_t) time(NULL); |
| Line 882... | Line 889... | ||
| 882 | } |
889 | } |
| 883 | if (nb!= (int) evtrec.len) { |
890 | if (nb!= (int) evtrec.len) { |
| 884 | sa02Printf("Error writing! %d!=%d\n",nb,evtrec.len); |
891 | sa02Printf("Error writing! %d!=%d\n",nb,evtrec.len); |
| 885 | } |
892 | } |
| 886 | nbtotal+= nb; |
893 | nbtotal+= nb; |
| 887 | } |
894 | } |
| 888 | 895 | ||
| 889 | if (sa02Verbose==1) { |
896 | if (sa02Verbose==1) { |
| 890 | sa02Printf("[%d/%d] %u \t", i,count, (unsigned int) time(NULL)); |
897 | sa02Printf("[%d/%d] %u \t", i,count, (unsigned int) time(NULL)); |
| 891 | PrintData(rdata,count); |
898 | PrintData(rdata,count); |
| 892 | } |
899 | } |
| Line 895... | Line 902... | ||
| 895 | ch += dstep; |
902 | ch += dstep; |
| 896 | if (ch>35) { |
903 | if (ch>35) { |
| 897 | ch-=36; |
904 | ch-=36; |
| 898 | chip++; |
905 | chip++; |
| 899 | } |
906 | } |
| - | 907 | } |
|
| 900 |
|
908 | else { |
| 901 | data += dstep; |
909 | data += dstep; |
| 902 | } |
910 | } |
| 903 | if (ctrl_c ) { |
911 | if (ctrl_c ) { |
| 904 | if (!testfixeddata) { |
912 | if (!testfixeddata) { |
| 905 | sa02Printf("Ctrl+C Program interrupted ....\n"); |
913 | sa02Printf("Ctrl+C Program interrupted ....\n"); |
| 906 | } |
914 | } |
| 907 | break; |
915 | break; |
| 908 | } |
916 | } |
| 909 | } |
917 | } |
| 910 | plot2d(h2, i-1); |
918 | plot2d(h2, i-1); |
| 911 | if (icfa_visible) icfa_Draw(); |
919 | if (icfa_visible) icfa_Draw(); |
| 912 | 920 | ||
| 913 | if (output) { |
921 | if (output) { |
| 914 | sprintf(scmd,"channel;daqtime=%f", Timer()-t0 ); |
922 | sprintf(scmd,"channel;daqtime=%f", Timer()-t0 ); |
| 915 | H2DSetTitleX(h2,scmd); |
923 | H2DSetTitleX(h2,scmd); |
| 916 | H2DWrite2File(h2,fp); |
924 | H2DWrite2File(h2,fp); |
| 917 | if (!gFp) { |
925 | if (!gFp) { |
| 918 | fclose(fp); |
926 | fclose(fp); |
| 919 | } |
927 | } |
| 920 | } |
928 | } |
| 921 | if (sa02Verbose>1) sa02Printf("%d bytes written to file %s\n", nbtotal, filename); |
929 | if (sa02Verbose>1) sa02Printf("%d bytes written to file %s\n", nbtotal, filename); |
| 922 | time(&t); |
930 | time(&t); |
| 923 | if (toread && !testfixeddata) sa02Printf("%d events in %2.2f min (%f s) TIMEOUTS=%d %s",ncount, (double)(Timer()-t0)/60.,Timer()-t0, nerrors, ctime(&t)); |
931 | if (toread && !testfixeddata) sa02Printf("%d events in %2.2f min (%f s) TIMEOUTS=%d %s",ncount, (double)(Timer()-t0)/60.,Timer()-t0, nerrors, ctime(&t)); |
| 924 | free(rdata); |
932 | free(rdata); |
| 925 | 933 | ||
| 926 | return 0; |
934 | return 0; |
| 927 | } |
935 | } |
| 928 | 936 | ||
| 929 | int CVICALLBACK quit (int panel, int event, void *callbackData, |
937 | int CVICALLBACK quit (int panel, int event, void *callbackData, |
| 930 | int eventData1, int eventData2) { |
938 | int eventData1, int eventData2) { |
| 931 | switch (event) { |
939 | switch (event) { |
| 932 | case EVENT_CLOSE: |
940 | case EVENT_CLOSE: |
| 933 | // Stop timer callbacks |
941 | // Stop timer callbacks |
| Line 945... | Line 953... | ||
| 945 | quit(0,0,NULL,0,0); |
953 | quit(0,0,NULL,0,0); |
| 946 | exit(0); |
954 | exit(0); |
| 947 | } |
955 | } |
| 948 | return 0; |
956 | return 0; |
| 949 | } |
957 | } |
| 950 | 958 | ||
| 951 | int SetParametersFromFile( const char *fname) { |
959 | int SetParametersFromFile( const char *fname) { |
| 952 | uint32_t gdata; |
960 | uint32_t gdata; |
| 953 | uint32_t cdata; |
961 | uint32_t cdata; |
| 954 | 962 | ||
| 955 | sa02AsicGlobalRegister *greg = (sa02AsicGlobalRegister *) &gdata ; |
963 | sa02AsicGlobalRegister *greg = (sa02AsicGlobalRegister *) &gdata ; |
| Line 976... | Line 984... | ||
| 976 | sa02Printf("Error! Cannot open file %s\n",fname); |
984 | sa02Printf("Error! Cannot open file %s\n",fname); |
| 977 | return -1; |
985 | return -1; |
| 978 | } |
986 | } |
| 979 | for (i=0; i<8*144*4; i++) { |
987 | for (i=0; i<8*144*4; i++) { |
| 980 | cregdata[i]=0; |
988 | cregdata[i]=0; |
| 981 | } |
989 | } |
| 982 | for (i=0; i<7*4*4; i++) { |
990 | for (i=0; i<7*4*4; i++) { |
| 983 | gregdata[i]=0; |
991 | gregdata[i]=0; |
| 984 | } |
992 | } |
| 985 | gdata=0; |
993 | gdata=0; |
| 986 | cdata=0; |
994 | cdata=0; |
| Line 1001... | Line 1009... | ||
| 1001 | if (strcmp(cmd,"MUXASIC")==0) { |
1009 | if (strcmp(cmd,"MUXASIC")==0) { |
| 1002 | asic = sa02MuxMap(asic); |
1010 | asic = sa02MuxMap(asic); |
| 1003 | } |
1011 | } |
| 1004 | switch (nb) { |
1012 | switch (nb) { |
| 1005 | case 1: { |
1013 | case 1: { |
| 1006 | if ( sa02code ) { |
1014 | if ( sa02code ) { |
| 1007 | SetCtrlVal(p3h,P3_FPGAPAR,line); |
1015 | SetCtrlVal(p3h,P3_FPGAPAR,line); |
| 1008 | 1016 | ||
| 1009 | break; |
1017 | break; |
| 1010 | } |
1018 | } |
| 1011 | break; |
1019 | break; |
| 1012 | } |
1020 | } |
| 1013 | case 2: { |
1021 | case 2: { |
| 1014 | if ( sa02code ) { |
1022 | if ( sa02code ) { |
| 1015 | SetCtrlVal(p3h,P3_FPGAPAR,line); |
1023 | SetCtrlVal(p3h,P3_FPGAPAR,line); |
| 1016 | 1024 | ||
| 1017 | break; |
1025 | break; |
| 1018 | } |
1026 | } |
| 1019 | if (strcmp(cmd,"param_board")==0) { |
1027 | if (strcmp(cmd,"param_board")==0) { |
| 1020 | board= asic; |
1028 | board= asic; |
| 1021 | } |
1029 | } |
| 1022 | if (strcmp(cmd,"load_global")==0) { |
1030 | if (strcmp(cmd,"load_global")==0) { |
| 1023 | row= asic+1; |
1031 | row= asic+1; |
| Line 1036... | Line 1044... | ||
| 1036 | gregdata[(board*4+asic)*7+2] = greg->shapingtime; |
1044 | gregdata[(board*4+asic)*7+2] = greg->shapingtime; |
| 1037 | gregdata[(board*4+asic)*7+3] = greg->comparator; |
1045 | gregdata[(board*4+asic)*7+3] = greg->comparator; |
| 1038 | gregdata[(board*4+asic)*7+4] = greg->vrdrive; |
1046 | gregdata[(board*4+asic)*7+4] = greg->vrdrive; |
| 1039 | gregdata[(board*4+asic)*7+5] = greg->monitor; |
1047 | gregdata[(board*4+asic)*7+5] = greg->monitor; |
| 1040 | gregdata[(board*4+asic)*7+6] = greg->id; |
1048 | gregdata[(board*4+asic)*7+6] = greg->id; |
| 1041 | 1049 | ||
| 1042 | break; |
1050 | break; |
| 1043 | } |
1051 | } |
| 1044 | break; |
1052 | break; |
| 1045 | } |
1053 | } |
| 1046 | case 3: { |
1054 | case 3: { |
| 1047 | if ( sa02code) { |
1055 | if ( sa02code) { |
| 1048 | SetCtrlVal(p3h,P3_FPGAPAR,line); |
1056 | SetCtrlVal(p3h,P3_FPGAPAR,line); |
| Line 1068... | Line 1076... | ||
| 1068 | greg->comparator = gval; |
1076 | greg->comparator = gval; |
| 1069 | break; |
1077 | break; |
| 1070 | } |
1078 | } |
| 1071 | if (strcmp(cmd,"vrdrive")==0) { |
1079 | if (strcmp(cmd,"vrdrive")==0) { |
| 1072 | greg->vrdrive = gval; |
1080 | greg->vrdrive = gval; |
| 1073 | break; |
1081 | break; |
| 1074 | } |
1082 | } |
| 1075 | if (strcmp(cmd,"monitor")==0) { |
1083 | if (strcmp(cmd,"monitor")==0) { |
| 1076 | greg->monitor = gval; |
1084 | greg->monitor = gval; |
| 1077 | break; |
1085 | break; |
| 1078 | } |
1086 | } |
| 1079 | if (strcmp(cmd,"load_ch")==0) { |
1087 | if (strcmp(cmd,"load_ch")==0) { |
| Line 1100... | Line 1108... | ||
| 1100 | cdata=0; |
1108 | cdata=0; |
| 1101 | break; |
1109 | break; |
| 1102 | } |
1110 | } |
| 1103 | if (strcmp(cmd,"select")==0) { |
1111 | if (strcmp(cmd,"select")==0) { |
| 1104 | sa02Printf ("%s not implemeted yet\n", cmd); |
1112 | sa02Printf ("%s not implemeted yet\n", cmd); |
| 1105 | break; |
1113 | break; |
| 1106 | } |
1114 | } |
| 1107 | break; |
1115 | break; |
| 1108 | } |
1116 | } |
| 1109 | case 4: { |
1117 | case 4: { |
| 1110 | if (strcmp(cmd,"param_ch")==0) { |
1118 | if (strcmp(cmd,"param_ch")==0) { |
| 1111 | cdata = 0; |
1119 | cdata = 0; |
| 1112 | break; |
1120 | break; |
| 1113 | } |
1121 | } |
| 1114 | if (strcmp(cmd,"decaytime")==0) { |
1122 | if (strcmp(cmd,"decaytime")==0) { |
| 1115 | creg->decaytime = cval; |
1123 | creg->decaytime = cval; |
| 1116 | break; |
1124 | break; |
| 1117 | } |
1125 | } |
| 1118 | if (strcmp(cmd,"offset")==0) { |
1126 | if (strcmp(cmd,"offset")==0) { |
| 1119 | creg->offset = cval; |
1127 | creg->offset = cval; |
| 1120 | break; |
1128 | break; |
| 1121 | } |
1129 | } |
| 1122 | if (strcmp(cmd,"fineadj_unipol")==0) { |
1130 | if (strcmp(cmd,"fineadj_unipol")==0) { |
| 1123 | creg->fineadj_unipol = cval; |
1131 | creg->fineadj_unipol = cval; |
| 1124 | break; |
1132 | break; |
| 1125 | } |
1133 | } |
| 1126 | if (strcmp(cmd,"fineadj_diff")==0) { |
1134 | if (strcmp(cmd,"fineadj_diff")==0) { |
| 1127 | creg->fineadj_diff = cval; |
1135 | creg->fineadj_diff = cval; |
| 1128 | break; |
1136 | break; |
| 1129 | } |
1137 | } |
| 1130 | if (strcmp(cmd,"tpenb")==0) { |
1138 | if (strcmp(cmd,"tpenb")==0) { |
| 1131 | creg->tpenb = cval; |
1139 | creg->tpenb = cval; |
| 1132 | break; |
1140 | break; |
| 1133 | } |
1141 | } |
| Line 1162... | Line 1170... | ||
| 1162 | case MENU_OPERATIO_LASER: |
1170 | case MENU_OPERATIO_LASER: |
| 1163 | DisplayPanel(p5h); |
1171 | DisplayPanel(p5h); |
| 1164 | break; |
1172 | break; |
| 1165 | case MENU_MINIRICH: |
1173 | case MENU_MINIRICH: |
| 1166 | DisplayPanel(p6h); |
1174 | DisplayPanel(p6h); |
| 1167 | break; |
1175 | break; |
| 1168 | case MENU_OPERATIO_EXIT : |
1176 | case MENU_OPERATIO_EXIT : |
| 1169 | quit(0,0,NULL,0,0); |
1177 | quit(0,0,NULL,0,0); |
| 1170 | exit(0); |
1178 | exit(0); |
| 1171 | //loop_on=0; |
1179 | //loop_on=0; |
| 1172 | break; |
1180 | break; |
| Line 1210... | Line 1218... | ||
| 1210 | told=t; |
1218 | told=t; |
| 1211 | for ( j=0; j< neve; j++) { |
1219 | for ( j=0; j< neve; j++) { |
| 1212 | do { |
1220 | do { |
| 1213 | if (sendswtrg==1) Sa02SoftwareTrigger(); |
1221 | if (sendswtrg==1) Sa02SoftwareTrigger(); |
| 1214 | nb = sa02Read(mask, data ); |
1222 | nb = sa02Read(mask, data ); |
| - | 1223 | } |
|
| 1215 |
|
1224 | while ( nb==0 && !ctrl_c); |
| 1216 | if (nb==0) sa02Printf("nb==0 LINE=%d\n",__LINE__); |
1225 | if (nb==0) sa02Printf("nb==0 LINE=%d\n",__LINE__); |
| 1217 | 1226 | ||
| 1218 | if (ctrl_c==1) break; |
1227 | if (ctrl_c==1) break; |
| 1219 | 1228 | ||
| 1220 | for (ch=0; ch<144*4; ch++) { |
1229 | for (ch=0; ch<144*4; ch++) { |
| Line 1253... | Line 1262... | ||
| 1253 | GetCtrlVal(p1h,P1_PLOTEACHEVENT, &ploteachevent); |
1262 | GetCtrlVal(p1h,P1_PLOTEACHEVENT, &ploteachevent); |
| 1254 | SetCtrlVal(p1h,P1_CUREVE, j); |
1263 | SetCtrlVal(p1h,P1_CUREVE, j); |
| 1255 | ProcessSystemEvents (); |
1264 | ProcessSystemEvents (); |
| 1256 | ProcessSystemEvents (); |
1265 | ProcessSystemEvents (); |
| 1257 | } |
1266 | } |
| 1258 | 1267 | ||
| 1259 | told=t; |
1268 | told=t; |
| 1260 | 1269 | ||
| 1261 | } |
1270 | } |
| 1262 | 1271 | ||
| 1263 | plot2d(h2, nbit); |
1272 | plot2d(h2, nbit); |
| 1264 | SetCtrlVal(p1h,P1_CUREVE, j); |
1273 | SetCtrlVal(p1h,P1_CUREVE, j); |
| 1265 | 1274 | ||
| 1266 | return 0; |
1275 | return 0; |
| 1267 | } |
1276 | } |
| 1268 | 1277 | ||
| 1269 | int CVICALLBACK LoadParameters (int panel, int control, int event, |
1278 | int CVICALLBACK LoadParameters (int panel, int control, int event, |
| 1270 | void *callbackData, int eventData1, int eventData2) { |
1279 | void *callbackData, int eventData1, int eventData2) { |
| 1271 | char fname[0xFF]; |
1280 | char fname[0xFF]; |
| 1272 | uint16_t mask; |
1281 | uint16_t mask; |
| 1273 | switch (event) { |
1282 | switch (event) { |
| 1274 | case EVENT_COMMIT: |
1283 | case EVENT_COMMIT: |
| 1275 | mask=GetConnectedFebMask(); |
1284 | mask=GetConnectedFebMask(); |
| 1276 | sa02Printf("LoadParameters 0x%0x\n", mask); |
1285 | sa02Printf("LoadParameters 0x%0x\n", mask); |
| 1277 | GetCtrlVal(p3h, P3_INPUTFILE, fname); |
1286 | GetCtrlVal(p3h, P3_INPUTFILE, fname); |
| 1278 | GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
1287 | GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
| Line 1561... | Line 1570... | ||
| 1561 | SetCtrlVal(p1h,P1_SETSINGLEVALUE,k); |
1570 | SetCtrlVal(p1h,P1_SETSINGLEVALUE,k); |
| 1562 | SetCtrlVal(p1h,P1_CUREVE,k); |
1571 | SetCtrlVal(p1h,P1_CUREVE,k); |
| 1563 | retval=sa02Cmd(board, FEB_VTH1 , k , chip, channel ,1, response); |
1572 | retval=sa02Cmd(board, FEB_VTH1 , k , chip, channel ,1, response); |
| 1564 | val=sa02Cmd(board, FEB_ADC_READ, data, chip, channel ,1,response); |
1573 | val=sa02Cmd(board, FEB_ADC_READ, data, chip, channel ,1,response); |
| 1565 | if (sa02BoardType>2) |
1574 | if (sa02BoardType>2) |
| 1566 | doubleval = |
1575 | doubleval = sa02adc2Vm(val); |
| 1567 | else |
1576 | else |
| - | 1577 | doubleval = sa02adc2V(val); |
|
| - | 1578 | // doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3; |
|
| - | 1579 | // else |
|
| 1568 |
|
1580 | // doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| 1569 | - | ||
| 1570 | - | ||
| 1571 | H1DFillBin(h1+board, k, doubleval); |
1581 | H1DFillBin(h1+board, k, doubleval); |
| 1572 | if (t!=told || k==kmax-1 ||k==0 ) { |
1582 | if (t!=told || k==kmax-1 ||k==0 ) { |
| 1573 | H1DDraw(h1+board,p1h, P1_GRAPH, &phandle[board]); |
1583 | H1DDraw(h1+board,p1h, P1_GRAPH, &phandle[board]); |
| 1574 | sa02Printf("[%d] set VTH1=%d ADC(VTH1)= %6.3f V\n",board, k, doubleval); |
1584 | sa02Printf("[%d] set VTH1=%d ADC(VTH1)= %6.3f V\n",board, k, doubleval); |
| 1575 | SetCtrlVal(p1h,P1_CUREVE, k); |
1585 | SetCtrlVal(p1h,P1_CUREVE, k); |
| Line 1659... | Line 1669... | ||
| 1659 | } |
1669 | } |
| 1660 | } |
1670 | } |
| 1661 | switch (cmd & (~ FEB_RO)) { |
1671 | switch (cmd & (~ FEB_RO)) { |
| 1662 | case FEB_ADC_READ: |
1672 | case FEB_ADC_READ: |
| 1663 | case FEB_ADC_RESET: |
1673 | case FEB_ADC_RESET: |
| - | 1674 | doubleval = sa02adc2V(val); |
|
| 1664 |
|
1675 | // doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| 1665 | sa02Printf("ADC %f, 0x%08x\n", doubleval, val ) ; |
1676 | sa02Printf("ADC %f, 0x%08x\n", doubleval, val ) ; |
| 1666 | break; |
1677 | break; |
| 1667 | case FEB_TMON1: |
1678 | case FEB_TMON1: |
| 1668 | case FEB_TMON0: |
1679 | case FEB_TMON0: |
| 1669 | doubleval = ( (val >>2 ) & 0xFFF ) * 0.0625; |
1680 | doubleval = ( (val >>2 ) & 0xFFF ) * 0.0625; |
| Line 1680... | Line 1691... | ||
| 1680 | else |
1691 | else |
| 1681 | val=0x30; |
1692 | val=0x30; |
| 1682 | val=sa02Cmd(board, FEB_MUX, val, 0, 0 ,1,response); |
1693 | val=sa02Cmd(board, FEB_MUX, val, 0, 0 ,1,response); |
| 1683 | val=sa02Cmd(board, FEB_ADC_READ, 0, 0, 0, 1,response); |
1694 | val=sa02Cmd(board, FEB_ADC_READ, 0, 0, 0, 1,response); |
| 1684 | if (sa02BoardType>2) |
1695 | if (sa02BoardType>2) |
| - | 1696 | doubleval = sa02adc2Vm(val); |
|
| 1685 |
|
1697 | // doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3; |
| 1686 | else |
1698 | else |
| - | 1699 | doubleval = sa02adc2V(val); |
|
| 1687 |
|
1700 | // doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| 1688 | sa02Printf("%5d %6.3f\n",data, doubleval); |
1701 | sa02Printf("%5d %6.3f\n",data, doubleval); |
| 1689 | break; |
1702 | break; |
| 1690 | case SA0x_ASIC0_GREG: |
1703 | case SA0x_ASIC0_GREG: |
| 1691 | if (cmd & FEB_RO) { |
1704 | if (cmd & FEB_RO) { |
| 1692 | sa02PrintGREG(&val,"Returned GREG data->"); |
1705 | sa02PrintGREG(&val,"Returned GREG data->"); |
| 1693 | } |
1706 | } |
| 1694 | break; |
1707 | break; |
| 1695 | case SA0x_ASIC0_CREG: |
1708 | case SA0x_ASIC0_CREG: |
| 1696 | if (cmd & FEB_RO) { |
1709 | if (cmd & FEB_RO) { |
| Line 1806... | Line 1819... | ||
| 1806 | id= P1_GRAPHY; |
1819 | id= P1_GRAPHY; |
| 1807 | sprintf(name,"Y"); |
1820 | sprintf(name,"Y"); |
| 1808 | break; |
1821 | break; |
| 1809 | } |
1822 | } |
| 1810 | h2=0; |
1823 | h2=0; |
| - | 1824 | } |
|
| 1811 |
|
1825 | else { |
| 1812 | switch (control) { |
1826 | switch (control) { |
| 1813 | case P2_PRINTXY: |
1827 | case P2_PRINTXY: |
| 1814 | id= P2_GRAPH_1; |
1828 | id= P2_GRAPH_1; |
| 1815 | sprintf(name,"XY"); |
1829 | sprintf(name,"XY"); |
| 1816 | break; |
1830 | break; |
| 1817 | } |
1831 | } |
| 1818 | h2=1; |
1832 | h2=1; |
| 1819 | } |
1833 | } |
| 1820 | GetSystemDate (&month,&day ,&year ); |
1834 | GetSystemDate (&month,&day ,&year ); |
| 1821 | GetSystemTime(&hours, &minutes, &seconds); |
1835 | GetSystemTime(&hours, &minutes, &seconds); |
| 1822 | if (id>=0) { |
1836 | if (id>=0) { |
| 1823 | if( ( (panel == p1h)&&(control == P1_PRINT2D) ) || ((panel == p2h)&&(control == P2_GRAPH_1))) { |
1837 | if( ( (panel == p1h)&&(control == P1_PRINT2D) ) || ((panel == p2h)&&(control == P2_GRAPH_1))) { |
| 1824 | sprintf(dfile ,"data/%d_%d_%d_%d_%d_%s.th2d",year,month,day,hours,minutes, name ); |
1838 | sprintf(dfile ,"data/%d_%d_%d_%d_%d_%s.th2d",year,month,day,hours,minutes, name ); |
| 1825 | H2DWrite(h2,dfile,"wb"); |
1839 | H2DWrite(h2,dfile,"wb"); |
| 1826 | sa02Printf("sizeof H2D %d \n",sizeof(H2D)); |
1840 | sa02Printf("sizeof H2D %d \n",sizeof(H2D)); |
| 1827 | sa02Printf("H2D image saved as %s\n", dfile); |
1841 | sa02Printf("H2D image saved as %s\n", dfile); |
| 1828 | sprintf(name ,"C:\\root\\bin\\root.exe ..\\macros\\H2Dload.cxx(\\\"%s\\\")", dfile); |
1842 | sprintf(name ,"C:\\root\\bin\\root.exe ..\\macros\\H2Dload.cxx(\\\"%s\\\")", dfile); |
| 1829 | LaunchExecutable(name); |
1843 | LaunchExecutable(name); |
| - | 1844 | } |
|
| 1830 |
|
1845 | else { |
| 1831 | sprintf(dfile ,"data/%d_%d_%d_%d_%d_%s.bmp",year,month,day,hours,minutes, name ); |
1846 | sprintf(dfile ,"data/%d_%d_%d_%d_%d_%s.bmp",year,month,day,hours,minutes, name ); |
| 1832 | SaveCtrlDisplayToFile (panel,id, 0, -1, -1, dfile); |
1847 | SaveCtrlDisplayToFile (panel,id, 0, -1, -1, dfile); |
| 1833 | sa02Printf("bmp image saved as %s\n", dfile); |
1848 | sa02Printf("bmp image saved as %s\n", dfile); |
| 1834 | } |
1849 | } |
| 1835 | } |
1850 | } |
| Line 1955... | Line 1970... | ||
| 1955 | 1970 | ||
| 1956 | 1971 | ||
| 1957 | GetCtrlVal(panel,ctrlID, &ch); |
1972 | GetCtrlVal(panel,ctrlID, &ch); |
| 1958 | if (ch) { |
1973 | if (ch) { |
| 1959 | H3DDrawSliceXY(100+board,ch-1,panel,graph, plot); |
1974 | H3DDrawSliceXY(100+board,ch-1,panel,graph, plot); |
| - | 1975 | } |
|
| 1960 |
|
1976 | else { |
| 1961 | H2DDraw(100+board,panel,graph, plot); |
1977 | H2DDraw(100+board,panel,graph, plot); |
| 1962 | } |
1978 | } |
| 1963 | } |
1979 | } |
| 1964 | break; |
1980 | break; |
| 1965 | } |
1981 | } |
| Line 1988... | Line 2004... | ||
| 1988 | monrec.status[ii] = buf[0]; //status |
2004 | monrec.status[ii] = buf[0]; //status |
| 1989 | monrec.vmon[ii] = buf[1]*1000;//zapisano v mV |
2005 | monrec.vmon[ii] = buf[1]*1000;//zapisano v mV |
| 1990 | monrec.imon[ii] = buf[2]*1000;//zapisano v nA |
2006 | monrec.imon[ii] = buf[2]*1000;//zapisano v nA |
| 1991 | monrec.vset[ii] = buf[3]*1000;//zapisano v mV |
2007 | monrec.vset[ii] = buf[3]*1000;//zapisano v mV |
| 1992 | monrec.iset[ii] = buf[4]*1000;//zapisano v nA |
2008 | monrec.iset[ii] = buf[4]*1000;//zapisano v nA |
| - | 2009 | } |
|
| 1993 |
|
2010 | else { |
| 1994 | buf[0]=(unsigned short) (channels[ii]<<8) | ReadStatus; |
2011 | buf[0]=(unsigned short) (channels[ii]<<8) | ReadStatus; |
| 1995 | if (gCAEN_V288) { |
2012 | if (gCAEN_V288) { |
| 1996 | V288_Send(0,SYS403mid,1,buf); |
2013 | V288_Send(0,SYS403mid,1,buf); |
| 1997 | retval=V288_Receive(0,255,buf); |
2014 | retval=V288_Receive(0,255,buf); |
| 1998 | } |
2015 | } |
| Line 2006... | Line 2023... | ||
| 2006 | V288_Send(0,SYS403mid,1,buf); |
2023 | V288_Send(0,SYS403mid,1,buf); |
| 2007 | retval=V288_Receive(0,255,buf); |
2024 | retval=V288_Receive(0,255,buf); |
| 2008 | } |
2025 | } |
| 2009 | vset[ii] = monrec.vset[ii] = buf[7]*10;//zapisano v mV |
2026 | vset[ii] = monrec.vset[ii] = buf[7]*10;//zapisano v mV |
| 2010 | iset[ii] = monrec.iset[ii] = buf[10]*10;//zapisano v nA |
2027 | iset[ii] = monrec.iset[ii] = buf[10]*10;//zapisano v nA |
| 2011 | } |
2028 | } |
| 2012 | monrec.vset[ii] = vset[ii];//zapisano v mV |
2029 | monrec.vset[ii] = vset[ii];//zapisano v mV |
| 2013 | monrec.iset[ii] = iset[ii];//zapisano v nA |
2030 | monrec.iset[ii] = iset[ii];//zapisano v nA |
| 2014 | } |
2031 | } |
| 2015 | //sa02Printf("%04x \t %d \t %d \t %d \t %d *\n",monrec.status[ii],monrec.vmon[ii],monrec.vset[ii],monrec.imon[ii],monrec.iset[ii]); |
2032 | //sa02Printf("%04x \t %d \t %d \t %d \t %d *\n",monrec.status[ii],monrec.vmon[ii],monrec.vset[ii],monrec.imon[ii],monrec.iset[ii]); |
| 2016 | } |
2033 | } |
| Line 2069... | Line 2086... | ||
| 2069 | 2086 | ||
| 2070 | SetCtrlAttribute (p2h, P2_DAQ, ATTR_DIMMED, 1); |
2087 | SetCtrlAttribute (p2h, P2_DAQ, ATTR_DIMMED, 1); |
| 2071 | ctrl_c=0; |
2088 | ctrl_c=0; |
| 2072 | 2089 | ||
| 2073 | GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
2090 | GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
| 2074 | 2091 | ||
| 2075 | GetCtrlVal (p1h, P1_SERIAL_1, serial[0]); |
2092 | GetCtrlVal (p1h, P1_SERIAL_1, serial[0]); |
| 2076 | GetCtrlVal (p1h, P1_SERIAL_2, serial[1]); |
2093 | GetCtrlVal (p1h, P1_SERIAL_2, serial[1]); |
| 2077 | GetCtrlVal (p1h, P1_SERIAL_3, serial[2]); |
2094 | GetCtrlVal (p1h, P1_SERIAL_3, serial[2]); |
| 2078 | GetCtrlVal (p1h, P1_SERIAL_4, serial[3]); |
2095 | GetCtrlVal (p1h, P1_SERIAL_4, serial[3]); |
| 2079 | 2096 | ||
| Line 2100... | Line 2117... | ||
| 2100 | GetCtrlVal (p2h, P2_XC, &x0); |
2117 | GetCtrlVal (p2h, P2_XC, &x0); |
| 2101 | GetCtrlVal (p2h, P2_YC, &y0); |
2118 | GetCtrlVal (p2h, P2_YC, &y0); |
| 2102 | 2119 | ||
| 2103 | GetCtrlVal (p2h, P2_DIRECTION, &runrec.direction); |
2120 | GetCtrlVal (p2h, P2_DIRECTION, &runrec.direction); |
| 2104 | 2121 | ||
| 2105 | 2122 | ||
| 2106 | SetCtrlAttribute(p1h,P1_TRGHVMON,ATTR_ENABLED,1); |
2123 | SetCtrlAttribute(p1h,P1_TRGHVMON,ATTR_ENABLED,1); |
| 2107 | hvmonFirst = 0; |
2124 | hvmonFirst = 0; |
| 2108 | 2125 | ||
| 2109 | 2126 | ||
| 2110 | GetCtrlVal(p1h,P1_SENDSWTRIG,&sendswtrg); |
2127 | GetCtrlVal(p1h,P1_SENDSWTRIG,&sendswtrg); |
| Line 2129... | Line 2146... | ||
| 2129 | GetCtrlVal (p2h, P2_NEWF, &fmax); |
2146 | GetCtrlVal (p2h, P2_NEWF, &fmax); |
| 2130 | fmax*=1000000;//fmax in Mega Bytes |
2147 | fmax*=1000000;//fmax in Mega Bytes |
| 2131 | } |
2148 | } |
| 2132 | time (&t0); |
2149 | time (&t0); |
| 2133 | sa02Printf("---->daq_scan\n"); |
2150 | sa02Printf("---->daq_scan\n"); |
| 2134 | 2151 | ||
| 2135 | if (dsave) { |
2152 | if (dsave) { |
| 2136 | sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
2153 | sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
| 2137 | //gFp = fopen (dfile, "ab"); |
2154 | //gFp = fopen (dfile, "ab"); |
| 2138 | gFp = fopen (dfile, "ab"); |
2155 | gFp = fopen (dfile, "ab"); |
| 2139 | if (gFp==NULL) sa02Printf("----> !!! gFp==NULL !!!\n"); |
2156 | if (gFp==NULL) sa02Printf("----> !!! gFp==NULL !!!\n"); |
| 2140 | if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) after fopen !!!\n"); |
2157 | if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) after fopen !!!\n"); |
| 2141 | //time ((time_t *) &runrec.time); |
2158 | //time ((time_t *) &runrec.time); |
| 2142 | time (&cas); |
2159 | time (&cas); |
| 2143 | runrec.time = (uint32_t) cas; |
2160 | runrec.time = (uint32_t) cas; |
| 2144 | status = (int) fwrite (&runrec, 1, runrec.len, gFp); |
2161 | status = (int) fwrite (&runrec, 1, runrec.len, gFp); |
| 2145 | if(status != runrec.len) sa02Printf("----> !!! status != runrec.len (= %d) !!!\n", status); |
2162 | if(status != runrec.len) sa02Printf("----> !!! status != runrec.len (= %d) !!!\n", status); |
| 2146 | if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) = %d !!!\n", ferror (gFp)); |
2163 | if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) = %d !!!\n", ferror (gFp)); |
| 2147 | 2164 | ||
| 2148 | } |
2165 | } |
| 2149 | 2166 | ||
| 2150 | 2167 | ||
| 2151 | for (i=0; i<4; i++) { |
2168 | for (i=0; i<4; i++) { |
| 2152 | sprintf(title,"HAPD%d Surface Scan single channels", i); |
2169 | sprintf(title,"HAPD%d Surface Scan single channels", i); |
| Line 2156... | Line 2173... | ||
| 2156 | sprintf(hname,"hxy%d_sum", i); |
2173 | sprintf(hname,"hxy%d_sum", i); |
| 2157 | H2DInit(hxy+i,hname,runrec.serial, runrec.nx,runrec.x0, runrec.dx,runrec.ny,runrec.y0, runrec.dy); |
2174 | H2DInit(hxy+i,hname,runrec.serial, runrec.nx,runrec.x0, runrec.dx,runrec.ny,runrec.y0, runrec.dy); |
| 2158 | if (scanunitsx) { |
2175 | if (scanunitsx) { |
| 2159 | H2DSetTitleX(hxy+i,"x (channels)"); |
2176 | H2DSetTitleX(hxy+i,"x (channels)"); |
| 2160 | H3DSetTitleX(hxy+i,"x (channels)"); |
2177 | H3DSetTitleX(hxy+i,"x (channels)"); |
| - | 2178 | } |
|
| 2161 |
|
2179 | else { |
| 2162 | H2DSetTitleX(hxy+i,"x (stage steps)"); |
2180 | H2DSetTitleX(hxy+i,"x (stage steps)"); |
| 2163 | H3DSetTitleX(hxy+i,"x (stage steps)"); |
2181 | H3DSetTitleX(hxy+i,"x (stage steps)"); |
| 2164 | } |
2182 | } |
| 2165 | if (scanunitsy) { |
2183 | if (scanunitsy) { |
| 2166 | H2DSetTitleY(hxy+i,"y (channels)"); |
2184 | H2DSetTitleY(hxy+i,"y (channels)"); |
| 2167 | H3DSetTitleY(hxy+i,"y (channels)"); |
2185 | H3DSetTitleY(hxy+i,"y (channels)"); |
| - | 2186 | } |
|
| 2168 |
|
2187 | else { |
| 2169 | H2DSetTitleY(hxy+i,"y (stage steps)"); |
2188 | H2DSetTitleY(hxy+i,"y (stage steps)"); |
| 2170 | H3DSetTitleY(hxy+i,"y (stage steps)"); |
2189 | H3DSetTitleY(hxy+i,"y (stage steps)"); |
| 2171 | } |
2190 | } |
| 2172 | 2191 | ||
| 2173 | } |
2192 | } |
| 2174 | if (runrec.direction) { |
2193 | if (runrec.direction) { |
| 2175 | ny = runrec.ny; |
2194 | ny = runrec.ny; |
| 2176 | nx = runrec.nx; |
2195 | nx = runrec.nx; |
| - | 2196 | } |
|
| 2177 |
|
2197 | else { |
| 2178 | ny = runrec.nx; |
2198 | ny = runrec.nx; |
| 2179 | nx = runrec.ny; |
2199 | nx = runrec.ny; |
| 2180 | } |
2200 | } |
| 2181 | rdata = malloc(sizeof(uint32_t)*maxsize); |
2201 | rdata = malloc(sizeof(uint32_t)*maxsize); |
| 2182 | 2202 | ||
| Line 2192... | Line 2212... | ||
| 2192 | posrec.iy = iy; |
2212 | posrec.iy = iy; |
| 2193 | posrec.yset=runrec.y0+posrec.iy*runrec.dy; |
2213 | posrec.yset=runrec.y0+posrec.iy*runrec.dy; |
| 2194 | if (scanunitsy) { |
2214 | if (scanunitsy) { |
| 2195 | if (posrec.yset>5) { |
2215 | if (posrec.yset>5) { |
| 2196 | addgap=gapy * fx; |
2216 | addgap=gapy * fx; |
| - | 2217 | } |
|
| 2197 |
|
2218 | else { |
| 2198 | addgap=0; |
2219 | addgap=0; |
| 2199 | } |
2220 | } |
| 2200 | posrec.yset = (int32_t)(y0+dy *fx * posrec.yset + addgap); |
2221 | posrec.yset = (int32_t)(y0+dy *fx * posrec.yset + addgap); |
| 2201 | } |
2222 | } |
| 2202 | if (gMIKRO_Y) { |
2223 | if (gMIKRO_Y) { |
| Line 2205... | Line 2226... | ||
| 2205 | sa02Printf("->MIKRO_MoveTo (2, y);%d\n",posrec.yset); |
2226 | sa02Printf("->MIKRO_MoveTo (2, y);%d\n",posrec.yset); |
| 2206 | } |
2227 | } |
| 2207 | 2228 | ||
| 2208 | SetCtrlVal (p2h, P2_Y, posrec.yset); |
2229 | SetCtrlVal (p2h, P2_Y, posrec.yset); |
| 2209 | SetCtrlVal (p2h, P2_IY, posrec.iy); |
2230 | SetCtrlVal (p2h, P2_IY, posrec.iy); |
| - | 2231 | } |
|
| 2210 |
|
2232 | else { |
| 2211 | posrec.ix = iy; |
2233 | posrec.ix = iy; |
| 2212 | posrec.xset=runrec.x0+posrec.ix*runrec.dx; |
2234 | posrec.xset=runrec.x0+posrec.ix*runrec.dx; |
| 2213 | if (scanunitsx) { |
2235 | if (scanunitsx) { |
| 2214 | if (posrec.xset>5) { |
2236 | if (posrec.xset>5) { |
| 2215 | addgap=gapx * fx; |
2237 | addgap=gapx * fx; |
| - | 2238 | } |
|
| 2216 |
|
2239 | else { |
| 2217 | addgap=0; |
2240 | addgap=0; |
| 2218 | } |
2241 | } |
| 2219 | posrec.xset = (int32_t)(x0+dx *fx * posrec.xset + addgap); |
2242 | posrec.xset = (int32_t)(x0+dx *fx * posrec.xset + addgap); |
| 2220 | } |
2243 | } |
| 2221 | if (gMIKRO_Y) { |
2244 | if (gMIKRO_Y) { |
| Line 2233... | Line 2256... | ||
| 2233 | posrec.ix = ix; |
2256 | posrec.ix = ix; |
| 2234 | posrec.xset=runrec.x0+posrec.ix*runrec.dx; |
2257 | posrec.xset=runrec.x0+posrec.ix*runrec.dx; |
| 2235 | if (scanunitsx) { |
2258 | if (scanunitsx) { |
| 2236 | if (posrec.xset>5) { |
2259 | if (posrec.xset>5) { |
| 2237 | addgap=gapx * fx; |
2260 | addgap=gapx * fx; |
| - | 2261 | } |
|
| 2238 |
|
2262 | else { |
| 2239 | addgap=0; |
2263 | addgap=0; |
| 2240 | } |
2264 | } |
| 2241 | posrec.xset = (int32_t)(x0+dx *fx * posrec.xset + addgap); |
2265 | posrec.xset = (int32_t)(x0+dx *fx * posrec.xset + addgap); |
| 2242 | } |
2266 | } |
| 2243 | if (gMIKRO_X) { |
2267 | if (gMIKRO_X) { |
| 2244 | //sa02Printf("MIKRO_MoveTo (1, x);%d\n",posrec.x); |
2268 | //sa02Printf("MIKRO_MoveTo (1, x);%d\n",posrec.x); |
| 2245 | MIKRO_MoveTo (MIKRO_X, posrec.xset); |
2269 | MIKRO_MoveTo (MIKRO_X, posrec.xset); |
| 2246 | sa02Printf("->MIKRO_MoveTo (1, x);%d\n",posrec.xset); |
2270 | sa02Printf("->MIKRO_MoveTo (1, x);%d\n",posrec.xset); |
| 2247 | } |
2271 | } |
| 2248 | SetCtrlVal (p2h, P2_X, posrec.xset); |
2272 | SetCtrlVal (p2h, P2_X, posrec.xset); |
| 2249 | SetCtrlVal (p2h, P2_IX, posrec.ix); |
2273 | SetCtrlVal (p2h, P2_IX, posrec.ix); |
| - | 2274 | } |
|
| 2250 |
|
2275 | else { |
| 2251 | posrec.iy = ix; |
2276 | posrec.iy = ix; |
| 2252 | posrec.yset=runrec.y0+posrec.iy*runrec.dy; |
2277 | posrec.yset=runrec.y0+posrec.iy*runrec.dy; |
| 2253 | if (scanunitsy) { |
2278 | if (scanunitsy) { |
| 2254 | if (posrec.yset>5) { |
2279 | if (posrec.yset>5) { |
| 2255 | addgap=gapy * fx; |
2280 | addgap=gapy * fx; |
| - | 2281 | } |
|
| 2256 |
|
2282 | else { |
| 2257 | addgap=0; |
2283 | addgap=0; |
| 2258 | } |
2284 | } |
| 2259 | posrec.yset = (int32_t)(y0+dy *fx * posrec.yset + addgap); |
2285 | posrec.yset = (int32_t)(y0+dy *fx * posrec.yset + addgap); |
| 2260 | } |
2286 | } |
| 2261 | if (gMIKRO_X) { |
2287 | if (gMIKRO_X) { |
| Line 2273... | Line 2299... | ||
| 2273 | if (fmax && (ftell(gFp) > fmax)) { |
2299 | if (fmax && (ftell(gFp) > fmax)) { |
| 2274 | fcount+=1; |
2300 | fcount+=1; |
| 2275 | sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
2301 | sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
| 2276 | fclose(gFp); |
2302 | fclose(gFp); |
| 2277 | gFp = fopen (dfile, "ab"); |
2303 | gFp = fopen (dfile, "ab"); |
| 2278 | } |
2304 | } |
| 2279 | time (&cas); |
2305 | time (&cas); |
| 2280 | posrec.time = (uint32_t) cas; |
2306 | posrec.time = (uint32_t) cas; |
| 2281 | status = (int) fwrite (&posrec, 1, posrec.len, gFp); |
2307 | status = (int) fwrite (&posrec, 1, posrec.len, gFp); |
| 2282 | } |
2308 | } |
| 2283 | 2309 | ||
| Line 2286... | Line 2312... | ||
| 2286 | 2312 | ||
| 2287 | for (board=0; board<4; board++) { |
2313 | for (board=0; board<4; board++) { |
| 2288 | if (mask & (1<<board)) { |
2314 | if (mask & (1<<board)) { |
| 2289 | sa02Cmd( board, FEB_VTH1, runrec.ped, 0,0,1,response); |
2315 | sa02Cmd( board, FEB_VTH1, runrec.ped, 0,0,1,response); |
| 2290 | Sa02TestPulseEnable(board,tpenb); // Enable/disable test pulse |
2316 | Sa02TestPulseEnable(board,tpenb); // Enable/disable test pulse |
| 2291 | } |
2317 | } |
| 2292 | } |
2318 | } |
| 2293 | 2319 | ||
| 2294 | Sa02SetNeve(runrec.nev); |
2320 | Sa02SetNeve(runrec.nev); |
| 2295 | 2321 | ||
| 2296 | evtrec.nev=1; |
2322 | evtrec.nev=1; |
| 2297 | 2323 | ||
| 2298 | 2324 | ||
| 2299 | sa02Reset(); |
2325 | sa02Reset(); |
| 2300 | 2326 | ||
| 2301 | if (ctrl_c) break; |
2327 | if (ctrl_c) break; |
| 2302 | 2328 | ||
| 2303 | if ( (count+2+dsize) >= maxsize) { |
2329 | if ( (count+2+dsize) >= maxsize) { |
| 2304 | maxsize*=2; |
2330 | maxsize*=2; |
| 2305 | sa02Printf("Increasing data buffer to %d elements\n", maxsize); |
2331 | sa02Printf("Increasing data buffer to %d elements\n", maxsize); |
| 2306 | rdata=realloc(rdata ,sizeof(uint32_t)*maxsize); |
2332 | rdata=realloc(rdata ,sizeof(uint32_t)*maxsize); |
| 2307 | } |
2333 | } |
| 2308 | 2334 | ||
| 2309 | data = &rdata[count+2]; |
2335 | data = &rdata[count+2]; |
| 2310 | do { |
2336 | do { |
| 2311 | //int k; |
2337 | //int k; |
| 2312 | //uint32_t inputtriggers; |
2338 | //uint32_t inputtriggers; |
| Line 2315... | Line 2341... | ||
| 2315 | /* |
2341 | /* |
| 2316 | for (k=0; k<4; k++) c[k] = Sa02GetCounter ( k ,&e[k]); |
2342 | for (k=0; k<4; k++) c[k] = Sa02GetCounter ( k ,&e[k]); |
| 2317 | for (k=0; k<4; k++) sa02Printf(" CNTR%d=%d (ERR=%d)\t",k,c[k],e[k]); |
2343 | for (k=0; k<4; k++) sa02Printf(" CNTR%d=%d (ERR=%d)\t",k,c[k],e[k]); |
| 2318 | sa02Printf("\nsa02Read bytes = %d mask=%d neve=%d (%d # %d)\n", nb, mask, runrec.nev, Sa02GetNeve( &inputtriggers ) , inputtriggers); |
2344 | sa02Printf("\nsa02Read bytes = %d mask=%d neve=%d (%d # %d)\n", nb, mask, runrec.nev, Sa02GetNeve( &inputtriggers ) , inputtriggers); |
| 2319 | */ |
2345 | */ |
| - | 2346 | } |
|
| 2320 |
|
2347 | while ( nb==0 && !ctrl_c); |
| 2321 | 2348 | ||
| 2322 | 2349 | ||
| 2323 | 2350 | ||
| 2324 | if (sa02TimerOut || nb==0) sa02Printf("sa02TimerOut || nb==0\n"); |
2351 | if (sa02TimerOut || nb==0) sa02Printf("sa02TimerOut || nb==0\n"); |
| 2325 | 2352 | ||
| 2326 | for (ich=0; ich<144*4; ich++) { |
2353 | for (ich=0; ich<144*4; ich++) { |
| 2327 | int brd = ich/144; |
2354 | int brd = ich/144; |
| 2328 | int xch = 143 - ich%144; |
2355 | int xch = 143 - ich%144; |
| Line 2334... | Line 2361... | ||
| 2334 | } |
2361 | } |
| 2335 | } |
2362 | } |
| 2336 | sa02Printf("max couts = %d %d %d %d\n", xyval[0],xyval[1],xyval[2],xyval[3]); |
2363 | sa02Printf("max couts = %d %d %d %d\n", xyval[0],xyval[1],xyval[2],xyval[3]); |
| 2337 | if (nb>=0) { |
2364 | if (nb>=0) { |
| 2338 | count+=module_header(0x3,&rdata[count],nb/sizeof(uint32_t)); |
2365 | count+=module_header(0x3,&rdata[count],nb/sizeof(uint32_t)); |
| 2339 | } |
2366 | } |
| 2340 | 2367 | ||
| 2341 | 2368 | ||
| 2342 | /* |
2369 | /* |
| 2343 | for (ich=0; ich<144; ich++) { |
2370 | for (ich=0; ich<144; ich++) { |
| 2344 | 2371 | ||
| 2345 | // uint32_t mask=0xFF; |
2372 | // uint32_t mask=0xFF; |
| Line 2349... | Line 2376... | ||
| 2349 | id=(17-ich/8)+board*18; |
2376 | id=(17-ich/8)+board*18; |
| 2350 | shft=(ich%8)*4; |
2377 | shft=(ich%8)*4; |
| 2351 | if ( data[id] & (mask <<shft) ) { |
2378 | if ( data[id] & (mask <<shft) ) { |
| 2352 | H3DFillBin(hxy, posrec.ix,posrec.iy,ich,1); |
2379 | H3DFillBin(hxy, posrec.ix,posrec.iy,ich,1); |
| 2353 | H2DFillBin(hxy, posrec.ix,posrec.iy,1); |
2380 | H2DFillBin(hxy, posrec.ix,posrec.iy,1); |
| 2354 | } |
2381 | } |
| 2355 | } |
2382 | } |
| 2356 | */ |
2383 | */ |
| 2357 | if (dsave) { |
2384 | if (dsave) { |
| 2358 | if (Random(0,1)<fraction) { |
2385 | if (Random(0,1)<fraction) { |
| 2359 | writeevents=1; |
2386 | writeevents=1; |
| - | 2387 | } |
|
| 2360 |
|
2388 | else { |
| 2361 | writeevents=0; |
2389 | writeevents=0; |
| 2362 | } |
2390 | } |
| 2363 | if (writeevents) { |
2391 | if (writeevents) { |
| 2364 | evtrec.id = EVTREC_ID; |
2392 | evtrec.id = EVTREC_ID; |
| 2365 | evtrec.len=count*sizeof(uint32_t)+ sizeof(evtrec); |
2393 | evtrec.len=count*sizeof(uint32_t)+ sizeof(evtrec); |
| 2366 | 2394 | ||
| Line 2390... | Line 2418... | ||
| 2390 | EstimatedFinish(p2h, P2_PROGRESS, P2_ETA, t0, done); |
2418 | EstimatedFinish(p2h, P2_PROGRESS, P2_ETA, t0, done); |
| 2391 | GetCtrlVal(p2h,P2_CH, &ch); |
2419 | GetCtrlVal(p2h,P2_CH, &ch); |
| 2392 | for (board=0; board<4; board++) { |
2420 | for (board=0; board<4; board++) { |
| 2393 | if (ch) { |
2421 | if (ch) { |
| 2394 | H3DDrawSliceXY(hxy+board,ch,p2h, p2graph[board], &p2plothandle[board]); |
2422 | H3DDrawSliceXY(hxy+board,ch,p2h, p2graph[board], &p2plothandle[board]); |
| - | 2423 | } |
|
| 2395 |
|
2424 | else { |
| 2396 | H2DDraw(hxy+board,p2h, p2graph[board], &p2plothandle[board]); |
2425 | H2DDraw(hxy+board,p2h, p2graph[board], &p2plothandle[board]); |
| 2397 | } |
2426 | } |
| 2398 | } |
2427 | } |
| 2399 | ProcessSystemEvents (); |
2428 | ProcessSystemEvents (); |
| 2400 | SetCtrlVal(p2h,P2_CEVE, i); |
2429 | SetCtrlVal(p2h,P2_CEVE, i); |
| 2401 | sa02Printf("%d events in %2.2f min (%d s) %s",ncount, (double)(t-tstart)/60.,t-tstart, ctime(&t)); |
2430 | sa02Printf("%d events in %2.2f min (%d s) %s",ncount, (double)(t-tstart)/60.,t-tstart, ctime(&t)); |
| 2402 | 2431 | ||
| 2403 | } |
2432 | } |
| 2404 | told=t; |
2433 | told=t; |
| 2405 | 2434 | ||
| 2406 | 2435 | ||
| 2407 | 2436 | ||
| Line 2461... | Line 2490... | ||
| 2461 | monrec.status[i] = buf[0]; //status |
2490 | monrec.status[i] = buf[0]; //status |
| 2462 | monrec.vmon[i] = buf[1]*1000;//zapisano v mV |
2491 | monrec.vmon[i] = buf[1]*1000;//zapisano v mV |
| 2463 | monrec.imon[i] = buf[2]*1000;//zapisano v nA |
2492 | monrec.imon[i] = buf[2]*1000;//zapisano v nA |
| 2464 | monrec.vset[i] = buf[3]*1000;//zapisano v mV |
2493 | monrec.vset[i] = buf[3]*1000;//zapisano v mV |
| 2465 | monrec.iset[i] = buf[4]*1000;//zapisano v nA |
2494 | monrec.iset[i] = buf[4]*1000;//zapisano v nA |
| - | 2495 | } |
|
| 2466 |
|
2496 | else { |
| 2467 | buf[0]=(unsigned short) (channels[i]<<8) | ReadStatus; |
2497 | buf[0]=(unsigned short) (channels[i]<<8) | ReadStatus; |
| 2468 | if (gCAEN_V288) { |
2498 | if (gCAEN_V288) { |
| 2469 | V288_Send(0,SYS403mid,1,buf); |
2499 | V288_Send(0,SYS403mid,1,buf); |
| 2470 | odg=V288_Receive(0,255,buf); |
2500 | odg=V288_Receive(0,255,buf); |
| 2471 | } |
2501 | } |
| 2472 | monrec.vmon[i] = buf[1]*10;//zapisano v mV |
2502 | monrec.vmon[i] = buf[1]*10;//zapisano v mV |
| 2473 | monrec.imon[i] = buf[2]*10;//zapisano v nA |
2503 | monrec.imon[i] = buf[2]*10;//zapisano v nA |
| 2474 | monrec.status[i] = buf[3]; //status |
2504 | monrec.status[i] = buf[3]; //status |
| 2475 | if(!hvmonFirst) { |
2505 | if(!hvmonFirst) { |
| 2476 | buf[0]=(unsigned short) (channels[i]<<8) | ReadParameters; |
2506 | buf[0]=(unsigned short) (channels[i]<<8) | ReadParameters; |
| Line 2486... | Line 2516... | ||
| 2486 | } |
2516 | } |
| 2487 | sa02Printf("%04x \t %.02f V \t %d V \t\t %.02f muA \t %d muA *\n",monrec.status[i],(float)monrec.vmon[i]/1000,monrec.vset[i]/1000,(float)monrec.imon[i]/1000,monrec.iset[i]/1000); |
2517 | sa02Printf("%04x \t %.02f V \t %d V \t\t %.02f muA \t %d muA *\n",monrec.status[i],(float)monrec.vmon[i]/1000,monrec.vset[i]/1000,(float)monrec.imon[i]/1000,monrec.iset[i]/1000); |
| 2488 | } |
2518 | } |
| 2489 | time (&t1); |
2519 | time (&t1); |
| 2490 | sa02Printf("Cas izvedbe:%g s.\n",difftime(t1,t0)); |
2520 | sa02Printf("Cas izvedbe:%g s.\n",difftime(t1,t0)); |
| 2491 | 2521 | ||
| 2492 | return 0; |
2522 | return 0; |
| 2493 | } |
2523 | } |
| 2494 | 2524 | ||
| 2495 | int CVICALLBACK set_dac(int OnOff) { |
2525 | int CVICALLBACK set_dac(int OnOff) { |
| 2496 | int val; |
2526 | int val; |
| 2497 | char name[MAX_PATHNAME_LEN]; |
2527 | char name[MAX_PATHNAME_LEN]; |
| 2498 | if (OnOff) { |
2528 | if (OnOff) { |
| 2499 | GetCtrlVal (p5h, P5_DAC_ON, &val); |
2529 | GetCtrlVal (p5h, P5_DAC_ON, &val); |
| 2500 | sprintf(name ,"%s -p %d",palaser, val); |
2530 | sprintf(name ,"%s -p %d",palaser, val); |
| 2501 | sa02Printf("%s\n", name); |
2531 | sa02Printf("%s\n", name); |
| 2502 | system(name); |
2532 | system(name); |
| 2503 | GetCtrlVal (p5h, P5_FREQUENCY_ON, &val); |
2533 | GetCtrlVal (p5h, P5_FREQUENCY_ON, &val); |
| 2504 | sprintf(name ,"%s -f %d",palaser, val); |
2534 | sprintf(name ,"%s -f %d",palaser, val); |
| 2505 | sa02Printf("%s\n", name); |
2535 | sa02Printf("%s\n", name); |
| 2506 | system(name); |
2536 | system(name); |
| - | 2537 | } |
|
| 2507 |
|
2538 | else { |
| 2508 | GetCtrlVal (p5h, P5_DAC_OFF, &val); |
2539 | GetCtrlVal (p5h, P5_DAC_OFF, &val); |
| 2509 | sprintf(name ,"%s -p %d",palaser, val); |
2540 | sprintf(name ,"%s -p %d",palaser, val); |
| 2510 | sa02Printf("%s\n", name); |
2541 | sa02Printf("%s\n", name); |
| 2511 | system(name); |
2542 | system(name); |
| 2512 | GetCtrlVal (p5h, P5_FREQUENCY_OFF, &val); |
2543 | GetCtrlVal (p5h, P5_FREQUENCY_OFF, &val); |
| Line 2537... | Line 2568... | ||
| 2537 | if((buf[0]&0x20)&&(buf[0]&0x20)) sa02Printf("Channel is ramping up \t Vmon: %d V \t Vset: %d \t status: 0x%x\n",buf[1],buf[3],buf[0]); |
2568 | if((buf[0]&0x20)&&(buf[0]&0x20)) sa02Printf("Channel is ramping up \t Vmon: %d V \t Vset: %d \t status: 0x%x\n",buf[1],buf[3],buf[0]); |
| 2538 | else if(buf[0]&0x40) sa02Printf("Channel is ramping down \t Vmon: %d V \t Vset: %d \t status: 0x%x\n",buf[1],buf[3],buf[0]); |
2569 | else if(buf[0]&0x40) sa02Printf("Channel is ramping down \t Vmon: %d V \t Vset: %d \t status: 0x%x\n",buf[1],buf[3],buf[0]); |
| 2539 | else if(buf[0]&0x1E) { |
2570 | else if(buf[0]&0x1E) { |
| 2540 | sa02Printf("status: 0x%x\n",buf[0]); |
2571 | sa02Printf("status: 0x%x\n",buf[0]); |
| 2541 | return -1; |
2572 | return -1; |
| - | 2573 | } |
|
| 2542 |
|
2574 | else sa02Printf("status: 0x%x\n",buf[0]); |
| 2543 | Delay(2); |
2575 | Delay(2); |
| 2544 | buf[0]=(unsigned short) (channel<<8) | ReadOperationalParam; |
2576 | buf[0]=(unsigned short) (channel<<8) | ReadOperationalParam; |
| 2545 | V288_Send(0,N470mid,1,buf); |
2577 | V288_Send(0,N470mid,1,buf); |
| 2546 | ret=V288_Receive(0,255,buf); |
2578 | ret=V288_Receive(0,255,buf); |
| 2547 | } |
2579 | } |
| Line 2709... | Line 2741... | ||
| 2709 | LoadParameters(p3h, P3_LOADPAR, EVENT_COMMIT, NULL, 0, 0); // load parameters from defaul.param to FEB |
2741 | LoadParameters(p3h, P3_LOADPAR, EVENT_COMMIT, NULL, 0, 0); // load parameters from defaul.param to FEB |
| 2710 | ProcessSystemEvents (); |
2742 | ProcessSystemEvents (); |
| 2711 | LoadParameters(p3h, P3_LOADPAR, EVENT_COMMIT, NULL, 0, 0); // load parameters from defaul.param to FEB |
2743 | LoadParameters(p3h, P3_LOADPAR, EVENT_COMMIT, NULL, 0, 0); // load parameters from defaul.param to FEB |
| 2712 | ProcessSystemEvents (); |
2744 | ProcessSystemEvents (); |
| 2713 | LoadParameters(p3h, P3_LOADPAR, EVENT_COMMIT, NULL, 0, 0); // load parameters from defaul.param to FEB |
2745 | LoadParameters(p3h, P3_LOADPAR, EVENT_COMMIT, NULL, 0, 0); // load parameters from defaul.param to FEB |
| 2714 | ProcessSystemEvents (); |
2746 | ProcessSystemEvents (); |
| 2715 | 2747 | ||
| 2716 | /****** MicroMini calibration ******/ |
2748 | /****** MicroMini calibration ******/ |
| 2717 | sa02Printf("Calibration *\n\n"); |
2749 | sa02Printf("Calibration *\n\n"); |
| 2718 | SetHome(p2h, P2_HO,EVENT_COMMIT,NULL, 0, 0); |
2750 | SetHome(p2h, P2_HO,EVENT_COMMIT,NULL, 0, 0); |
| 2719 | SetCtrlVal(p2h,P2_XC,gCENTER_X); |
2751 | SetCtrlVal(p2h,P2_XC,gCENTER_X); |
| 2720 | SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
2752 | SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
| 2721 | 2753 | ||
| 2722 | /****** Reads run number ******/ |
2754 | /****** Reads run number ******/ |
| 2723 | fp = fopen ("CompleteScan_RunNumber.txt","r"); |
2755 | fp = fopen ("CompleteScan_RunNumber.txt","r"); |
| 2724 | if (fp) { |
2756 | if (fp) { |
| 2725 | if (fgets(line,ndim,fp)!= NULL) current_run = atoi(line)+1; |
2757 | if (fgets(line,ndim,fp)!= NULL) current_run = atoi(line)+1; |
| 2726 | fclose(fp); |
2758 | fclose(fp); |
| 2727 | fp = NULL; |
2759 | fp = NULL; |
| 2728 | } |
2760 | } |
| 2729 | ProcessSystemEvents (); |
2761 | ProcessSystemEvents (); |
| 2730 | 2762 | ||
| 2731 | /****** Slow Control ******/ |
2763 | /****** Slow Control ******/ |
| 2732 | sprintf(line,"%04d_SlowControl.xml",current_run); |
2764 | sprintf(line,"%04d_SlowControl.xml",current_run); |
| Line 2910... | Line 2942... | ||
| 2910 | 2942 | ||
| 2911 | daq_scan(NULL); |
2943 | daq_scan(NULL); |
| 2912 | 2944 | ||
| 2913 | sprintf(cmdCommand,"cmd.exe /c mkdir ..\\modules\\%04d & ..\\sa02read -i %s_file01.dat -o ..\\modules\\%04d\\%s.root", |
2945 | sprintf(cmdCommand,"cmd.exe /c mkdir ..\\modules\\%04d & ..\\sa02read -i %s_file01.dat -o ..\\modules\\%04d\\%s.root", |
| 2914 | current_run, line, current_run, buf); |
2946 | current_run, line, current_run, buf); |
| 2915 | LaunchExecutable(cmdCommand); |
2947 | LaunchExecutable(cmdCommand); |
| - | 2948 | ||
| 2916 | 2949 | ||
| 2917 | 2950 | ||
| 2918 | - | ||
| 2919 | /****** 2D v X ******/ |
2951 | /****** 2D v X ******/ |
| 2920 | // Panel 2 settings |
2952 | // Panel 2 settings |
| 2921 | SetCtrlVal (p2h, P2_SCANUNITSX, 0); // Continuous scan over X (1 Ch, 0 Step) |
2953 | SetCtrlVal (p2h, P2_SCANUNITSX, 0); // Continuous scan over X (1 Ch, 0 Step) |
| 2922 | SetCtrlVal (p2h, P2_NX, 380/2); // Noumber of steps = 380 |
2954 | SetCtrlVal (p2h, P2_NX, 380/2); // Noumber of steps = 380 |
| 2923 | SetCtrlVal (p2h, P2_XSTEP, 2*500); // Step size = 500 |
2955 | SetCtrlVal (p2h, P2_XSTEP, 2*500); // Step size = 500 |
| Line 2925... | Line 2957... | ||
| 2925 | SetCtrlVal (p2h, P2_SCANUNITSY, 1); // Only over the channel centers (1 Ch, 0 Step) |
2957 | SetCtrlVal (p2h, P2_SCANUNITSY, 1); // Only over the channel centers (1 Ch, 0 Step) |
| 2926 | SetCtrlVal (p2h, P2_NY, 12); // Noumber of steps = 12 |
2958 | SetCtrlVal (p2h, P2_NY, 12); // Noumber of steps = 12 |
| 2927 | SetCtrlVal (p2h, P2_YSTEP, 1); // Step size = 1 |
2959 | SetCtrlVal (p2h, P2_YSTEP, 1); // Step size = 1 |
| 2928 | SetCtrlVal (p2h, P2_YMIN, 0); // Start position = 0 |
2960 | SetCtrlVal (p2h, P2_YMIN, 0); // Start position = 0 |
| 2929 | SetCtrlVal (p2h, P2_DIRECTION, 1); // Set Y then scan X = 1 |
2961 | SetCtrlVal (p2h, P2_DIRECTION, 1); // Set Y then scan X = 1 |
| 2930 | 2962 | ||
| 2931 | SetCtrlVal (p2h, P2_NEVE, 1000); // Number of events for position scan |
2963 | SetCtrlVal (p2h, P2_NEVE, 1000); // Number of events for position scan |
| 2932 | SetCtrlVal (p2h, P2_PEDESTAL, ithr); // Treshold |
2964 | SetCtrlVal (p2h, P2_PEDESTAL, ithr); // Treshold |
| 2933 | 2965 | ||
| 2934 | SetCtrlVal (p2h, P2_DAQEXE, 0); // Execute at each position: nothing |
2966 | SetCtrlVal (p2h, P2_DAQEXE, 0); // Execute at each position: nothing |
| 2935 | 2967 | ||
| 2936 | sprintf(buf,"%04d_2_2DX",current_run); |
2968 | sprintf(buf,"%04d_2_2DX",current_run); |
| 2937 | sprintf(line,"..\\modules\\%s", buf); |
2969 | sprintf(line,"..\\modules\\%s", buf); |
| 2938 | SetCtrlVal (p2h, P2_DFILE, line); |
2970 | SetCtrlVal (p2h, P2_DFILE, line); |
| 2939 | 2971 | ||
| 2940 | 2972 | ||
| 2941 | daq_scan(NULL); |
2973 | daq_scan(NULL); |
| 2942 | 2974 | ||
| Line 2953... | Line 2985... | ||
| 2953 | SetCtrlVal (p2h, P2_SCANUNITSY, 0); // Continuous scan over Y (1 Ch, 0 Step) |
2985 | SetCtrlVal (p2h, P2_SCANUNITSY, 0); // Continuous scan over Y (1 Ch, 0 Step) |
| 2954 | SetCtrlVal (p2h, P2_NY, 380/2); // Noumber of steps = 380 |
2986 | SetCtrlVal (p2h, P2_NY, 380/2); // Noumber of steps = 380 |
| 2955 | SetCtrlVal (p2h, P2_YSTEP, 2*500); // Step size = 500 |
2987 | SetCtrlVal (p2h, P2_YSTEP, 2*500); // Step size = 500 |
| 2956 | SetCtrlVal (p2h, P2_YMIN, 75000); // Start position = 7500 |
2988 | SetCtrlVal (p2h, P2_YMIN, 75000); // Start position = 7500 |
| 2957 | SetCtrlVal (p2h, P2_DIRECTION, 0); // Set X then scan Y = 0 |
2989 | SetCtrlVal (p2h, P2_DIRECTION, 0); // Set X then scan Y = 0 |
| 2958 | 2990 | ||
| 2959 | SetCtrlVal (p2h, P2_NEVE, 1000); // Number of events for position scan |
2991 | SetCtrlVal (p2h, P2_NEVE, 1000); // Number of events for position scan |
| 2960 | SetCtrlVal (p2h, P2_PEDESTAL, ithr); // Treshold |
2992 | SetCtrlVal (p2h, P2_PEDESTAL, ithr); // Treshold |
| 2961 | 2993 | ||
| 2962 | SetCtrlVal (p2h, P2_DAQEXE, 0); // Execute at each position: nothing |
2994 | SetCtrlVal (p2h, P2_DAQEXE, 0); // Execute at each position: nothing |
| 2963 | 2995 | ||
| Line 2967... | Line 2999... | ||
| 2967 | 2999 | ||
| 2968 | 3000 | ||
| 2969 | daq_scan(NULL); |
3001 | daq_scan(NULL); |
| 2970 | 3002 | ||
| 2971 | sprintf(cmdCommand,"cmd.exe /c mkdir ..\\modules\\%04d & ..\\sa02read -i %s_file01.dat -o ..\\modules\\%04d\\%s.root ", current_run, line, current_run, buf); |
3003 | sprintf(cmdCommand,"cmd.exe /c mkdir ..\\modules\\%04d & ..\\sa02read -i %s_file01.dat -o ..\\modules\\%04d\\%s.root ", current_run, line, current_run, buf); |
| 2972 | system(cmdCommand); // wait here to finish to proceed to next step |
3004 | system(cmdCommand); // wait here to finish to proceed to next step |
| 2973 | 3005 | ||
| 2974 | sprintf(cmdCommand,"cmd.exe /c ..\\thisroot.bat & cd analysis & root script.c(%d)",current_run); |
3006 | sprintf(cmdCommand,"cmd.exe /c ..\\thisroot.bat & cd analysis & root script.c(%d)",current_run); |
| 2975 | LaunchExecutable(cmdCommand); |
3007 | LaunchExecutable(cmdCommand); |
| 2976 | 3008 | ||
| 2977 | SetCtrlVal (p2h, P2_ZSET, 300000); |
3009 | SetCtrlVal (p2h, P2_ZSET, 300000); |
| 2978 | SetCtrlVal (p2h, P2_XC, (uint32_t)(gCENTER_KX*0+gCENTER_X)); |
3010 | SetCtrlVal (p2h, P2_XC, (uint32_t)(gCENTER_KX*0+gCENTER_X)); |
| Line 3040... | Line 3072... | ||
| 3040 | strcpy(gUirCtrlMap[gNUirCtrlMap].name, ctrl ); |
3072 | strcpy(gUirCtrlMap[gNUirCtrlMap].name, ctrl ); |
| 3041 | if (gNUirCtrlMap<MAX_UIRCTRLMAP_SIZE) { |
3073 | if (gNUirCtrlMap<MAX_UIRCTRLMAP_SIZE) { |
| 3042 | gUirCtrlMap[gNUirCtrlMap].id = ctrlid; |
3074 | gUirCtrlMap[gNUirCtrlMap].id = ctrlid; |
| 3043 | gUirCtrlMap[gNUirCtrlMap].handle = GetPanelHandle(ctrl); |
3075 | gUirCtrlMap[gNUirCtrlMap].handle = GetPanelHandle(ctrl); |
| 3044 | gNUirCtrlMap++; |
3076 | gNUirCtrlMap++; |
| - | 3077 | } |
|
| 3045 |
|
3078 | else { |
| 3046 | sa02Printf("ERROR: Increase gNUirCtrlMap\n"); |
3079 | sa02Printf("ERROR: Increase gNUirCtrlMap\n"); |
| 3047 | } |
3080 | } |
| 3048 | } |
3081 | } |
| 3049 | } |
3082 | } |
| 3050 | fclose(fp); |
3083 | fclose(fp); |
| Line 3086... | Line 3119... | ||
| 3086 | cache_sz_inc *= cache_sz_inc_factor; |
3119 | cache_sz_inc *= cache_sz_inc_factor; |
| 3087 | if (cache_sz_inc > cache_sz_inc_max) { |
3120 | if (cache_sz_inc > cache_sz_inc_max) { |
| 3088 | cache_sz_inc = cache_sz_inc_max; |
3121 | cache_sz_inc = cache_sz_inc_max; |
| 3089 | } |
3122 | } |
| 3090 | } |
3123 | } |
| 3091 | 3124 | ||
| 3092 | pos_cache[count-1] = pstr2 - str; |
3125 | pos_cache[count-1] = pstr2 - str; |
| 3093 | pstr = pstr2 + oldlen; |
3126 | pstr = pstr2 + oldlen; |
| 3094 | } |
3127 | } |
| 3095 | 3128 | ||
| 3096 | orglen = pstr - str + strlen(pstr); |
3129 | orglen = pstr - str + strlen(pstr); |
| 3097 | 3130 | ||
| 3098 | /* Allocate memory for the post-replacement string. */ |
3131 | /* Allocate memory for the post-replacement string. */ |
| 3099 | if (count > 0) { |
3132 | if (count > 0) { |
| 3100 | newlen = strlen(new); |
3133 | newlen = strlen(new); |
| 3101 | retlen = orglen + (newlen - oldlen) * count; |
3134 | retlen = orglen + (newlen - oldlen) * count; |
| - | 3135 | } |
|
| 3102 |
|
3136 | else retlen = orglen; |
| 3103 | ret = malloc(retlen + 1); |
3137 | ret = malloc(retlen + 1); |
| 3104 | if (ret == NULL) { |
3138 | if (ret == NULL) { |
| 3105 | goto end_repl_str; |
3139 | goto end_repl_str; |
| 3106 | } |
3140 | } |
| 3107 | 3141 | ||
| 3108 | if (count == 0) { |
3142 | if (count == 0) { |
| 3109 | /* If no matches, then just duplicate the string. */ |
3143 | /* If no matches, then just duplicate the string. */ |
| 3110 | strcpy(ret, str); |
3144 | strcpy(ret, str); |
| - | 3145 | } |
|
| 3111 |
|
3146 | else { |
| 3112 | /* Otherwise, duplicate the string whilst performing |
3147 | /* Otherwise, duplicate the string whilst performing |
| 3113 | * the replacements using the position cache. */ |
3148 | * the replacements using the position cache. */ |
| 3114 | pret = ret; |
3149 | pret = ret; |
| 3115 | memcpy(pret, str, pos_cache[0]); |
3150 | memcpy(pret, str, pos_cache[0]); |
| 3116 | pret += pos_cache[0]; |
3151 | pret += pos_cache[0]; |
| Line 3135... | Line 3170... | ||
| 3135 | 3170 | ||
| 3136 | int CVICALLBACK run_script(void *functionData) { |
3171 | int CVICALLBACK run_script(void *functionData) { |
| 3137 | FILE *fp = NULL; |
3172 | FILE *fp = NULL; |
| 3138 | FILE *fpout =NULL; |
3173 | FILE *fpout =NULL; |
| 3139 | 3174 | ||
| 3140 | 3175 | ||
| 3141 | char *line; |
3176 | char *line; |
| 3142 | char buf[MAX_PATHNAME_LEN]; |
3177 | char buf[MAX_PATHNAME_LEN]; |
| 3143 | int status; |
3178 | int status; |
| 3144 | char type[MAX_PATHNAME_LEN]; |
3179 | char type[MAX_PATHNAME_LEN]; |
| 3145 | char param[MAX_PATHNAME_LEN]; |
3180 | char param[MAX_PATHNAME_LEN]; |
| Line 3161... | Line 3196... | ||
| 3161 | if (!fp) { |
3196 | if (!fp) { |
| 3162 | sa02Printf("Error! Cannot open script file %s\n",scriptname); |
3197 | sa02Printf("Error! Cannot open script file %s\n",scriptname); |
| 3163 | return -1; |
3198 | return -1; |
| 3164 | } |
3199 | } |
| 3165 | while (fgets(buf,MAX_PATHNAME_LEN,fp)!=NULL ) { |
3200 | while (fgets(buf,MAX_PATHNAME_LEN,fp)!=NULL ) { |
| 3166 | 3201 | ||
| 3167 | if (buf[0]!='#' && strlen(buf)>2) { |
3202 | if (buf[0]!='#' && strlen(buf)>2) { |
| 3168 | if (strstr(buf, "%RUN%")!=NULL) { |
3203 | if (strstr(buf, "%RUN%")!=NULL) { |
| 3169 |
|
3204 | char srun[16]; |
| 3170 |
|
3205 | sprintf(srun,"%04d",runno); |
| 3171 |
|
3206 | line = str_replace(buf,"%RUN%", srun); |
| 3172 | } else { |
- | |
| 3173 | line = buf; |
- | |
| 3174 | } |
3207 | } |
| - | 3208 | else { |
|
| - | 3209 | line = buf; |
|
| - | 3210 | } |
|
| 3175 | sa02Printf("#[%d] %s",strlen(buf),buf); |
3211 | sa02Printf("#[%d] %s",strlen(buf),buf); |
| 3176 | 3212 | ||
| 3177 | sscanf(line,"%s",type); |
3213 | sscanf(line,"%s",type); |
| 3178 | 3214 | ||
| 3179 | if (strstr(type,"SetCtrlVal")!=NULL) { |
3215 | if (strstr(type,"SetCtrlVal")!=NULL) { |
| 3180 | int pID; |
3216 | int pID; |
| 3181 | int rID; |
3217 | int rID; |
| 3182 | int datatype; |
3218 | int datatype; |
| 3183 | sscanf(line,"%*s%s%s",param,paramValue); |
3219 | sscanf(line,"%*s%s%s",param,paramValue); |
| 3184 | 3220 | ||
| 3185 | pID= GetPanelHandle(param); |
3221 | pID= GetPanelHandle(param); |
| 3186 | rID= GetControlID(param); |
3222 | rID= GetControlID(param); |
| 3187 | if (rID>0 && pID>0) { |
3223 | if (rID>0 && pID>0) { |
| 3188 | GetCtrlAttribute (pID, rID, ATTR_DATA_TYPE, &datatype); |
3224 | GetCtrlAttribute (pID, rID, ATTR_DATA_TYPE, &datatype); |
| 3189 | 3225 | ||
| 3190 | switch (datatype){ |
3226 | switch (datatype) { |
| - | 3227 | case VAL_INTEGER: |
|
| 3191 |
|
3228 | SetCtrlVal (pID, rID, atoi(paramValue)); |
| - | 3229 | break; |
|
| - | 3230 | case VAL_UNSIGNED_INTEGER: |
|
| 3192 |
|
3231 | SetCtrlVal (pID, rID, strtoul(paramValue,NULL,0)); |
| - | 3232 | break; |
|
| - | 3233 | case VAL_SHORT_INTEGER: |
|
| 3193 |
|
3234 | SetCtrlVal (pID, rID, atoi(paramValue)); |
| - | 3235 | break; |
|
| - | 3236 | case VAL_UNSIGNED_SHORT_INTEGER: |
|
| 3194 |
|
3237 | SetCtrlVal (pID, rID, strtoul(paramValue,NULL,0)); |
| - | 3238 | break; |
|
| - | 3239 | case VAL_DOUBLE : |
|
| 3195 |
|
3240 | SetCtrlVal (pID, rID, atof(paramValue)); |
| - | 3241 | break; |
|
| - | 3242 | case VAL_STRING : |
|
| 3196 |
|
3243 | SetCtrlVal (pID, rID, paramValue ); |
| - | 3244 | break; |
|
| - | 3245 | default: |
|
| 3197 |
|
3246 | sa02Printf("[%s] ATTR_DATA_TYPE of the %s not supported datatype %d p4h=%d\n\n", type, param, datatype, p4h); |
| 3198 | } |
3247 | } |
| 3199 | //sa02Printf("[%s] SetCtrlVal %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
3248 | //sa02Printf("[%s] SetCtrlVal %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
| - | 3249 | } |
|
| 3200 |
|
3250 | else { |
| 3201 |
|
3251 | sa02Printf("[%s] Invalid Ctrl %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
| 3202 | } |
3252 | } |
| - | 3253 | ||
| 3203 | 3254 | } |
|
| 3204 |
|
3255 | else if (strstr(type,"2D")!=NULL) { |
| 3205 | sscanf(line,"%*s%d%d%d%d%d%d%d%d%d%d%d%s",&scx,&nx,&xstep,&xmin,&scy,&ny,&ystep,&ymin,&direction,&nevents,&tresh,outputFileSuffix); |
3256 | sscanf(line,"%*s%d%d%d%d%d%d%d%d%d%d%d%s",&scx,&nx,&xstep,&xmin,&scy,&ny,&ystep,&ymin,&direction,&nevents,&tresh,outputFileSuffix); |
| 3206 | sprintf(test,"%d %d %d %d %d %d %d %d %d %d %d %s *\n",scx,nx,xstep,xmin,scy,ny,ystep,ymin,direction,nevents,tresh,outputFileSuffix); |
3257 | sprintf(test,"%d %d %d %d %d %d %d %d %d %d %d %s *\n",scx,nx,xstep,xmin,scy,ny,ystep,ymin,direction,nevents,tresh,outputFileSuffix); |
| 3207 | sa02Printf("%s *\n\n",test); |
3258 | sa02Printf("%s *\n\n",test); |
| 3208 | SetCtrlVal (p2h, P2_SCANUNITSX, scx); |
3259 | SetCtrlVal (p2h, P2_SCANUNITSX, scx); |
| 3209 | SetCtrlVal (p2h, P2_NX, nx); |
3260 | SetCtrlVal (p2h, P2_NX, nx); |
| Line 3223... | Line 3274... | ||
| 3223 | SetCtrlVal (p2h, P2_DFILE, outputFile); |
3274 | SetCtrlVal (p2h, P2_DFILE, outputFile); |
| 3224 | 3275 | ||
| 3225 | 3276 | ||
| 3226 | daq_scan(NULL); |
3277 | daq_scan(NULL); |
| 3227 | 3278 | ||
| - | 3279 | } |
|
| 3228 |
|
3280 | else if (strstr(type,"Delay")!=NULL) { |
| 3229 | int idelay=0; |
3281 | int idelay=0; |
| 3230 | sscanf(line,"%*s%s",paramValue); |
3282 | sscanf(line,"%*s%s",paramValue); |
| 3231 | for (idelay=atoi(paramValue) ; idelay>0; idelay--) { |
3283 | for (idelay=atoi(paramValue) ; idelay>0; idelay--) { |
| 3232 | Delay(1); |
3284 | Delay(1); |
| 3233 | SetCtrlVal(p1h, P1_DELAY, idelay); |
3285 | SetCtrlVal(p1h, P1_DELAY, idelay); |
| 3234 | ProcessSystemEvents(); |
3286 | ProcessSystemEvents(); |
| 3235 | if (ctrl_c) break; |
3287 | if (ctrl_c) break; |
| 3236 | } |
3288 | } |
| - | 3289 | } |
|
| 3237 |
|
3290 | else if (strstr(type,"ThresholdLinearity")!=NULL) { |
| 3238 | char *fname; |
3291 | char *fname; |
| 3239 | uint16_t mask = GetConnectedFebMask(); |
3292 | uint16_t mask = GetConnectedFebMask(); |
| 3240 | 3293 | ||
| 3241 | sscanf(line,"%*s%s",paramValue); |
3294 | sscanf(line,"%*s%s",paramValue); |
| 3242 | fname = paramValue; |
3295 | fname = paramValue; |
| 3243 | 3296 | ||
| 3244 | 3297 | ||
| 3245 | ThresholdLinearityCB (p1h, P1_THRVSADC, EVENT_COMMIT, NULL, 0, 0 ); |
3298 | ThresholdLinearityCB (p1h, P1_THRVSADC, EVENT_COMMIT, NULL, 0, 0 ); |
| 3246 | fpout = fopen(fname,"ab"); |
3299 | fpout = fopen(fname,"ab"); |
| 3247 | if(fpout) { |
3300 | if(fpout) { |
| 3248 | for (int board=0; board<4; board++) if ( mask &(1<<board)) H1DWrite2File(board,fpout); |
3301 | for (int board=0; board<4; board++) if ( mask &(1<<board)) H1DWrite2File(board,fpout); |
| 3249 | fclose(fpout); |
3302 | fclose(fpout); |
| 3250 | } |
3303 | } |
| 3251 | 3304 | ||
| - | 3305 | } |
|
| 3252 |
|
3306 | else if (strstr(type,"LaunchExecutable")!=NULL) { |
| 3253 | int index = FindPattern (line, 0, -1, "LaunchExecutable", 0, 0) + 17; |
3307 | int index = FindPattern (line, 0, -1, "LaunchExecutable", 0, 0) + 17; |
| 3254 | 3308 | ||
| 3255 | char *cmd = &line[index]; |
3309 | char *cmd = &line[index]; |
| 3256 | sa02Printf("cmd %d=%s\n",index, cmd); |
3310 | sa02Printf("cmd %d=%s\n",index, cmd); |
| 3257 | if (strlen(cmd)>0) LaunchExecutable( cmd ); |
3311 | if (strlen(cmd)>0) LaunchExecutable( cmd ); |
| - | 3312 | } |
|
| 3258 |
|
3313 | else if (strstr(type,"CAEN_V729")!=NULL) { |
| 3259 | char *fname; |
3314 | char *fname; |
| 3260 | //FILE *fpmon=NULL; |
3315 | //FILE *fpmon=NULL; |
| 3261 | 3316 | ||
| 3262 | sscanf(line,"%*s%s",paramValue); |
3317 | sscanf(line,"%*s%s",paramValue); |
| 3263 | fname=paramValue; |
3318 | fname=paramValue; |
| 3264 | 3319 | ||
| 3265 | fpout = fopen(fname,"ab"); |
3320 | fpout = fopen(fname,"ab"); |
| 3266 | if (fpout) { |
3321 | if (fpout) { |
| 3267 | 3322 | ||
| 3268 | V729_SetFilePointer(fpout); |
3323 | V729_SetFilePointer(fpout); |
| 3269 | V729_daq(NULL); |
3324 | V729_daq(NULL); |
| 3270 | fclose(fpout); |
3325 | fclose(fpout); |
| 3271 | } |
3326 | } |
| - | 3327 | } |
|
| 3272 |
|
3328 | else if (strstr(type,"HvMonitor")!=NULL) { |
| 3273 | int nrepetitions; |
3329 | int nrepetitions; |
| 3274 | int delaytime; |
3330 | int delaytime; |
| 3275 | int k=0; |
3331 | int k=0; |
| 3276 | FILE *fpmon=NULL; |
3332 | FILE *fpmon=NULL; |
| 3277 | sscanf(line,"%*s%s%d%d",paramValue, &delaytime, &nrepetitions ); |
3333 | sscanf(line,"%*s%s%d%d",paramValue, &delaytime, &nrepetitions ); |
| 3278 | fpmon = fopen(paramValue,"ab"); |
3334 | fpmon = fopen(paramValue,"ab"); |
| 3279 | 3335 | ||
| 3280 | if ( fpmon ) { |
3336 | if ( fpmon ) { |
| 3281 | hvmonFirst = 0; |
3337 | hvmonFirst = 0; |
| 3282 | for (k=0; k<nrepetitions; k++) { |
3338 | for (k=0; k<nrepetitions; k++) { |
| 3283 | double thv0,thv1; |
3339 | double thv0,thv1; |
| 3284 | thv0 = Timer(); |
3340 | thv0 = Timer(); |
| 3285 | GetHvMonitor(); |
3341 | GetHvMonitor(); |
| 3286 | for (int board=0;board<4;board++){ |
3342 | for (int board=0; board<4; board++) { |
| 3287 | double sdata[12]; |
3343 | double sdata[12]; |
| 3288 | for (int k=0;k<6;k++){ |
3344 | for (int k=0; k<6; k++) { |
| 3289 |
|
3345 | sdata[k] = monrec.imon[k+4*board]; |
| 3290 |
|
3346 | sdata[k+6] = 0; |
| 3291 | } |
3347 | } |
| 3292 | 3348 | ||
| 3293 | SetAxisScalingMode (p1h, chart_control[board], VAL_LEFT_YAXIS, VAL_AUTOSCALE, 0, 1); |
3349 | SetAxisScalingMode (p1h, chart_control[board], VAL_LEFT_YAXIS, VAL_AUTOSCALE, 0, 1); |
| 3294 | SetAxisScalingMode (p1h, chart_control[board], VAL_RIGHT_YAXIS, VAL_AUTOSCALE, 0, 1); |
3350 | SetAxisScalingMode (p1h, chart_control[board], VAL_RIGHT_YAXIS, VAL_AUTOSCALE, 0, 1); |
| 3295 | PlotStripChart (p1h, chart_control[board], sdata, 12, 0, 0, VAL_DOUBLE); |
3351 | PlotStripChart (p1h, chart_control[board], sdata, 12, 0, 0, VAL_DOUBLE); |
| 3296 | } |
3352 | } |
| 3297 | monrec.id = MONREC_ID; |
3353 | monrec.id = MONREC_ID; |
| 3298 | monrec.len = sizeof(monrec); |
3354 | monrec.len = sizeof(monrec); |
| 3299 | thv1=Timer(); |
3355 | thv1=Timer(); |
| 3300 | status = (int) fwrite( &monrec, 1, sizeof(monrec),fpmon); |
3356 | status = (int) fwrite( &monrec, 1, sizeof(monrec),fpmon); |
| 3301 | sa02Printf("[%04d] HvMonitor dt= %f s status=%d\n", runno, thv1-thv0, status ); |
3357 | sa02Printf("[%04d] HvMonitor dt= %f s status=%d\n", runno, thv1-thv0, status ); |
| 3302 | for (int idelay=delaytime ; idelay>0; idelay--) { |
3358 | for (int idelay=delaytime ; idelay>0; idelay--) { |
| 3303 | Delay(1); |
3359 | Delay(1); |
| 3304 | SetCtrlVal(p1h, P1_DELAY, idelay); |
3360 | SetCtrlVal(p1h, P1_DELAY, idelay); |
| 3305 | ProcessSystemEvents(); |
3361 | ProcessSystemEvents(); |
| 3306 | if (ctrl_c) break; |
3362 | if (ctrl_c) break; |
| 3307 | } |
3363 | } |
| 3308 | if (ctrl_c) break; |
3364 | if (ctrl_c) break; |
| 3309 | } |
3365 | } |
| 3310 | fclose(fpmon); |
3366 | fclose(fpmon); |
| - | 3367 | } |
|
| 3311 |
|
3368 | else { |
| 3312 | sa02Printf("%s cannot open file %s\n",param, paramValue ); |
3369 | sa02Printf("%s cannot open file %s\n",param, paramValue ); |
| 3313 | } |
3370 | } |
| 3314 | 3371 | ||
| - | 3372 | } |
|
| 3315 |
|
3373 | else if (strstr(type,"GetRunNumberFromFile")!=NULL) { |
| 3316 | sscanf(line,"%*s%s",paramValue); |
3374 | sscanf(line,"%*s%s",paramValue); |
| 3317 | runno = GetRunNumberFromFile(paramValue); |
3375 | runno = GetRunNumberFromFile(paramValue); |
| 3318 | SetCtrlVal(p1h, P1_RUNNO, runno); |
3376 | SetCtrlVal(p1h, P1_RUNNO, runno); |
| 3319 | sa02Printf("%s %s run=>%d\n",type, paramValue, runno ); |
3377 | sa02Printf("%s %s run=>%d\n",type, paramValue, runno ); |
| - | 3378 | } |
|
| 3320 |
|
3379 | else if (strstr(type,"IncreaseNumberInFile")!=NULL) { |
| 3321 | sscanf(line,"%*s%s",paramValue); |
3380 | sscanf(line,"%*s%s",paramValue); |
| 3322 | runno = IncreaseRunNumberInFile(paramValue); |
3381 | runno = IncreaseRunNumberInFile(paramValue); |
| 3323 | sa02Printf("%s %s run=>%d\n",type, paramValue, runno ); |
3382 | sa02Printf("%s %s run=>%d\n",type, paramValue, runno ); |
| 3324 | SetCtrlVal(p1h, P1_RUNNO, runno); |
3383 | SetCtrlVal(p1h, P1_RUNNO, runno); |
| - | 3384 | } |
|
| 3325 |
|
3385 | else if (strstr(type,"LoadParameters")!=NULL) { |
| 3326 | LoadParameters(p3h, P3_LOADPAR,EVENT_COMMIT,NULL,0,0); |
3386 | LoadParameters(p3h, P3_LOADPAR,EVENT_COMMIT,NULL,0,0); |
| 3327 | sa02Printf("Loading parameters *\n\n"); |
3387 | sa02Printf("Loading parameters *\n\n"); |
| - | 3388 | } |
|
| 3328 |
|
3389 | else if (strstr(type,"QueueUserEvent")!=NULL || strstr(type,"ProcessUserEvent")!=NULL) { |
| 3329 | char scontrol[0xFF]; |
3390 | char scontrol[0xFF]; |
| 3330 | int panelHandle=0; |
3391 | int panelHandle=0; |
| 3331 | int controlID; |
3392 | int controlID; |
| 3332 | sscanf(line,"%*s%s",scontrol); |
3393 | sscanf(line,"%*s%s",scontrol); |
| 3333 | panelHandle = GetPanelHandle(scontrol); |
3394 | panelHandle = GetPanelHandle(scontrol); |
| 3334 | controlID = GetControlID(scontrol); |
3395 | controlID = GetControlID(scontrol); |
| 3335 | sa02Printf("UserEvent %s panelHandle %d controlID %d\n",scontrol, panelHandle, controlID ); |
3396 | sa02Printf("UserEvent %s panelHandle %d controlID %d\n",scontrol, panelHandle, controlID ); |
| 3336 | if (panelHandle>=0 && controlID >=0 ) { |
3397 | if (panelHandle>=0 && controlID >=0 ) { |
| 3337 | if (strstr(type,"ProcessUserEvent")!=NULL) { |
3398 | if (strstr(type,"ProcessUserEvent")!=NULL) { |
| 3338 | ProcessUserEvent(panelHandle, controlID,0); |
3399 | ProcessUserEvent(panelHandle, controlID,0); |
| - | 3400 | } |
|
| 3339 |
|
3401 | else { |
| 3340 | data[1] = controlID; |
3402 | data[1] = controlID; |
| 3341 | data[0] = panelHandle; |
3403 | data[0] = panelHandle; |
| 3342 | 3404 | ||
| 3343 | status = CmtWriteTSQData (pTSQ, data, 1, TSQ_INFINITE_TIMEOUT, NULL); |
3405 | status = CmtWriteTSQData (pTSQ, data, 1, TSQ_INFINITE_TIMEOUT, NULL); |
| 3344 | } |
3406 | } |
| 3345 | } |
3407 | } |
| 3346 | 3408 | ||
| - | 3409 | } |
|
| 3347 |
|
3410 | else if (strstr(type,"SetPositionAndMux")!=NULL) { |
| 3348 | int ix,iy; |
3411 | int ix,iy; |
| 3349 | sscanf(line,"%*s%d%d",&ix,&iy); |
3412 | sscanf(line,"%*s%d%d",&ix,&iy); |
| 3350 | sa02Printf("SetPositionAndMux %d %d \n", ix,iy); |
3413 | sa02Printf("SetPositionAndMux %d %d \n", ix,iy); |
| 3351 | 3414 | ||
| 3352 | SetCtrlVal (p2h, P2_CHX, ix); |
3415 | SetCtrlVal (p2h, P2_CHX, ix); |
| 3353 | SetCtrlVal (p2h, P2_CHY, iy); |
3416 | SetCtrlVal (p2h, P2_CHY, iy); |
| 3354 | SetPositionAndMux( p2h,0, EVENT_COMMIT , NULL,0,0); |
3417 | SetPositionAndMux( p2h,0, EVENT_COMMIT , NULL,0,0); |
| 3355 | 3418 | ||
| - | 3419 | } |
|
| 3356 |
|
3420 | else if (strstr(type,"Treshold")!=NULL) { |
| 3357 | sscanf(line,"%*s%s",outputFileSuffix); |
3421 | sscanf(line,"%*s%s",outputFileSuffix); |
| 3358 | 3422 | ||
| 3359 | GetCtrlVal (p1h, P1_SERIAL_1, HAPDserialNumber); |
3423 | GetCtrlVal (p1h, P1_SERIAL_1, HAPDserialNumber); |
| 3360 | sprintf(outputFile,"%s_%s.dat", HAPDserialNumber, outputFileSuffix); |
3424 | sprintf(outputFile,"%s_%s.dat", HAPDserialNumber, outputFileSuffix); |
| 3361 | SetCtrlVal (p1h, P1_OUTPUTFILE, outputFile); |
3425 | SetCtrlVal (p1h, P1_OUTPUTFILE, outputFile); |
| 3362 | 3426 | ||
| 3363 | sprintf(test,"Treshold scan to file %s",outputFile); |
3427 | sprintf(test,"Treshold scan to file %s",outputFile); |
| 3364 | sa02Printf("%s *\n\n", test); |
3428 | sa02Printf("%s *\n\n", test); |
| 3365 | 3429 | ||
| 3366 | daq(NULL); |
3430 | daq(NULL); |
| - | 3431 | } |
|
| 3367 |
|
3432 | else if (strstr(type,"Fitanje")!=NULL) { |
| 3368 | FitH2DCoarse(p3h, P3_CALIBRATION_2,EVENT_COMMIT,NULL,0,0); |
3433 | FitH2DCoarse(p3h, P3_CALIBRATION_2,EVENT_COMMIT,NULL,0,0); |
| 3369 | sa02Printf("Coarse fit parameters *\n\n"); |
3434 | sa02Printf("Coarse fit parameters *\n\n"); |
| - | 3435 | } |
|
| 3370 |
|
3436 | else if (strstr(type,"UploadChannelParameters")!=NULL) { |
| 3371 | UploadChannelParameters(p3h, P3_CPARLOAD,EVENT_COMMIT,NULL,0,0); |
3437 | UploadChannelParameters(p3h, P3_CPARLOAD,EVENT_COMMIT,NULL,0,0); |
| 3372 | sa02Printf("Loading channel parameters *\n\n"); |
3438 | sa02Printf("Loading channel parameters *\n\n"); |
| - | 3439 | } |
|
| 3373 |
|
3440 | else if (strstr(type,"KalibracijaMizice")!=NULL) { |
| 3374 | SetHome(p2h, P2_HO,EVENT_COMMIT,NULL,0,0); |
3441 | SetHome(p2h, P2_HO,EVENT_COMMIT,NULL,0,0); |
| 3375 | SetCtrlVal(p2h,P2_XC,gCENTER_X); |
3442 | SetCtrlVal(p2h,P2_XC,gCENTER_X); |
| 3376 | SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
3443 | SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
| 3377 | sa02Printf("Calibration *\n\n"); |
3444 | sa02Printf("Calibration *\n\n"); |
| - | 3445 | } |
|
| 3378 |
|
3446 | else if (strstr(type,"LaserHVOn")!=NULL) { |
| 3379 | set_dac(1); |
3447 | set_dac(1); |
| 3380 | sa02Printf("Low intensity laser *\n\n"); |
3448 | sa02Printf("Low intensity laser *\n\n"); |
| - | 3449 | } |
|
| 3381 |
|
3450 | else if (strstr(type,"LaserHVOff")!=NULL) { |
| 3382 | set_dac(0); |
3451 | set_dac(0); |
| 3383 | sa02Printf("High intensity laser *\n\n"); |
3452 | sa02Printf("High intensity laser *\n\n"); |
| - | 3453 | } |
|
| 3384 |
|
3454 | else if (strstr(type,"Gain")!=NULL) { |
| 3385 | sscanf(line,"%*s%d",paramValue); |
3455 | sscanf(line,"%*s%d",paramValue); |
| 3386 | sprintf(test," %d", atoi(paramValue)); |
3456 | sprintf(test," %d", atoi(paramValue)); |
| 3387 | sa02Printf("%s *\n\n", test); |
3457 | sa02Printf("%s *\n\n", test); |
| 3388 | changeGlobalParam(12, atoi(paramValue)); // Global parameter Gain has ID 12 |
3458 | changeGlobalParam(12, atoi(paramValue)); // Global parameter Gain has ID 12 |
| - | 3459 | } |
|
| 3389 |
|
3460 | else if (strstr(type,"ShapingTime")!=NULL) { |
| 3390 | sscanf(line,"%*s%s",paramValue); |
3461 | sscanf(line,"%*s%s",paramValue); |
| 3391 | sprintf(test," %d", atoi(paramValue)); |
3462 | sprintf(test," %d", atoi(paramValue)); |
| 3392 | sa02Printf("%s *\n\n", test); |
3463 | sa02Printf("%s *\n\n", test); |
| 3393 | changeGlobalParam(13, atoi(paramValue)); // Global parameter ShapingTime has ID 13 |
3464 | changeGlobalParam(13, atoi(paramValue)); // Global parameter ShapingTime has ID 13 |
| 3394 | } |
3465 | } |
| Line 3623... | Line 3694... | ||
| 3623 | GetTableSelection (p3h, P3_GREG, &trange); |
3694 | GetTableSelection (p3h, P3_GREG, &trange); |
| 3624 | if ((trange.top!=0)&&(trange.left!=0)) { |
3695 | if ((trange.top!=0)&&(trange.left!=0)) { |
| 3625 | imin= trange.top - 1; |
3696 | imin= trange.top - 1; |
| 3626 | imax= imin + trange.height; |
3697 | imax= imin + trange.height; |
| 3627 | 3698 | ||
| - | 3699 | } |
|
| 3628 |
|
3700 | else { |
| 3629 | if (!GetActiveTableCell(p3h, P3_GREG, &cell)) { |
3701 | if (!GetActiveTableCell(p3h, P3_GREG, &cell)) { |
| 3630 | imin = cell.y-1; |
3702 | imin = cell.y-1; |
| 3631 | imax = imin; |
3703 | imax = imin; |
| - | 3704 | } |
|
| 3632 |
|
3705 | else return 0; |
| 3633 | } |
3706 | } |
| - | 3707 | } |
|
| 3634 |
|
3708 | else { |
| 3635 | imin=0; |
3709 | imin=0; |
| 3636 | imax=4*4; |
3710 | imax=4*4; |
| 3637 | } |
3711 | } |
| 3638 | 3712 | ||
| 3639 | for (i=imin; i<imax; i++) { |
3713 | for (i=imin; i<imax; i++) { |
| Line 3697... | Line 3771... | ||
| 3697 | state = GetTableSelection (p3h, P3_CREG, &trange); |
3771 | state = GetTableSelection (p3h, P3_CREG, &trange); |
| 3698 | if ((trange.top!=0)&&(trange.left!=0)) { |
3772 | if ((trange.top!=0)&&(trange.left!=0)) { |
| 3699 | imin= trange.top-1; |
3773 | imin= trange.top-1; |
| 3700 | imax= imin + trange.height; |
3774 | imax= imin + trange.height; |
| 3701 | 3775 | ||
| - | 3776 | } |
|
| 3702 |
|
3777 | else { |
| 3703 | if (!GetActiveTableCell(p3h, P3_CREG, &cell)) { |
3778 | if (!GetActiveTableCell(p3h, P3_CREG, &cell)) { |
| 3704 | imin = cell.y-1; |
3779 | imin = cell.y-1; |
| 3705 | imax = imin+1; |
3780 | imax = imin+1; |
| - | 3781 | } |
|
| 3706 |
|
3782 | else return 0; |
| 3707 | } |
3783 | } |
| - | 3784 | } |
|
| 3708 |
|
3785 | else if ((panel==p1h)&&(control==P1_CHPARLOAD)) { |
| 3709 | GetCtrlVal(p1h,P1_NSLIX,&imin); |
3786 | GetCtrlVal(p1h,P1_NSLIX,&imin); |
| 3710 | imax=imin+1; |
3787 | imax=imin+1; |
| - | 3788 | } |
|
| 3711 |
|
3789 | else { |
| 3712 | imin=0; |
3790 | imin=0; |
| 3713 | imax=144*4; |
3791 | imax=144*4; |
| 3714 | } |
3792 | } |
| 3715 | 3793 | ||
| 3716 | for (i=imin; i<imax; i++) { |
3794 | for (i=imin; i<imax; i++) { |
| Line 3743... | Line 3821... | ||
| 3743 | if (ctrl_c) { |
3821 | if (ctrl_c) { |
| 3744 | break; |
3822 | break; |
| 3745 | } |
3823 | } |
| 3746 | } |
3824 | } |
| 3747 | sa02Printf("Channel Parameters Uploaded to the ASICs\n"); |
3825 | sa02Printf("Channel Parameters Uploaded to the ASICs\n"); |
| 3748 | 3826 | ||
| 3749 | } |
3827 | } |
| 3750 | SetCtrlAttribute (panel, control, ATTR_DIMMED, 0); |
3828 | SetCtrlAttribute (panel, control, ATTR_DIMMED, 0); |
| 3751 | break; |
3829 | break; |
| 3752 | } |
3830 | } |
| 3753 | return 0; |
3831 | return 0; |
| 3754 | } |
3832 | } |
| 3755 | 3833 | ||
| 3756 | int CVICALLBACK UploadFPGAParameters (int panel, int control, int event, |
3834 | int CVICALLBACK UploadFPGAParameters (int panel, int control, int event, |
| 3757 | void *callbackData, int eventData1, int eventData2) { |
3835 | void *callbackData, int eventData1, int eventData2) { |
| 3758 | 3836 | ||
| 3759 | int n=0; |
3837 | int n=0; |
| 3760 | int i=0; |
3838 | int i=0; |
| Line 3765... | Line 3843... | ||
| 3765 | char cmd[NDIM]; |
3843 | char cmd[NDIM]; |
| 3766 | char sasic[NDIM]; |
3844 | char sasic[NDIM]; |
| 3767 | uint32_t sa02code; |
3845 | uint32_t sa02code; |
| 3768 | uint32_t board; |
3846 | uint32_t board; |
| 3769 | uint32_t response[2]= {0,0}; |
3847 | uint32_t response[2]= {0,0}; |
| 3770 | 3848 | ||
| 3771 | switch (event) { |
3849 | switch (event) { |
| 3772 | case EVENT_COMMIT: { |
3850 | case EVENT_COMMIT: { |
| 3773 | uint16_t mask=GetConnectedFebMask(); |
3851 | uint16_t mask=GetConnectedFebMask(); |
| 3774 | SetCtrlAttribute (panel, control, ATTR_DIMMED, 1); |
3852 | SetCtrlAttribute (panel, control, ATTR_DIMMED, 1); |
| 3775 | 3853 | ||
| 3776 | GetNumTextBoxLines(p3h, P3_FPGAPAR,&n); |
3854 | GetNumTextBoxLines(p3h, P3_FPGAPAR,&n); |
| Line 3782... | Line 3860... | ||
| 3782 | if (strcmp(cmd,"MUXASIC")==0) { |
3860 | if (strcmp(cmd,"MUXASIC")==0) { |
| 3783 | asic = sa02MuxMap(asic); |
3861 | asic = sa02MuxMap(asic); |
| 3784 | } |
3862 | } |
| 3785 | for (board = 0; board < 4; board ++) if ( mask & (1 << board) ) sa02Cmd(board,sa02code, asic, 0, 0, 2,response); |
3863 | for (board = 0; board < 4; board ++) if ( mask & (1 << board) ) sa02Cmd(board,sa02code, asic, 0, 0, 2,response); |
| 3786 | sa02Printf("%s\n",buf); |
3864 | sa02Printf("%s\n",buf); |
| 3787 | } |
3865 | } |
| 3788 | sa02Printf("FPGA Parameters Uploaded to FEBS\n"); |
3866 | sa02Printf("FPGA Parameters Uploaded to FEBS\n"); |
| 3789 | SetCtrlAttribute (panel, control, ATTR_DIMMED, 0); |
3867 | SetCtrlAttribute (panel, control, ATTR_DIMMED, 0); |
| 3790 | break; |
3868 | break; |
| 3791 | } |
3869 | } |
| 3792 | } |
3870 | } |
| 3793 | return 0; |
3871 | return 0; |
| 3794 | } |
3872 | } |
| 3795 | 3873 | ||
| 3796 | int CVICALLBACK SetSelectionToVal (int panel, int control, int event, |
3874 | int CVICALLBACK SetSelectionToVal (int panel, int control, int event, |
| 3797 | void *callbackData, int eventData1, int eventData2) { |
3875 | void *callbackData, int eventData1, int eventData2) { |
| 3798 | int state, input_cid=-1,output_cid=-1; |
3876 | int state, input_cid=-1,output_cid=-1; |
| 3799 | Rect trange; |
3877 | Rect trange; |
| 3800 | unsigned short value; |
3878 | unsigned short value; |
| Line 3813... | Line 3891... | ||
| 3813 | } |
3891 | } |
| 3814 | state = GetTableSelection (p3h, output_cid, &trange); |
3892 | state = GetTableSelection (p3h, output_cid, &trange); |
| 3815 | if ((trange.top!=0)&&(trange.left!=0)) { |
3893 | if ((trange.top!=0)&&(trange.left!=0)) { |
| 3816 | GetCtrlVal(p3h,input_cid, &value); |
3894 | GetCtrlVal(p3h,input_cid, &value); |
| 3817 | state = FillTableCellRange (p3h, output_cid, trange, value); |
3895 | state = FillTableCellRange (p3h, output_cid, trange, value); |
| 3818 | } |
3896 | } |
| 3819 | break; |
3897 | break; |
| 3820 | } |
3898 | } |
| 3821 | return 0; |
3899 | return 0; |
| 3822 | } |
3900 | } |
| 3823 | 3901 | ||
| Line 3826... | Line 3904... | ||
| 3826 | int cid[4]= {P3_MUX0,P3_MUX1,P3_MUX2,P3_MUX3}; |
3904 | int cid[4]= {P3_MUX0,P3_MUX1,P3_MUX2,P3_MUX3}; |
| 3827 | int id=0,i; |
3905 | int id=0,i; |
| 3828 | uint32_t sa02code; |
3906 | uint32_t sa02code; |
| 3829 | uint32_t board; |
3907 | uint32_t board; |
| 3830 | uint32_t response[2]= {0,0}; |
3908 | uint32_t response[2]= {0,0}; |
| 3831 | 3909 | ||
| 3832 | switch (event) { |
3910 | switch (event) { |
| 3833 | case EVENT_COMMIT: |
3911 | case EVENT_COMMIT: |
| 3834 | 3912 | ||
| 3835 | switch (control) { |
3913 | switch (control) { |
| 3836 | case P3_MUX0: |
3914 | case P3_MUX0: |
| 3837 | id=0; |
3915 | id=0; |
| Line 3858... | Line 3936... | ||
| 3858 | if (id!= i) { |
3936 | if (id!= i) { |
| 3859 | SetCtrlVal(panel,cid[i],0); |
3937 | SetCtrlVal(panel,cid[i],0); |
| 3860 | } |
3938 | } |
| 3861 | } |
3939 | } |
| 3862 | sa02Printf("MUX %d\n",id); |
3940 | sa02Printf("MUX %d\n",id); |
| 3863 | break; |
3941 | break; |
| 3864 | } |
3942 | } |
| 3865 | return 0; |
3943 | return 0; |
| 3866 | } |
3944 | } |
| 3867 | 3945 | ||
| 3868 | int CVICALLBACK UploadFromPanels (int panel, int control, int event, |
3946 | int CVICALLBACK UploadFromPanels (int panel, int control, int event, |
| 3869 | void *callbackData, int eventData1, int eventData2) { |
3947 | void *callbackData, int eventData1, int eventData2) { |
| 3870 | switch (event) { |
3948 | switch (event) { |
| 3871 | case EVENT_COMMIT: |
3949 | case EVENT_COMMIT: |
| 3872 | UploadFPGAParameters(panel,control,event,callbackData,eventData1,eventData2); |
3950 | UploadFPGAParameters(panel,control,event,callbackData,eventData1,eventData2); |
| 3873 | UploadChannelParameters(panel,control,event,callbackData,eventData1,eventData2); |
3951 | UploadChannelParameters(panel,control,event,callbackData,eventData1,eventData2); |
| 3874 | UploadGlobalParameters(panel,control,event,callbackData,eventData1,eventData2); |
3952 | UploadGlobalParameters(panel,control,event,callbackData,eventData1,eventData2); |
| 3875 | break; |
3953 | break; |
| 3876 | } |
3954 | } |
| 3877 | return 0; |
3955 | return 0; |
| 3878 | } |
3956 | } |
| 3879 | 3957 | ||
| 3880 | double erf(double x, double par[], int npar) { |
3958 | double erf(double x, double par[], int npar) { |
| 3881 | double y=0; |
3959 | double y=0; |
| 3882 | double x0= (x-par[0])*par[1]; |
3960 | double x0= (x-par[0])*par[1]; |
| 3883 | Erf(x0,&y); |
3961 | Erf(x0,&y); |
| 3884 | return (y); |
3962 | return (y); |
| 3885 | } |
3963 | } |
| 3886 | 3964 | ||
| 3887 | int CVICALLBACK FitH2D (int panel, int control, int event, |
3965 | int CVICALLBACK FitH2D (int panel, int control, int event, |
| 3888 | void *callbackData, int eventData1, int eventData2) { |
3966 | void *callbackData, int eventData1, int eventData2) { |
| 3889 | char name[MAX_PATHNAME_LEN]; |
3967 | char name[MAX_PATHNAME_LEN]; |
| 3890 | 3968 | ||
| Line 3892... | Line 3970... | ||
| 3892 | case EVENT_COMMIT: { |
3970 | case EVENT_COMMIT: { |
| 3893 | //sprintf(name ,"C:\\root\\bin\\root.exe"); |
3971 | //sprintf(name ,"C:\\root\\bin\\root.exe"); |
| 3894 | int status; |
3972 | int status; |
| 3895 | char dfile[MAX_PATHNAME_LEN]; |
3973 | char dfile[MAX_PATHNAME_LEN]; |
| 3896 | char efile[MAX_PATHNAME_LEN]; |
3974 | char efile[MAX_PATHNAME_LEN]; |
| 3897 | 3975 | ||
| 3898 | status = FileSelectPopup ("data", "*.th2d", ".th2d", |
3976 | status = FileSelectPopup ("data", "*.th2d", ".th2d", |
| 3899 | "Izberi datoteko s histogramom", |
3977 | "Izberi datoteko s histogramom", |
| 3900 | VAL_LOAD_BUTTON, 0, 0, 1, 0, efile); |
3978 | VAL_LOAD_BUTTON, 0, 0, 1, 0, efile); |
| 3901 | EscapeString(efile,dfile); |
3979 | EscapeString(efile,dfile); |
| 3902 | sprintf(name ,"C:/root/bin/root.exe ../macros/sa02fit.cxx(\\\"%s\\\")", dfile); |
3980 | sprintf(name ,"C:/root/bin/root.exe ../macros/sa02fit.cxx(\\\"%s\\\")", dfile); |
| 3903 | 3981 | ||
| 3904 | 3982 | ||
| 3905 | 3983 | ||
| 3906 | sa02Printf("%s\n",name); |
3984 | sa02Printf("%s\n",name); |
| 3907 | 3985 | ||
| 3908 | LaunchExecutable(name); |
3986 | LaunchExecutable(name); |
| 3909 | 3987 | ||
| 3910 | 3988 | ||
| 3911 | } |
3989 | } |
| 3912 | break; |
3990 | break; |
| 3913 | } |
3991 | } |
| 3914 | return 0; |
3992 | return 0; |
| 3915 | } |
3993 | } |
| Line 3918... | Line 3996... | ||
| 3918 | 3996 | ||
| 3919 | int ix= (int)x; |
3997 | int ix= (int)x; |
| 3920 | if (x>0) { |
3998 | if (x>0) { |
| 3921 | if (x - ix > 0.5 ) { |
3999 | if (x - ix > 0.5 ) { |
| 3922 | return ix+1; |
4000 | return ix+1; |
| - | 4001 | } |
|
| 3923 |
|
4002 | else { |
| 3924 | return ix; |
4003 | return ix; |
| 3925 | } |
4004 | } |
| - | 4005 | } |
|
| 3926 |
|
4006 | else { |
| 3927 | if (x - ix < -0.5 ) { |
4007 | if (x - ix < -0.5 ) { |
| 3928 | return ix-1; |
4008 | return ix-1; |
| - | 4009 | } |
|
| 3929 |
|
4010 | else { |
| 3930 | return ix; |
4011 | return ix; |
| 3931 | } |
4012 | } |
| 3932 | } |
4013 | } |
| 3933 | 4014 | ||
| 3934 | 4015 | ||
| Line 3997... | Line 4078... | ||
| 3997 | 4078 | ||
| 3998 | for (i=0; i<fNpoints; i++) { |
4079 | for (i=0; i<fNpoints; i++) { |
| 3999 | sumwx += fX[i]* fY[i]; |
4080 | sumwx += fX[i]* fY[i]; |
| 4000 | sumw += fY[i]; |
4081 | sumw += fY[i]; |
| 4001 | sumwx2 += fX[i]* fX[i]* fY[i]; |
4082 | sumwx2 += fX[i]* fX[i]* fY[i]; |
| 4002 | 4083 | ||
| 4003 | } |
4084 | } |
| 4004 | if (sumw <= 0) { |
4085 | if (sumw <= 0) { |
| 4005 | return 0; |
4086 | return 0; |
| 4006 | } |
4087 | } |
| 4007 | mean = sumwx/sumw; |
4088 | mean = sumwx/sumw; |
| 4008 | rms2 = fabs(sumwx2/sumw -mean*mean); |
4089 | rms2 = fabs(sumwx2/sumw -mean*mean); |
| Line 4088... | Line 4169... | ||
| 4088 | for (iy=0; iy < npt; iy++ ) { |
4169 | for (iy=0; iy < npt; iy++ ) { |
| 4089 | datay[iy] = H2DGetBinContent(h2,ix,iy); // /H2DGetMax(h2); |
4170 | datay[iy] = H2DGetBinContent(h2,ix,iy); // /H2DGetMax(h2); |
| 4090 | } |
4171 | } |
| 4091 | FitGraph(fitmode, npt, datax , datay, fpar); |
4172 | FitGraph(fitmode, npt, datax , datay, fpar); |
| 4092 | mean[ix]=fpar[0]; |
4173 | mean[ix]=fpar[0]; |
| 4093 | rms[ix] |
4174 | rms[ix]=fpar[1]; |
| 4094 | offset = offsets[ix*2]; |
4175 | offset = offsets[ix*2]; |
| 4095 | fineadj_unipol = offsets[ix*2+1]; |
4176 | fineadj_unipol = offsets[ix*2+1]; |
| 4096 | 4177 | ||
| 4097 | x = sa02getshift(offset, fineadj_unipol); |
4178 | x = sa02getshift(offset, fineadj_unipol); |
| 4098 | x += (mean0-(mean[ix]+rms0*rms[ix])); |
4179 | x += (mean0-(mean[ix]+rms0*rms[ix])); |
| Line 4171... | Line 4252... | ||
| 4171 | PCLK -> 0 -> CLK_IN (internal clock) |
4252 | PCLK -> 0 -> CLK_IN (internal clock) |
| 4172 | */ |
4253 | */ |
| 4173 | 4254 | ||
| 4174 | if (value==2) { |
4255 | if (value==2) { |
| 4175 | value=0x7600; |
4256 | value=0x7600; |
| - | 4257 | } |
|
| 4176 |
|
4258 | else { |
| 4177 | value=0; |
4259 | value=0; |
| 4178 | } |
4260 | } |
| 4179 | VME_A32D32_W(address+4,value); // enable outputs |
4261 | VME_A32D32_W(address+4,value); // enable outputs |
| 4180 | } |
4262 | } |
| 4181 | sa02Printf("SizeOf(Double)=%d\n",sizeof(double)); |
4263 | sa02Printf("SizeOf(Double)=%d\n",sizeof(double)); |
| Line 4304... | Line 4386... | ||
| 4304 | if (scanpar>10) { |
4386 | if (scanpar>10) { |
| 4305 | cid=P3_GREG; |
4387 | cid=P3_GREG; |
| 4306 | spar=scanpar-10; |
4388 | spar=scanpar-10; |
| 4307 | nch=4*4; |
4389 | nch=4*4; |
| 4308 | 4390 | ||
| - | 4391 | } |
|
| 4309 |
|
4392 | else { |
| 4310 | cid=P3_CREG; |
4393 | cid=P3_CREG; |
| 4311 | spar=scanpar; |
4394 | spar=scanpar; |
| 4312 | nch=144*4; |
4395 | nch=144*4; |
| 4313 | 4396 | ||
| 4314 | } |
4397 | } |
| Line 4506... | Line 4589... | ||
| 4506 | return 0; |
4589 | return 0; |
| 4507 | } |
4590 | } |
| 4508 | 4591 | ||
| 4509 | 4592 | ||
| 4510 | 4593 | ||
| 4511 | int ProcessUserEvent(int pID, int rID,int mode){ |
4594 | int ProcessUserEvent(int pID, int rID,int mode) { |
| 4512 |
|
4595 | ThreadFunctionPtr mythread = NULL; |
| 4513 |
|
4596 | if (pID ==p1h && rID == P1_DAQ ) mythread=daq; |
| 4514 |
|
4597 | if (pID ==p1h && rID == P1_READOUT ) mythread=daq_readonly; |
| 4515 |
|
4598 | if (pID ==p1h && rID == P1_FPGAWRITE ) mythread=MultiFpgaWrite; |
| 4516 |
|
4599 | if (pID ==p1h && rID == P1_MULTIFPGAWRITE ) mythread=MultiFpgaWrite; |
| 4517 |
|
4600 | if (pID ==p1h && rID == P1_TESTING ) mythread=Testing; |
| 4518 |
|
4601 | if (pID ==p2h && rID == P2_DAQ ) mythread=daq_scan; |
| 4519 |
|
4602 | if (pID ==p6h && rID == MINIRICH_START ) mythread=daq; |
| 4520 |
|
4603 | if (pID ==p2h && rID == P2_RUNSCRIPT ) { |
| 4521 |
|
4604 | char scriptname[MAX_PATHNAME_LEN] ; |
| 4522 | 4605 | ||
| 4523 |
|
4606 | int status = FileSelectPopup ("./scripts/", "*.txt", "*.txt", |
| 4524 |
|
4607 | "Select Script file", VAL_LOAD_BUTTON, 0, 0, |
| 4525 |
|
4608 | 1, 0, scriptname); |
| 4526 |
|
4609 | if (status) { |
| 4527 |
|
4610 | SetCtrlVal(p1h, P1_SCRIPTNAME, scriptname ); |
| 4528 |
|
4611 | mythread=run_script; |
| 4529 | } |
- | |
| 4530 | } |
4612 | } |
| - | 4613 | } |
|
| 4531 |
|
4614 | if (pID ==p1h && rID == P1_RUNSCRIPT ) mythread=run_script; |
| 4532 |
|
4615 | if (pID ==p3h && rID == P3_DAQ ) mythread=daq_scanpar; |
| 4533 |
|
4616 | if (pID ==p4h && rID == P4_DAQ ) mythread=V729_daq; |
| 4534 |
|
4617 | if (mythread!=NULL) { |
| 4535 |
|
4618 | sa02Printf("New Thread panel=%d button=%d\n", pID, rID); |
| 4536 |
|
4619 | ctrl_c=0; |
| 4537 |
|
4620 | daq_on = 1; |
| 4538 |
|
4621 | SetDimming(1); |
| 4539 |
|
4622 | if (mode) { |
| 4540 |
|
4623 | CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &rID, |
| 4541 | DEFAULT_THREAD_PRIORITY, |
4624 | DEFAULT_THREAD_PRIORITY, |
| 4542 | EndOfThread, |
4625 | EndOfThread, |
| 4543 | EVENT_TP_THREAD_FUNCTION_END, |
4626 | EVENT_TP_THREAD_FUNCTION_END, |
| 4544 | NULL, RUN_IN_SCHEDULED_THREAD, |
4627 | NULL, RUN_IN_SCHEDULED_THREAD, |
| 4545 | &tfID); |
4628 | &tfID); |
| 4546 | } else { |
- | |
| 4547 | mythread(NULL); |
- | |
| 4548 | } |
- | |
| 4549 | } |
- | |
| 4550 | - | ||
| 4551 | if ( pID==p1h && rID == P1_SLOWC ) { |
- | |
| 4552 | uint32_t board; |
- | |
| 4553 | GetCtrlVal(p1h,P1_BOARDNUMBER, &board); |
- | |
| 4554 | SlowControl(board, NULL); |
- | |
| 4555 | } |
- | |
| 4556 | // if ( pID==p1h && rID == P1_STEPONE ) StepOne(); |
- | |
| 4557 | if ( pID==p1h && rID == P1_FEBTESTANA ) FebTestAna(); |
- | |
| 4558 | if ( pID==p1h && rID == P1_TEST ) FebTest(); |
- | |
| 4559 | if ( pID==p1h && rID == P1_MODULETEST ) ModuleTest(); |
- | |
| 4560 | - | ||
| 4561 | if ( pID==p1h && rID == P1_GET_FPGA_SERIAL ) { |
- | |
| 4562 | int ison=0; |
- | |
| 4563 | GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
- | |
| 4564 | for (int board=0; board<4; board++) { |
- | |
| 4565 | char saddress[0xff]=""; |
- | |
| 4566 | GetCtrlVal(p1h, hapd_onoff[board], &ison); |
- | |
| 4567 | sa02GetSerial(board, saddress); |
- | |
| 4568 | sa02Printf("SERIAL FPGA = %s \n", saddress); |
- | |
| 4569 | SetCtrlVal(p1h,fpga_serials[board],saddress); |
- | |
| 4570 | } |
- | |
| 4571 | }; |
- | |
| 4572 | - | ||
| 4573 | if ( ( pID==p1h && rID == P1_STOP ) |
- | |
| 4574 | || ( pID==p2h && rID == P2_STOP ) |
- | |
| 4575 | || ( pID==p3h && rID == P3_STOP ) |
- | |
| 4576 | || ( pID==p6h && rID == MINIRICH_STOP ) |
- | |
| 4577 | || ( pID==p4h && rID == P4_STOP ) ) { |
- | |
| 4578 | sa02Printf("Stopping the Thread %d\n", tfID); |
- | |
| 4579 | ctrl_c=1; |
- | |
| 4580 | } |
4629 | } |
| 4581 |
|
4630 | else { |
| 4582 | if (rID == P5_SET_DAC_HV_ON) set_dac(1); |
- | |
| 4583 | if (rID == P5_SET_DAC_HV_OFF) set_dac(0); |
- | |
| 4584 |
|
4631 | mythread(NULL); |
| 4585 | if (rID == P5_SET_HV_OFF) set_hv(0); |
- | |
| 4586 | } |
4632 | } |
| - | 4633 | } |
|
| - | 4634 | ||
| - | 4635 | if ( pID==p1h && rID == P1_SLOWC ) { |
|
| - | 4636 | uint32_t board; |
|
| - | 4637 | GetCtrlVal(p1h,P1_BOARDNUMBER, &board); |
|
| - | 4638 | SlowControl(board, NULL); |
|
| - | 4639 | } |
|
| - | 4640 | // if ( pID==p1h && rID == P1_STEPONE ) StepOne(); |
|
| - | 4641 | if ( pID==p1h && rID == P1_FEBTESTANA ) FebTestAna(); |
|
| - | 4642 | if ( pID==p1h && rID == P1_TEST ) FebTest(); |
|
| - | 4643 | if ( pID==p1h && rID == P1_MODULETEST ) ModuleTest(); |
|
| - | 4644 | ||
| - | 4645 | if ( pID==p1h && rID == P1_GET_FPGA_SERIAL ) { |
|
| - | 4646 | int ison=0; |
|
| - | 4647 | GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
|
| - | 4648 | for (int board=0; board<4; board++) { |
|
| - | 4649 | char saddress[0xff]=""; |
|
| - | 4650 | GetCtrlVal(p1h, hapd_onoff[board], &ison); |
|
| - | 4651 | sa02GetSerial(board, saddress); |
|
| - | 4652 | sa02Printf("SERIAL FPGA = %s \n", saddress); |
|
| - | 4653 | SetCtrlVal(p1h,fpga_serials[board],saddress); |
|
| - | 4654 | } |
|
| - | 4655 | }; |
|
| - | 4656 | ||
| - | 4657 | if ( ( pID==p1h && rID == P1_STOP ) |
|
| - | 4658 | || ( pID==p2h && rID == P2_STOP ) |
|
| - | 4659 | || ( pID==p3h && rID == P3_STOP ) |
|
| - | 4660 | || ( pID==p6h && rID == MINIRICH_STOP ) |
|
| - | 4661 | || ( pID==p4h && rID == P4_STOP ) ) { |
|
| - | 4662 | sa02Printf("Stopping the Thread %d\n", tfID); |
|
| - | 4663 | ctrl_c=1; |
|
| - | 4664 | } |
|
| - | 4665 | if (pID ==p5h) { |
|
| - | 4666 | if (rID == P5_SET_DAC_HV_ON) set_dac(1); |
|
| - | 4667 | if (rID == P5_SET_DAC_HV_OFF) set_dac(0); |
|
| - | 4668 | if (rID == P5_SET_HV_ON) set_hv(1); |
|
| - | 4669 | if (rID == P5_SET_HV_OFF) set_hv(0); |
|
| - | 4670 | } |
|
| 4587 |
|
4671 | return 0; |
| 4588 | } |
4672 | } |
| 4589 | 4673 | ||
| 4590 | 4674 | ||
| 4591 | 4675 | ||
| 4592 | void CVICALLBACK QueueUserEventCallback (CmtTSQHandle queueHandle, unsigned int event, int value, void *callbackData) { |
4676 | void CVICALLBACK QueueUserEventCallback (CmtTSQHandle queueHandle, unsigned int event, int value, void *callbackData) { |
| 4593 | //int *data= (int *) callbackData; |
4677 | //int *data= (int *) callbackData; |
| 4594 | int mdata[2]; |
4678 | int mdata[2]; |
| Line 4603... | Line 4687... | ||
| 4603 | LPSTR lpszCmdLine, int nCmdShow) { |
4687 | LPSTR lpszCmdLine, int nCmdShow) { |
| 4604 | 4688 | ||
| 4605 | char title[0xFF]; |
4689 | char title[0xFF]; |
| 4606 | char saddress[0xff]=""; |
4690 | char saddress[0xff]=""; |
| 4607 | //uint32_t board; |
4691 | //uint32_t board; |
| 4608 | int i; |
4692 | int i; |
| 4609 | int status=0; |
4693 | int status=0; |
| 4610 | 4694 | ||
| 4611 | if (InitCVIRTE (hInstance, 0, 0) == 0) { |
4695 | if (InitCVIRTE (hInstance, 0, 0) == 0) { |
| 4612 | return -1; /* out of memory */ |
4696 | return -1; /* out of memory */ |
| 4613 | } |
4697 | } |
| Line 4616... | Line 4700... | ||
| 4616 | CmtNewThreadPool (MAX_THREADS, &poolHandle); |
4700 | CmtNewThreadPool (MAX_THREADS, &poolHandle); |
| 4617 | 4701 | ||
| 4618 | if ( (status = CmtNewTSQ (1, 2*sizeof(int), OPT_TSQ_AUTO_FLUSH_ALL, &pTSQ)) <0) |
4702 | if ( (status = CmtNewTSQ (1, 2*sizeof(int), OPT_TSQ_AUTO_FLUSH_ALL, &pTSQ)) <0) |
| 4619 | printf("CmtNewTSQ cannot be installed\n"); |
4703 | printf("CmtNewTSQ cannot be installed\n"); |
| 4620 | if ( (status = CmtInstallTSQCallback (pTSQ, EVENT_TSQ_ITEMS_IN_QUEUE, EVENT_TSQ_QUEUE_SIZE, |
4704 | if ( (status = CmtInstallTSQCallback (pTSQ, EVENT_TSQ_ITEMS_IN_QUEUE, EVENT_TSQ_QUEUE_SIZE, |
| 4621 | QueueUserEventCallback, pTSQData, CmtGetCurrentThreadID(), NULL)) <0) |
4705 | QueueUserEventCallback, pTSQData, CmtGetCurrentThreadID(), NULL)) <0) |
| 4622 | printf("CmtInstallTSQCallback cannot be installed\n"); ; |
4706 | printf("CmtInstallTSQCallback cannot be installed\n"); ; |
| 4623 | 4707 | ||
| 4624 | SetStdioPort (CVI_STDIO_WINDOW ); |
4708 | SetStdioPort (CVI_STDIO_WINDOW ); |
| 4625 | 4709 | ||
| 4626 | readIni("febdaq.ini"); |
4710 | readIni("febdaq.ini"); |
| Line 4641... | Line 4725... | ||
| 4641 | if ((p1h = LoadPanel (0, "sa02_CVI.uir", P1)) < 0) return -1; |
4725 | if ((p1h = LoadPanel (0, "sa02_CVI.uir", P1)) < 0) return -1; |
| 4642 | if ((p2h = LoadPanel (0, "sa02_CVI.uir", P2)) < 0) return -1; |
4726 | if ((p2h = LoadPanel (0, "sa02_CVI.uir", P2)) < 0) return -1; |
| 4643 | if ((p3h = LoadPanel (0, "sa02_CVI.uir", P3)) < 0) return -1; |
4727 | if ((p3h = LoadPanel (0, "sa02_CVI.uir", P3)) < 0) return -1; |
| 4644 | if ((p4h = V729_LoadPanel (0, "CAEN_V729\\CAEN_V729_CVI.uir", P4)) < 0) return -1; |
4728 | if ((p4h = V729_LoadPanel (0, "CAEN_V729\\CAEN_V729_CVI.uir", P4)) < 0) return -1; |
| 4645 | if ((p5h = LoadPanel (0, "sa02_CVI.uir", P5)) < 0) return -1; |
4729 | if ((p5h = LoadPanel (0, "sa02_CVI.uir", P5)) < 0) return -1; |
| 4646 | if ((p6h = LoadPanel (0, "ICFA\\minirich.uir", MINIRICH)) < 0) return -1; |
4730 | if ((p6h = LoadPanel (0, "ICFA\\minirich.uir", MINIRICH)) < 0) return -1; |
| 4647 | if ((pm1 = LoadMenuBar (p1h, "sa02_CVI.uir", MENU)) < 0) return -1; |
4731 | if ((pm1 = LoadMenuBar (p1h, "sa02_CVI.uir", MENU)) < 0) return -1; |
| 4648 | 4732 | ||
| 4649 | SetPanelMenuBar(p1h, pm1); |
4733 | SetPanelMenuBar(p1h, pm1); |
| 4650 | DisplayPanel (p1h); |
4734 | DisplayPanel (p1h); |
| 4651 | 4735 | ||
| 4652 | LoadUirHeader("sa02_CVI.h"); |
4736 | LoadUirHeader("sa02_CVI.h"); |
| 4653 | LoadUirHeader("CAEN_V729\\CAEN_V729_CVI.h"); |
4737 | LoadUirHeader("CAEN_V729\\CAEN_V729_CVI.h"); |
| 4654 | 4738 | ||
| 4655 | SetCtrlVal(p2h,P2_XC,gCENTER_X); |
4739 | SetCtrlVal(p2h,P2_XC,gCENTER_X); |
| 4656 | SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
4740 | SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
| 4657 | 4741 | ||
| 4658 | SetCtrlVal(p3h, P3_INPUTFILE,gFEBParam); |
4742 | SetCtrlVal(p3h, P3_INPUTFILE,gFEBParam); |
| 4659 | SetParametersFromFile(gFEBParam); |
4743 | SetParametersFromFile(gFEBParam); |
| 4660 | 4744 | ||
| 4661 | SetCtrlAttribute (p1h, P1_GRAPH2D, ATTR_CALLBACK_DATA, (void *)integer_val); |
4745 | SetCtrlAttribute (p1h, P1_GRAPH2D, ATTR_CALLBACK_DATA, (void *)integer_val); |
| 4662 | SetCtrlAttribute (p1h, P1_SLIY, ATTR_CALLBACK_DATA, (void *)integer_val); |
4746 | SetCtrlAttribute (p1h, P1_SLIY, ATTR_CALLBACK_DATA, (void *)integer_val); |
| 4663 | SetCtrlAttribute (p1h, P1_SLIX, ATTR_CALLBACK_DATA, (void *)integer_val); |
4747 | SetCtrlAttribute (p1h, P1_SLIX, ATTR_CALLBACK_DATA, (void *)integer_val); |
| 4664 | SetCtrlAttribute (p1h, P1_NSLIY, ATTR_CALLBACK_DATA, (void *)integer_val); |
4748 | SetCtrlAttribute (p1h, P1_NSLIY, ATTR_CALLBACK_DATA, (void *)integer_val); |
| 4665 | SetCtrlAttribute (p1h, P1_NSLIX, ATTR_CALLBACK_DATA, (void *)integer_val); |
4749 | SetCtrlAttribute (p1h, P1_NSLIX, ATTR_CALLBACK_DATA, (void *)integer_val); |
| 4666 | 4750 | ||
| 4667 | for (i=0; i<12; i++) { |
4751 | for (i=0; i<12; i++) { |
| 4668 | SetTraceAttributeEx (p1h, chart_control[0], i+1, ATTR_TRACE_LG_TEXT, (char *) slowcname[i]); |
4752 | SetTraceAttributeEx (p1h, chart_control[0], i+1, ATTR_TRACE_LG_TEXT, (char *) slowcname[i]); |
| 4669 | } |
4753 | } |
| 4670 | 4754 | ||
| 4671 | GetPanelAttribute (p1h, ATTR_TITLE, title ); |
4755 | GetPanelAttribute (p1h, ATTR_TITLE, title ); |
| 4672 | if (gVME_CONTROLLER == WIENER_VMEMM) sprintf( title, "%s + WIENER_VMEMM", title ); |
4756 | if (gVME_CONTROLLER == WIENER_VMEMM) sprintf( title, "%s + WIENER_VMEMM", title ); |
| 4673 | if (gVME_CONTROLLER == WIENER_VMUSB) sprintf( title, "%s + WIENER_VMUSB", title ); |
4757 | if (gVME_CONTROLLER == WIENER_VMUSB) sprintf( title, "%s + WIENER_VMUSB", title ); |
| 4674 | if (gVME_CONTROLLER == CAEN_V1718) sprintf( title, "%s + CAEN_V1718", title ); |
4758 | if (gVME_CONTROLLER == CAEN_V1718) sprintf( title, "%s + CAEN_V1718", title ); |
| - | 4759 | if (gVME_CONTROLLER == SIS3153_USB) sprintf( title, "%s + SIS3153_USB", title ); |
|
| 4675 | if (gCAEN_V1495) sprintf( title, "%s + CAEN_V1495", title ); |
4760 | if (gCAEN_V1495) sprintf( title, "%s + CAEN_V1495", title ); |
| 4676 | if (gCAEN_V288 ) sprintf( title, "%s + CAEN_V288", title ); |
4761 | if (gCAEN_V288 ) sprintf( title, "%s + CAEN_V288", title ); |
| 4677 | 4762 | ||
| 4678 | if (gBELLEPTS) { |
4763 | if (gBELLEPTS) { |
| 4679 | sprintf( title, "%s + BELLEPTS", title ); |
4764 | sprintf( title, "%s + BELLEPTS", title ); |
| Line 4690... | Line 4775... | ||
| 4690 | SetCtrlVal(p1h,hapd_onoff[i],gFEBMask&(1<<i)); |
4775 | SetCtrlVal(p1h,hapd_onoff[i],gFEBMask&(1<<i)); |
| 4691 | SetCtrlVal(p1h,P1_SENDSWTRIG,gTriggerType); |
4776 | SetCtrlVal(p1h,P1_SENDSWTRIG,gTriggerType); |
| 4692 | SetCtrlVal(p1h,P1_TPENB,CHECK_BIT(uInterf,0)); |
4777 | SetCtrlVal(p1h,P1_TPENB,CHECK_BIT(uInterf,0)); |
| 4693 | 4778 | ||
| 4694 | sa02SetAddress(strtoul (saddress,NULL,0)); |
4779 | sa02SetAddress(strtoul (saddress,NULL,0)); |
| 4695 | 4780 | ||
| 4696 | LedCB(p1h,P1_PTSLED,EVENT_COMMIT, NULL,0,0); |
4781 | LedCB(p1h,P1_PTSLED,EVENT_COMMIT, NULL,0,0); |
| 4697 | 4782 | ||
| 4698 | 4783 | ||
| 4699 | StdIo2FileCB (p1h, P1_STDIOLOG, EVENT_COMMIT, NULL,0,0); |
4784 | StdIo2FileCB (p1h, P1_STDIOLOG, EVENT_COMMIT, NULL,0,0); |
| 4700 | InitColors(); |
4785 | InitColors(); |
| 4701 | sa02Printf("Panels=%d %d %d %d\n", p1h, p2h,p3h,p4h); |
4786 | sa02Printf("Panels=%d %d %d %d\n", p1h, p2h,p3h,p4h); |
| 4702 | GetCtrlVal(p1h,P1_VERBOSE,&sa02Verbose); |
4787 | GetCtrlVal(p1h,P1_VERBOSE,&sa02Verbose); |
| 4703 | 4788 | ||
| 4704 | LoadElectronicMap("eid2hapdxy.map"); |
4789 | LoadElectronicMap("eid2hapdxy.map"); |
| 4705 | icfa_Init(); |
4790 | icfa_Init(); |
| 4706 | 4791 | ||
| 4707 | 4792 | ||
| 4708 | loop_on=1; |
4793 | loop_on=1; |
| 4709 | do { |
4794 | do { |
| 4710 | GetUserEvent (1, &pID, &rID); |
4795 | GetUserEvent (1, &pID, &rID); |
| 4711 | ProcessUserEvent(pID,rID,1); |
4796 | ProcessUserEvent(pID,rID,1); |
| - | 4797 | } |
|
| 4712 |
|
4798 | while (loop_on); |
| 4713 | 4799 | ||
| 4714 | CmtDiscardThreadPool (poolHandle); |
4800 | CmtDiscardThreadPool (poolHandle); |
| 4715 | DiscardPanel (p4h); |
4801 | DiscardPanel (p4h); |
| 4716 | DiscardPanel (p3h); |
4802 | DiscardPanel (p3h); |
| 4717 | DiscardPanel (p2h); |
4803 | DiscardPanel (p2h); |
| 4718 | DiscardPanel (p1h); |
4804 | DiscardPanel (p1h); |
| 4719 | 4805 | ||
| 4720 | if (gMIKRO_PORT) MIKRO_Close (); |
4806 | if (gMIKRO_PORT) MIKRO_Close (); |
| 4721 | 4807 | ||
| 4722 | 4808 | ||
| 4723 | VME_STOP(); |
4809 | VME_STOP(); |
| 4724 | return 0; |
4810 | return 0; |
| 4725 | } |
4811 | } |
| 4726 | 4812 | ||
| 4727 | int CVICALLBACK ResetStdOut (int panel, int control, int event, |
4813 | int CVICALLBACK ResetStdOut (int panel, int control, int event, |
| 4728 | void *callbackData, int eventData1, int eventData2) { |
4814 | void *callbackData, int eventData1, int eventData2) { |
| 4729 | switch (event) { |
4815 | switch (event) { |
| Line 4734... | Line 4820... | ||
| 4734 | return 0; |
4820 | return 0; |
| 4735 | } |
4821 | } |
| 4736 | 4822 | ||
| 4737 | int CVICALLBACK TrgHvMon (int panel, int control, int event, |
4823 | int CVICALLBACK TrgHvMon (int panel, int control, int event, |
| 4738 | void *callbackData, int eventData1, int eventData2) { |
4824 | void *callbackData, int eventData1, int eventData2) { |
| 4739 | switch (event) { |
4825 | switch (event) { |
| 4740 | case EVENT_TIMER_TICK: |
4826 | case EVENT_TIMER_TICK: |
| 4741 | hvmon=1; |
4827 | hvmon=1; |
| 4742 | break; |
4828 | break; |
| 4743 | } |
4829 | } |
| 4744 | return 0; |
4830 | return 0; |
| Line 4813... | Line 4899... | ||
| 4813 | dummyword = 0; |
4899 | dummyword = 0; |
| 4814 | do { |
4900 | do { |
| 4815 | if( (c = getc( fp )) == EOF ) { |
4901 | if( (c = getc( fp )) == EOF ) { |
| 4816 | if(verbose) { |
4902 | if(verbose) { |
| 4817 | sa02Printf( "EOF detected. Exit.\n"); |
4903 | sa02Printf( "EOF detected. Exit.\n"); |
| 4818 | 4904 | ||
| 4819 | 4905 | ||
| 4820 | } |
4906 | } |
| 4821 | return -1; |
4907 | return -1; |
| 4822 | } |
4908 | } |
| 4823 | (c == 0xff) ? dummyword++ : (dummyword=0); |
4909 | (c == 0xff) ? dummyword++ : (dummyword=0); |
| - | 4910 | } |
|
| 4824 |
|
4911 | while( dummyword < 4 ); |
| 4825 | 4912 | ||
| 4826 | if( mode == SLAVESERIAL_MODE ) { |
4913 | if( mode == SLAVESERIAL_MODE ) { |
| 4827 | if(verbose) sa02Printf("slave serial mode"); |
4914 | if(verbose) sa02Printf("slave serial mode"); |
| 4828 | Pts_write( addr +ADR_MODE, mode ); |
4915 | Pts_write( addr +ADR_MODE, mode ); |
| 4829 | Pts_erase( addr, verbose ); |
4916 | Pts_erase( addr, verbose ); |
| 4830 | for( j=0; j<32; j++ ) Pts_write( addr + ADR_CFG, 0x1 ); |
4917 | for( j=0; j<32; j++ ) Pts_write( addr + ADR_CFG, 0x1 ); |
| 4831 | while( (c=getc(fp))!=EOF ) { |
4918 | while( (c=getc(fp))!=EOF ) { |
| 4832 | for( j=0; j<8; j++ ) Pts_write( addr + ADR_CFG, (c>>(7-j))&0x1 ); |
4919 | for( j=0; j<8; j++ ) Pts_write( addr + ADR_CFG, (c>>(7-j))&0x1 ); |
| 4833 | nchar++; |
4920 | nchar++; |
| 4834 | if( verbose && nchar%byte_per_dot==0 ) { |
4921 | if( verbose && nchar%byte_per_dot==0 ) { |
| 4835 | sa02Printf( "#"); |
4922 | sa02Printf( "#"); |
| 4836 | } |
4923 | } |
| 4837 | } |
4924 | } |
| - | 4925 | } |
|
| 4838 |
|
4926 | else if( mode == SELECTMAP_MODE ) { |
| 4839 | if( verbose ) sa02Printf("select map mode\n"); |
4927 | if( verbose ) sa02Printf("select map mode\n"); |
| 4840 | Pts_write( addr + ADR_MODE, SELECTMAP_MODE ); |
4928 | Pts_write( addr + ADR_MODE, SELECTMAP_MODE ); |
| 4841 | Pts_erase( addr, verbose ); |
4929 | Pts_erase( addr, verbose ); |
| 4842 | VME_MWRST(); |
4930 | VME_MWRST(); |
| 4843 | for( j=0; j<4; j++ ) Pts_Mwrite( addr + ADR_CFG, 0xff ); |
4931 | for( j=0; j<4; j++ ) Pts_Mwrite( addr + ADR_CFG, 0xff ); |
| Line 4855... | Line 4943... | ||
| 4855 | sa02Printf( "#"); |
4943 | sa02Printf( "#"); |
| 4856 | 4944 | ||
| 4857 | } |
4945 | } |
| 4858 | } |
4946 | } |
| 4859 | VME_MWEXEC(); |
4947 | VME_MWEXEC(); |
| - | 4948 | } |
|
| 4860 |
|
4949 | else { |
| 4861 | if(verbose) { |
4950 | if(verbose) { |
| 4862 | sa02Printf( "\nIllegal mode\n"); |
4951 | sa02Printf( "\nIllegal mode\n"); |
| 4863 | 4952 | ||
| 4864 | } |
4953 | } |
| 4865 | return -1; |
4954 | return -1; |
| Line 4878... | Line 4967... | ||
| 4878 | sa02Printf("CSR1(0x%02x)=0x%04x\n",ADR_CSR1,csr1_value&0xffff); |
4967 | sa02Printf("CSR1(0x%02x)=0x%04x\n",ADR_CSR1,csr1_value&0xffff); |
| 4879 | } |
4968 | } |
| 4880 | if(csr1_value&CSR1_DONE) { |
4969 | if(csr1_value&CSR1_DONE) { |
| 4881 | if(verbose) sa02Printf("configure complete.\n"); |
4970 | if(verbose) sa02Printf("configure complete.\n"); |
| 4882 | return 1; |
4971 | return 1; |
| - | 4972 | } |
|
| 4883 |
|
4973 | else { |
| 4884 | if(verbose) sa02Printf("configure not complete."); |
4974 | if(verbose) sa02Printf("configure not complete."); |
| 4885 | return -1; |
4975 | return -1; |
| 4886 | } |
4976 | } |
| 4887 | } |
4977 | } |
| 4888 | 4978 | ||
| 4889 | 4979 | ||
| 4890 | int CVICALLBACK PtsDownloadCB (int panel, int control, int event, |
4980 | int CVICALLBACK PtsDownloadCB (int panel, int control, int event, |
| 4891 | void *callbackData, int eventData1, int eventData2) { |
4981 | void *callbackData, int eventData1, int eventData2) { |
| 4892 | char filename[254]; |
4982 | char filename[254]; |
| 4893 | int mode=0; |
4983 | int mode=0; |
| 4894 | char saddress[0xFF]; |
4984 | char saddress[0xFF]; |
| 4895 | uint32_t addr; |
4985 | uint32_t addr; |
| 4896 | 4986 | ||
| 4897 | 4987 | ||
| 4898 | switch (event) { |
4988 | switch (event) { |
| 4899 | case EVENT_COMMIT: |
4989 | case EVENT_COMMIT: |
| 4900 | GetCtrlVal(p3h,P3_ADDRESS, saddress); |
4990 | GetCtrlVal(p3h,P3_ADDRESS, saddress); |
| 4901 | addr= strtoul (saddress,NULL,0); |
4991 | addr= strtoul (saddress,NULL,0); |
| 4902 | GetCtrlVal(p3h,P3_PTSFIRMWARE,filename); |
4992 | GetCtrlVal(p3h,P3_PTSFIRMWARE,filename); |
| 4903 | GetCtrlVal(p3h,P3_PTSMODE,&mode); |
4993 | GetCtrlVal(p3h,P3_PTSMODE,&mode); |
| 4904 | if(VME_CONNECTED() >=0 ) { |
4994 | if(VME_CONNECTED() >=0 ) { |
| 4905 | Pts_configure_bit( addr , filename, mode, 1 ); |
4995 | Pts_configure_bit( addr , filename, mode, 1 ); |
| - | 4996 | } |
|
| 4906 |
|
4997 | else { |
| 4907 | MessagePopup ("Warning", "Connect VME!!"); |
4998 | MessagePopup ("Warning", "Connect VME!!"); |
| 4908 | } |
4999 | } |
| 4909 | break; |
5000 | break; |
| 4910 | } |
5001 | } |
| 4911 | return 0; |
5002 | return 0; |