- update instruments configurations

- new six version with status display
- bugfixes on TecsClient
- some changed samp. env. devices
This commit is contained in:
cvs
2003-10-17 09:35:37 +00:00
parent d62d2902ac
commit d63a4a4128
13 changed files with 425 additions and 252 deletions

View File

@ -1,7 +1,4 @@
name=CCR2_T name=CCR2_K ! name (15 char.max.,will be converted to uppercase)
curv=4
name=CCR2_S ! name (15 char.max.,will be converted to uppercase)
sens=x10409 ! sensor no (max.10 char.) sens=x10409 ! sensor no (max.10 char.)
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
!tlim=3250 ! setpoint limit (automatic if omitted) !tlim=3250 ! setpoint limit (automatic if omitted)
@ -82,7 +79,7 @@ curv ! curve (sensor,temp/K) follows, must be ordered, but can be inc
74.1057045 325.9043579 74.1057045 325.9043579
73.21666644 329.7353821 73.21666644 329.7353821
name=CCR2_M ! name (15 char.max.,will be converted to uppercase) name=CCR2_S ! name (15 char.max.,will be converted to uppercase)
sens=x24506 ! sensor no (max.10 char.) sens=x24506 ! sensor no (max.10 char.)
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
!tlim=3250 ! setpoint limit (automatic if omitted) !tlim=3250 ! setpoint limit (automatic if omitted)
@ -174,3 +171,95 @@ curv ! curve (sensor,temp/K) follows, must be ordered, but can be inc
47.6297072 321.2613963 47.6297072 321.2613963
46.74933639 328.7765688 46.74933639 328.7765688
name=CCR2_T ! name (15 char.max.,will be converted to uppercase)
sens=x14231 ! sensor no (max. 10 char.)
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
type=Cernox ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
curv ! curve (sensor,temp/K) follows, must be ordered, but can be increasing or decreasing
45346.09176 1.198717153
36706.00173 1.298616179
30407.09586 1.399152924
22223.29963 1.598426911
17175.65133 1.799308766
13877.32694 1.997886019
11390.09764 2.214142275
9906.509898 2.389526577
8539.145773 2.601747251
7516.284525 2.807291184
6744.498808 3.002487122
6100.009293 3.202475086
5551.381013 3.408289164
5108.853651 3.606142735
4731.042051 3.80500669
4416.159886 3.996132283
4143.794235 4.185137213
3640.535495 4.616513504
3268.12937 5.022147341
2899.676365 5.528662912
2512.606636 6.240495878
2185.580383 7.048665902
1886.592014 8.061087557
1663.486413 9.078580603
1490.913956 10.09831729
1353.808309 11.11262662
1241.978882 12.12053341
1149.175518 13.12453255
1070.200846 14.12385451
1002.590927 15.11930797
943.6033917 16.10992155
891.7175592 17.09784756
845.6352302 18.08488235
804.3306007 19.07335027
767.1307438 20.05756306
730.1316279 21.14546834
682.2281523 22.72983276
640.2446923 24.32652476
602.3359845 25.96250613
568.6695509 27.61161933
538.8443318 29.24410485
508.9742411 31.06754222
478.3257114 33.18021519
440.5589996 36.18972271
408.6376322 39.17322288
381.0960781 42.16172046
356.9619405 45.16110987
335.7847002 48.16065735
323.0015773 50.15751877
295.0585709 55.15427778
271.5202017 60.15845647
251.4849869 65.1554738
234.261859 70.15087616
219.2208675 75.13817156
206.0170192 80.13574238
193.8353068 85.35591401
183.8447324 90.12851069
174.4541594 95.12557876
165.9511715 100.1241728
150.2884406 110.7809236
138.8086112 120.1158899
128.2784478 130.1156516
119.2281279 140.1168039
111.3536703 150.1159926
104.4582753 160.1113105
98.36914182 170.1119695
92.95834383 180.1280541
88.13033956 190.1264348
83.79340557 200.1354211
79.87162555 210.1502982
76.35426251 220.1464909
73.13678899 230.1446765
70.20472384 240.142717
67.52770935 250.1298551
65.07150159 260.1424032
62.80585804 270.1413526
60.72207723 280.1360821
58.80254217 290.1099663
57.01318852 300.1296204
55.36154863 310.1251632
54.56232509 315.1323273
53.81080087 320.1337028
52.93912804 326.1023799
52.36765678 330.1165788
name=CCR2_M ! name (15 char.max.,will be converted to uppercase)
curv=4

View File

@ -184,25 +184,25 @@ curv ! curve (sensor,temp/K) follows, must be ordered, but can be inc
4.927322 331.981 4.927322 331.981
name=MA09_T ! name (15 char.max.,will be converted to uppercase) name=MA09_T ! name (15 char.max.,will be converted to uppercase)
sens=Cplus45 sens=Cplus70
unit=Ohm unit=Ohm
type=C type=C
form=loglog form=loglog
curv curv
50045 1 50070 1
6545 2 6570 2
2245 3 2270 3
1145 4.2 1170 4.2
670 6 695 6
395 10 420 10
295 15 320 15
255 20 280 20
225 27 250 27
205 35 230 35
185 50 210 50
169 77 194 77
161 100 186 100
152 150 177 150
148 200 173 200
143 300 168 300
135 500 135 500

View File

@ -52,8 +52,13 @@
+13, 'ccr4k' m dev="4 K closed cycle refrigerator" +13, 'ccr4k' m dev="4 K closed cycle refrigerator"
tlimit=310 resist=25 maxPower=100 tlimit=310 resist=25 maxPower=100
prop=50 int=20 deriv=0 prop=50 int=20 deriv=0
+28,-28 'ccr2' mts_ dev="4 K closed cycle refrigerator (FOCUS)" +28,-28 'ccr2' t_ks dev="4 K closed cycle refrigerator (FOCUS)"
tlimit=330 resist=25 maxPower=100 tlimit=700 resist=25 maxPower=100
sensA.alarm=310
prop=50 int=20 deriv=0
+28,-28 'ccr2ht' tmks dev="4 K closed cycle refrigerator (FOCUS) with hi-T stage"
tlimit=700 resist=25 maxPower=100
sensA.alarm=310
prop=50 int=20 deriv=0 prop=50 int=20 deriv=0
+14,-11,'hef4c' mns dev="He-flow 4 circle cryostat" +14,-11,'hef4c' mns dev="He-flow 4 circle cryostat"
tlimit=310 resist=50 maxPower=25 tlimit=310 resist=50 maxPower=25
@ -91,12 +96,14 @@
tlimit=310 resist=50 maxpower=50 controlmode=0 tlimit=310 resist=50 maxpower=50 controlmode=0
sensA.lim=50 sensB.lim=60 sensA.lim=50 sensB.lim=60
prop=25 int=10 deriv=0 prop=25 int=10 deriv=0
+27, 'ma11' t dev="SANS test carbon resistors" config=ma11.cfg
+23,-23,'ma02' m_s dev="1.8 T horizontal cryomagnet (Risoe)" +23,-23,'ma02' m_s dev="1.8 T horizontal cryomagnet (Risoe)"
tlimit=310 resist=50 maxpower=50 tlimit=310 resist=50 maxpower=50
prop=15 int=10 deriv=0 prop=15 int=10 deriv=0
+90, 'variox' ms dev="variox cryostat/dilution (Risoe)" +90, 'variox' ms dev="variox cryostat/dilution (Risoe)"
tlimit=375 resist=16 maxpower=25 tlimit=375 resist=16 maxpower=25
prop=50 int=10 deriv=0 prop=50 int=10 deriv=0
+90, 'dil' __s dev="dilution (Risoe)"
+91, 'rdr11' m dev="LTF dilution cryostat" +91, 'rdr11' m dev="LTF dilution cryostat"
tlimit=12.0 resist=708 maxPower=0.01 powfact=0.03 tlimit=12.0 resist=708 maxPower=0.01 powfact=0.03
sensA.scale=0.01 config=rdr.cfg sensA.scale=0.01 config=rdr.cfg

View File

@ -1,127 +1,94 @@
name=VARIOX_M ! name (15 char.max.,will be converted to uppercase name=VARIOX_M ! name (15 char.max.,will be converted to uppercase
sens=rhfe0734 ! sensor no (max.10 char.) sens=x12533 ! sensor no (max.10 char.)
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
!tlim=3250 ! setpoint limit (automatic if omitted) !tlim=3250 ! setpoint limit (automatic if omitted)
type=RhFe ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted) type=Cernox ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
!excit=300uA ! (off,30nA,100nA,300nA,1uA,3uA,10uA,30uA,100uA,300uA,1mA,10mV,1mV) (if omitted: default from sensor type) !excit=300uA ! (off,30nA,100nA,300nA,1uA,3uA,10uA,30uA,100uA,300uA,1mA,10mV,1mV) (if omitted: default from sensor type)
!range=0 ! range in sensor units (if rang=0: determine range from table, if omitted: default from sensor type) !range=0 ! range in sensor units (if rang=0: determine range from table, if omitted: default from sensor type)
curv ! curve (sensor,temp/K) follows, must be ordered, but can be increasing or decreasing curv ! curve (sensor,temp/K) follows, must be ordered, but can be increasing or decreasing
+1.68 0.5831 58491.11567 1.212535322
+1.73 0.8616 47949.5449 1.302323103
+1.78 1.1426 39259.49409 1.40324533
+1.83 1.4276 28281.43621 1.600896776
+1.88 1.7179 21767.98069 1.795822322
+1.93 2.0148 17155.67121 2.008253574
+1.98 2.3195 14213.75553 2.204490304
+2.03 2.6331 12007.63886 2.406743169
+2.08 2.957 10415.31809 2.599679828
+2.13 3.292 9105.003941 2.805752277
+2.18 3.6391 8097.388389 3.006976485
+2.23 3.9993 7291.357363 3.205610991
+2.28 4.3734 6646.490487 3.398921728
+2.33 4.7622 6076.028335 3.602926254
+2.38 5.1668 5637.018504 3.787533283
+2.43 5.5881 5214.064508 3.994657993
+2.48 6.0273 4839.768732 4.207356453
+2.53 6.4856 4501.690135 4.432101488
+2.58 6.9644 4057.668994 4.784009218
+2.63 7.465 3511.923839 5.342074394
+2.68 7.9888 2973.614912 6.100896835
+2.73 8.5374 2579.128549 6.871365786
+2.78 9.1123 2207.384439 7.865557909
+2.83 9.7149 1915.850175 8.940035343
+2.88 10.3469 1726.748344 9.848879814
+2.93 11.0099 1563.465412 10.82483435
+2.98 11.7059 1418.13084 11.9001646
+3.03 12.4366 1316.964373 12.79871416
+3.08 13.2041 1224.187029 13.76333618
+3.13 14.0107 1139.695628 14.78597641
+3.18 14.8583 1069.281285 15.77101898
+3.23 15.7491 1010.884223 16.69764805
+3.28 16.685 957.2041233 17.6546526
+3.33 17.6671 907.944238 18.63812733
+3.38 18.6961 863.1087092 19.63531017
+3.43 19.7717 814.3069506 20.84896278
+3.48 20.8922 757.6393844 22.4640255
+3.53 22.0546 710.4887602 24.00959301
+3.58 23.254 665.7070891 25.68195915
+3.63 24.4842 627.583247 27.29504395
+3.68 25.7372 593.4598081 28.91486263
+3.73 27.0041 556.2805114 30.91711807
+3.78 28.275 522.5368408 32.97060394
+3.83 29.5403 477.5900412 36.16845131
+3.88 30.7913 442.8664029 39.07749367
+3.93 32.0212 411.6814887 42.11124992
+3.98 33.2277 384.9241731 45.10907555
+4.03 34.4064 360.8523969 48.1827774
+4.08 35.5549 346.3993674 50.23285484
+4.13 36.6724 315.6773941 55.20724106
+4.18 37.7591 290.0937236 60.16088295
+4.23 38.8156 267.7935066 65.242836
+4.28 39.8428 249.4506493 70.1031723
+4.33 40.8421 233.2979124 75.00526047
+4.43 42.7622 218.8083315 80.00709915
+4.53 44.5869 205.717029 85.11898804
+4.63 46.3269 194.3976616 90.08143997
+4.73 47.992 184.3289633 95.00944519
+4.83 49.5908 174.4566698 100.3590927
+4.93 51.1309 158.5832207 110.3372612
+5.03 52.6189 145.2116141 120.3833885
+5.13 54.0603 133.8192793 130.4760437
+5.23 55.4602 124.1684502 140.4295197
+5.33 56.8226 115.6706335 150.5550842
+5.43 58.1513 108.2798297 160.5835495
+5.53 59.4494 101.75565 170.6484222
+5.63 60.7198 95.95185322 180.7810669
+5.73 61.9649 90.8262136 190.7918854
+5.83 63.1869 86.2172275 200.8603973
+5.93 64.3876 82.03414533 210.9830551
+6.03 65.5689 78.2895644 221.0397034
+6.13 66.7323 74.89527823 231.0341873
+6.23 67.8791 71.75384718 241.2140121
+6.33 69.0106 68.9091264 251.3133316
+6.43 70.1279 66.30965093 261.3838348
+6.53 71.232 63.91098586 271.4609528
+6.63 72.324 61.72845994 281.4719086
+6.73 73.4046 59.67628607 291.6222687
+6.83 74.4746 57.78058314 301.7855835
+6.93 75.5348 56.02719573 311.8906708
+7.03 76.5858 55.19537744 316.946228
+7.13 77.6282 54.39166232 321.9963684
+7.23 78.6626 53.63383002 326.9981842
+7.33 79.6895
+7.43 80.7094
+7.53 81.7228
+7.63 82.7301
+7.73 83.7316
+7.83 84.7278
+7.93 85.7189
+8.03 86.7054
+8.13 87.6875
+8.23 88.6655
+8.33 89.6396
+9.33 99.2177
+10.33 108.6138
+11.33 117.9369
+12.33 127.252
+13.33 136.5978
+14.33 145.9964
+15.33 155.4592
+16.33 164.9901
+17.33 174.5886
+18.33 184.251
+19.33 193.9718
+20.33 203.7444
+21.33 213.5617
+22.33 223.4166
+23.33 233.3019
+24.33 243.211
+25.33 253.1376
+26.33 263.076
+27.33 273.0207
+29.33 292.9108
+31.33 312.7801
+33.33 332.6028
name=VARIOX_S ! name (15 char.max.,will be converted to uppercase) name=VARIOX_S ! name (15 char.max.,will be converted to uppercase)
sens=RX1976 ! sensor no (max.10 char.) sens=RX1976 ! sensor no (max.10 char.)
@ -172,3 +139,4 @@ curv ! curve mV,K (200 kOhm Range)
28.67 3.75 28.67 3.75
28.57 4.00 28.57 4.00
28.27 4.20 28.27 4.20
25.00 10.0

View File

@ -5,7 +5,7 @@ AMOR@lnsa14:bin/ DMC@lnsa05:bin/ FOCUS@lnsa16:bin/ \
HRPT@lnsa11:bin/ TASP@lnsa12:bin/ TRICS@lnsa18:bin/ \ HRPT@lnsa11:bin/ TASP@lnsa12:bin/ TRICS@lnsa18:bin/ \
lnslib@lnsa15:bin/ \ lnslib@lnsa15:bin/ \
type@linux \ type@linux \
TOPSI@pc4120:topsi_sics/ SANS@pc3965:sans_sics/ \ TOPSI@pc4120:topsi_sics/ SANS@pc3965:sans_sics/ SANS2@sans2:sans2_sics/ \
) )
set dests="" set dests=""
@ -28,7 +28,7 @@ foreach dest ($destlist)
endif endif
end end
set items=(TecsServer TecsClient six cfg) set items=(TecsServer TecsClient six keep_running cfg)
echo "" echo ""
echo " all $items" echo " all $items"

View File

@ -11,6 +11,7 @@ static Instrument list[]={
{ "DMC", "lnsa05.psi.ch", 9753, "DMC" , 1}, { "DMC", "lnsa05.psi.ch", 9753, "DMC" , 1},
{ "TOPSI", "pc4120.psi.ch", 9753, "TOPSI" , 1}, { "TOPSI", "pc4120.psi.ch", 9753, "TOPSI" , 1},
{ "SANS", "sans.psi.ch", 9753, "SANS" , 1}, { "SANS", "sans.psi.ch", 9753, "SANS" , 1},
{ "SANS2", "sans2.psi.ch", 9753, "SANS2" , 1},
{ "HRPT", "lnsa11.psi.ch", 9753, "HRPT" , 1}, { "HRPT", "lnsa11.psi.ch", 9753, "HRPT" , 1},
{ "TRICS", "lnsa18.psi.ch", 9753, "TRICS" , 1}, { "TRICS", "lnsa18.psi.ch", 9753, "TRICS" , 1},
{ "AMOR", "lnsa14.psi.ch", 9753, "AMOR" , 1}, { "AMOR", "lnsa14.psi.ch", 9753, "AMOR" , 1},
@ -18,8 +19,8 @@ static Instrument list[]={
{ "TASP", "lnsa12.psi.ch", 9753, "TASP", 1}, { "TASP", "lnsa12.psi.ch", 9753, "TASP", 1},
{ "TASP0", "lnsa09.psi.ch", 9753, NULL , 0}, { "TASP0", "lnsa09.psi.ch", 9753, NULL , 0},
{ "RITA", "pc4345.psi.ch", 9753, NULL , 0}, { "RITA", "pc4345.psi.ch", 9753, NULL , 0},
{ "PREP", "lnsa15.psi.ch", 9753, "lnslib", 2}, { "PREP", "lnsa15.psi.ch", 9753, "lnsg" , 2},
{ "AREA", "lnsa15.psi.ch", 9751, "lnslib", 2}, { "AREA", "lnsa15.psi.ch", 9751, "lnsg" , 2},
{ "TEST", "lnsa15.psi.ch", 9755, "lnslib", 2} { "TEST", "lnsa15.psi.ch", 9755, "lnslib", 2}
}; };

View File

@ -63,7 +63,7 @@ int main(int argc, char *argv[]) {
} else { } else {
arg=""; arg="";
} }
str_append(cmd, "bin/startecs"); str_append(cmd, "/data/lnslib/bin/startecs");
secure_arg(cmd, sizeof(cmd), arg); secure_arg(cmd, sizeof(cmd), arg);
str_append(cmd, "\n"); str_append(cmd, "\n");
} else { } else {

View File

@ -46,50 +46,101 @@ int CocCreateSockAdr(
return 0; return 0;
} }
int readWrite(int fd, int skip) { char* readWrite(int fd, int tmo, int skip, char *find) {
char msg[128]; char msg[256];
int l, i, go, iret, ires, n; int l, lbuf, pos, i, go, iret, n, ga;
char *p, chr;
static char result[256];
int match;
static int laststat=0;
/* /*
* read from fd and write to stdout until a key pressed, * read from fd and write to stdout until a key pressed,
* a timeout occured (1 or 5 sec.), or a <go ahead> message * a timeout occurred (tmo [msec]), or a <go ahead> message
* received. * received.
* skip=0: timeout 1 sec (normal behaviour) * skip=0: skip response that does not match
* skip>0: timeout 10 sec. * skip=1: skip all responses
* skip>1: swallow text *
* skip=1,2: return 0 if SICS not found in message text * if the response starts with the contents of find
* skip=3: return 0 if not acknowledged * the second part of the line is returned
* if the response contain the contents of find, but not at the beginning
* "1" is returned
* if the text is not found, or find=NULL, an empty line is returned
*/ */
n=0; n=0;
go=0; go=0;
ires=0; ga=0;
iret=term_wait_fd(fd, skip?10000:1000); str_copy(result, "");
while (iret==1) { iret=term_wait_fd(fd, tmo);
ERR_SI(l=recv(fd, msg, sizeof(msg)-1, 0)); while (iret>0) {
/* if (l==0) return(0); */ pos=0;
msg[l]='\0'; ERR_SI(lbuf=recv(fd, &chr, 1, 0));
if (skip==3) { if (lbuf==0) return "0";
if (NULL!=strstr(msg, "Acknowledged")) ires=1; while (lbuf>0) {
} else if (skip==1 || skip==2) { if (chr<' ') {
if (NULL!=strstr(msg, "SICS")) ires=1; if (chr=='\n') break;
if (chr==-1) {
ga=1;
} else if (chr==-7 && ga) {
go=1; break;
} else {
ga=0;
if (chr!='\r') {
msg[pos++]=chr;
} }
for (i=0; i<l-1; i++) { }
if (msg[i]==-1 && msg[i+1]==-7) { /* go ahead */ } else {
msg[pos++]=chr;
}
iret=term_wait_fd(fd, tmo);
if (iret!=1) break;
ERR_SI(lbuf=recv(fd, &chr, 1, 0));
}
msg[pos]='\0';
/* printf("[%s]\n", msg); */
match=0;
if (find != NULL) {
p=strstr(msg, find);
if (p!=NULL) { /* copy message to result */
if (p==msg) {
str_copy(result, msg+strlen(find));
p=strchr(result,'\r');
if (p != NULL) *p='\0';
} else {
str_copy(result, "1");
}
match=1;
if (find==strstr(find,"status")) {
if (result[0]=='E') {
tmo=100;
} else if (laststat!=result[0]) {
laststat=result[0];
go=1; go=1;
msg[i]='<'; msg[i+1]='>';
} else {
go=0;
} }
} }
if (skip<2 || skip==2 && ires==0) { }
fputs(msg, stdout); }
} else { if (skip || match) { /* skip text */
n+=strlen(msg); n+=strlen(msg);
} else {
term_clear();
fputs(msg, stdout);
if (chr=='\n') fputs("\n", stdout);
} }
if (go) break; if (go) break;
iret=term_wait_fd(fd, skip?10000:1000); iret=term_wait_fd(fd, tmo);
} }
if (n==0 && ires==1) return 1; if (iret==0) laststat=0;
return ires*n; return result;
OnError: return NULL;
}
int sendCmd(int fd, char *cmd) {
int l;
char buf[256];
ERR_I(str_copy(buf, cmd));
ERR_I(str_append(buf, "\r\n"));
ERR_SI(l=send(fd, buf, strlen(buf), 0));
return l;
OnError: return -1; OnError: return -1;
} }
@ -105,18 +156,20 @@ int main (int argc, char *argv[]) {
fd_set mask; fd_set mask;
int fd, l, i, j, port, skip; int fd, l, i, j, port, skip;
char buf[128], lbuf[16], ibuf[64], ilow[64]; char buf[128], lbuf[16], ibuf[64], ilow[64];
char *rights, *instr, *sim="", *us, *ps; char stdPrompt[128], prompt[256], instr[32];
char *rights, *sim="", *us, *ps;
char *p, *statusMatch;
struct sockaddr_in sadr; struct sockaddr_in sadr;
port=1301; port=1301;
skip=2; skip=1;
j=0; j=0;
for (i=1; i<argc; i++) { for (i=1; i<argc; i++) {
if (0==strcmp(argv[i], "-s")) { if (0==strcmp(argv[i], "-s")) {
port=1303; sim="-sim"; port=1303; sim="-sim";
} else if (0==strcmp(argv[i], "-w")) { } else if (0==strcmp(argv[i], "-w")) {
skip=1; skip=0;
} else { } else {
if (strlen(argv[i])>=32) { if (strlen(argv[i])>=32) {
printf("argument too long\n"); printf("argument too long\n");
@ -139,23 +192,32 @@ int main (int argc, char *argv[]) {
printf("missing password\n"); printf("missing password\n");
Usage(); return 0; Usage(); return 0;
} }
/*
instr=getenv("Instrument"); instr=getenv("Instrument");
if (instr==NULL || instr[0]=='\0') { if (instr==NULL || instr[0]=='\0') {
printf("Instrument is undefined\n"); printf("Instrument is undefined\n");
Usage(); return 0; Usage(); return 0;
} }
*/
ERR_I(CocCreateSockAdr(&sadr, "0", port)); ERR_I(CocCreateSockAdr(&sadr, "0", port));
ERR_SI(fd=socket(AF_INET, SOCK_STREAM, 0)); ERR_SI(fd=socket(AF_INET, SOCK_STREAM, 0));
term_reg_socket(fd); term_reg_socket(fd);
ERR_SI(connect(fd, (struct sockaddr *)&sadr, sizeof(sadr))); ERR_SI(connect(fd, (struct sockaddr *)&sadr, sizeof(sadr)));
strcpy(buf, "sicslogin Spy 007\r\n"); ERR_I(sendCmd(fd, "sicslogin Spy 007"));
ERR_SI(send(fd, buf, strlen(buf), 0)); ERR_P(p=readWrite(fd,10000,skip,"SICS"));
ERR_I(i=readWrite(fd,skip)); if (*p=='\0') {
if (!i) {
printf("rejected\n"); printf("rejected\n");
return 0; return 0;
} }
if (skip==2) printf("reading welcome message ...\n"); if (skip) printf("reading welcome message ...\n");
ERR_I(sendCmd(fd, "Instrument"));
ERR_P(p=readWrite(fd,10000,0,"Instrument = "));
str_copy(instr, p);
if (*instr=='\0') {
printf("can not detect instrument\n");
return 0;
}
if (j==0) { if (j==0) {
rights=getenv("six_rights"); rights=getenv("six_rights");
if (rights!=NULL && 0==strcmp(rights, instr)) { if (rights!=NULL && 0==strcmp(rights, instr)) {
@ -168,62 +230,64 @@ int main (int argc, char *argv[]) {
ps="03lns1"; ps="03lns1";
} }
} }
sprintf(buf, "config Rights %s %s\r\n", us, ps); if (NULL == strstr(instr, "TASP")) {
ERR_SI(send(fd, buf, strlen(buf), 0)); sprintf(buf, "config Rights %s %s", us, ps);
ERR_I(i=readWrite(fd,3)); ERR_I(sendCmd(fd, buf));
if (!i && 0 != strcmp(instr, "TASP")) { ERR_P(p=readWrite(fd,10000,0,"Acknowledged"));
if (*p=='\0') {
printf("password guess failed, logged in as Spy\n\n"); printf("password guess failed, logged in as Spy\n\n");
Usage(); Usage();
us="Spy"; us="Spy";
} }
printf("\rlogged in to SICS as %s on %s%s\n", us, instr, sim); } else {
/* us="Spy";
if (*sim!='\0') {
strcpy(buf, "sync\r\n");
ERR_SI(send(fd, buf, strlen(buf), 0));
printf("\rsynchronize ...\n");
ERR_I(i=readWrite(fd,1));
} }
*/ printf("\rlogged in to SICS as %s on %s\n", us, instr);
str_lowcase(ilow,instr);
sprintf(stdPrompt, "six[%s] ", ilow);
ERR_I(sendCmd(fd, "status interest"));
ERR_P(readWrite(fd,10000,0,"OK"));
ERR_I(sendCmd(fd, "status"));
ERR_P(p=readWrite(fd,10000,0,"status = "));
iret=1; iret=1;
buf[0]='\0'; buf[0]='\0';
pos=0; pos=0;
str_lowcase(ilow,instr);
sprintf(ibuf, "six[%s%s] ", ilow, sim);
while (1) { while (1) {
if (*p=='E') { /* Eager to ... */
strcpy(prompt, stdPrompt);
} else if (*p>'1') {
sprintf(prompt, "%s(%s) ", stdPrompt, p);
}
FD_ZERO(&mask); FD_ZERO(&mask);
FD_SET(fd, &mask); FD_SET(fd, &mask);
iret=term_get_line(buf, sizeof(buf)-2, &pos, ibuf, &mask); iret=term_get_line(buf, sizeof(buf)-2, &pos, prompt, &mask);
if (iret==STDIN_FILENO) { /* input line terminated */ if (iret==STDIN_FILENO) { /* input line terminated */
str_lowcase(lbuf, buf); str_lowcase(lbuf, buf);
if (0==strcmp(lbuf,"quit")) break; if (0==strcmp(lbuf,"quit")) break;
if (0==strcmp(lbuf,"exit")) break; if (0==strcmp(lbuf,"exit")) break;
statusMatch="status = ";
if (0==strcmp(lbuf,"stop")) { if (0==strcmp(lbuf,"stop")) {
strcpy(buf, "INT1712 3"); strcpy(buf, "INT1712 3");
} else if (0==strcmp(buf, "")) { } else if (0==strcmp(buf, "")) {
strcpy(buf, "status"); strcpy(buf, "status");
statusMatch=NULL;
} }
fputs("\n", stdout); fputs("\n", stdout);
skip=0; skip=0;
if (0==strcmp(lbuf,"sync")) {
printf("\rsynchronize ...\n"); ERR_I(sendCmd(fd, buf));
skip=1; ERR_P(p=readWrite(fd,1000,skip,statusMatch));
}
l=strlen(buf);
/*
printf("sent> %s[%d chars]\n", buf, l);
*/
buf[l]=13;
buf[l+1]=10;
ERR_SI(send(fd, buf, l+2, 0));
ERR_I(i=readWrite(fd,skip));
buf[0]='\0'; buf[0]='\0';
pos=0; pos=0;
} else if (iret<0) { /* ?? */ } else if (iret<0) { /* ?? */
printf("\nwhat?\n"); exit(1); printf("\nwhat?\n"); exit(1);
} else { /* socket iret ready to read */ } else { /* socket iret ready to read */
assert(fd==iret); assert(fd==iret);
ERR_I(readWrite(fd,0)); ERR_P(p=readWrite(fd,1000,0,"status = "));
} }
} }
fputs("\n", stdout); fputs("\n", stdout);

View File

@ -60,6 +60,7 @@ static SensorT
*heliumSens=NULL, *heliumSens=NULL,
*auxSens=NULL, *auxSens=NULL,
*testSens=NULL, *testSens=NULL,
*test2Sens=NULL,
*sens=&sensA; *sens=&sensA;
typedef struct { typedef struct {
@ -107,6 +108,7 @@ static float
tx=DATA_UNDEF, /* controlled temperature */ tx=DATA_UNDEF, /* controlled temperature */
tr=DATA_UNDEF, /* set temperature (read back) */ tr=DATA_UNDEF, /* set temperature (read back) */
te=DATA_UNDEF, /* test temperature */ te=DATA_UNDEF, /* test temperature */
tk=DATA_UNDEF, /* test temperature 2 */
he=DATA_UNDEF, /* helium level value */ he=DATA_UNDEF, /* helium level value */
aux=DATA_UNDEF, /* auxiliary value */ aux=DATA_UNDEF, /* auxiliary value */
ramp=0, ramp=0,
@ -582,7 +584,7 @@ int PrepInput(char *label) {
s=sensors[i]; s=sensors[i];
typ=chans[i]; typ=chans[i];
if (typ=='_') typ='\0'; if (typ=='_') typ='\0';
if (NULL==strchr("mnslhxft", typ)) ERR_MSG("unknown channel type code"); if (NULL==strchr("mnslhxftk", typ)) ERR_MSG("unknown channel type code");
if (typ!='\0') { if (typ!='\0') {
s->present=-1; s->present=-1;
} }
@ -711,6 +713,10 @@ void LogMinMax(int new) {
sprintf(buf1, " Te %.5g", te); sprintf(buf1, " Te %.5g", te);
str_append(buf, buf1); str_append(buf, buf1);
} }
if (tk!=DATA_UNDEF) {
sprintf(buf1, " Tk %.5g", tk);
str_append(buf, buf1);
}
} else if (nScan==0) { } else if (nScan==0) {
return; return;
} }
@ -954,6 +960,11 @@ int ReadTemp(void) {
} else { } else {
te=DATA_UNDEF; te=DATA_UNDEF;
} }
if (test2Sens != NULL) {
tk=test2Sens->t * test2Sens->scale;
} else {
tk=DATA_UNDEF;
}
if (heliumSens == NULL) { if (heliumSens == NULL) {
he=DATA_UNDEF; he=DATA_UNDEF;
} }
@ -1305,6 +1316,7 @@ int Settings(void) {
heliumSens=NULL; heliumSens=NULL;
auxSens=NULL; auxSens=NULL;
testSens=NULL; testSens=NULL;
test2Sens=NULL;
for (i=0; i<4+nScan; i++) { for (i=0; i<4+nScan; i++) {
s=sensors[i]; s=sensors[i];
if (s->present==1) { if (s->present==1) {
@ -1327,6 +1339,8 @@ int Settings(void) {
auxSens=s; auxSens=s;
} else if ('t'==typ) { } else if ('t'==typ) {
testSens=s; testSens=s;
} else if ('k'==typ) {
test2Sens=s;
} }
s->band=10; s->band=10;
} }
@ -1389,6 +1403,11 @@ int Settings(void) {
flds[k]=testSens->ch; flds[k]=testSens->ch;
k++; k++;
} }
fmt[k]=DisplayFmt(test2Sens);
if (fmt[k]!='\0' && k<=4) {
flds[k]=test2Sens->ch;
k++;
}
fmt[k]=DisplayFmt(auxSens); fmt[k]=DisplayFmt(auxSens);
if (fmt[k]!='\0' && k<=4) { if (fmt[k]!='\0' && k<=4) {
flds[k]=auxSens->ch; flds[k]=auxSens->ch;
@ -1493,7 +1512,7 @@ int ConfigByName(int plugNr) {
int PeriodicTask(void) { int PeriodicTask(void) {
char buf[256], lbuf[16]; char buf[256], lbuf[16];
char *next, *alms; char *next, *alms;
int i, k; int i, k, iret;
float t3[3], p, d, w, t; float t3[3], p, d, w, t;
if (nScan==0) { if (nScan==0) {
@ -1508,8 +1527,10 @@ int PeriodicTask(void) {
} }
if (noResp) { /* there was no response on an earlier command, or we are initializing */ if (noResp) { /* there was no response on an earlier command, or we are initializing */
k=serialNo; /* check serial number */ k=serialNo; /* check serial number */
ERR_P(LscCmd(ser, "*IDN?>buf1,buf2,serialNo,")); ERR_P(LscCmd(ser, "*IDN?>buf1,buf2,buf3,"));
if (0!=strcmp(buf1, "LSCI") || 0!=strcmp(buf2, "MODEL340") || serialNo==0) return 0; serialNo=1;
sscanf(buf3, "%d", &serialNo); /* illegal serial No. will be 1 for buggy controller */
if (0!=strcmp(buf1, "LSCI") || 0!=strcmp(buf2, "MODEL340")) return 0;
if (k!=serialNo) { /* controller exchanged or we are initializing */ if (k!=serialNo) { /* controller exchanged or we are initializing */
if (k!=0) { if (k!=0) {
logfileOut(LOG_MAIN, "controller connected\n"); logfileOut(LOG_MAIN, "controller connected\n");
@ -2159,6 +2180,9 @@ int StatusHdl(int mode, void *base, int fd) {
if (testSens!=NULL) { if (testSens!=NULL) {
ERR_I(ShowSensor(&buf, testSens, "T", "K", 0)); ERR_I(ShowSensor(&buf, testSens, "T", "K", 0));
} }
if (test2Sens!=NULL) {
ERR_I(ShowSensor(&buf, test2Sens, "T", "K", 0));
}
for (i=4; i<4+nScan; i++) { for (i=4; i<4+nScan; i++) {
ERR_I(ShowSensor(&buf, sensors[i], "T", "K", 0)); ERR_I(ShowSensor(&buf, sensors[i], "T", "K", 0));
} }
@ -2401,6 +2425,7 @@ int main(int argc, char *argv[]) {
CocDefFlt(tr, RD); CocDefFlt(tr, RD);
CocDefFlt(tx, RD); CocDefFlt(tx, RD);
CocDefFlt(te, RD); CocDefFlt(te, RD);
CocDefFlt(tk, RD);
CocDefFlt(aux, RD); CocDefFlt(aux, RD);
CocDefFlt(he, RD); CocDefFlt(he, RD);
CocDefFlt(fbuf, RD); CocDefFlt(fbuf, RD);
@ -2568,6 +2593,7 @@ int main(int argc, char *argv[]) {
ERR_P(DataCreateSet(NULL, "Ts", &ts, 5, LOGLIFETIME, tim)); ERR_P(DataCreateSet(NULL, "Ts", &ts, 5, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "Tr", &tr, 5, LOGLIFETIME, tim)); ERR_P(DataCreateSet(NULL, "Tr", &tr, 5, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "Te", &te, 5, LOGLIFETIME, tim)); ERR_P(DataCreateSet(NULL, "Te", &te, 5, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "Tk", &tk, 5, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "He", &he, 5, LOGLIFETIME, tim)); ERR_P(DataCreateSet(NULL, "He", &he, 5, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "T1", &sensA1.t, 5, LOGLIFETIME, tim)); ERR_P(DataCreateSet(NULL, "T1", &sensA1.t, 5, LOGLIFETIME, tim));
ERR_P(DataCreateSet(NULL, "T2", &sensA2.t, 5, LOGLIFETIME, tim)); ERR_P(DataCreateSet(NULL, "T2", &sensA2.t, 5, LOGLIFETIME, tim));

View File

@ -16,6 +16,29 @@ static char response[COC_RES_LEN];
static char *rwCode="rwacs"; static char *rwCode="rwacs";
static char *rdCode="rdacs"; static char *rdCode="rdacs";
pTecsClient TeccStart(char *startcmd, char *host, int port) {
CocConn *conn;
char *code, *cmd, thishost[64], *th;
int iret;
NEW(conn, CocConn);
code=rwCode;
cmd=startcmd;
if (host[0]!='\0') {
gethostname(thishost, sizeof(thishost));
th=getenv(thishost);
if (th==NULL) th=thishost;
if (0!=strcmp(th, host)) {
code=rdCode;
cmd="";
}
}
ERR_I(iret=CocInitClient(conn, host, port, code, 0, cmd));
if (iret==1) ErrShort("TECS_INIT: can not connect to TecsServer");
return((pTecsClient)conn);
OnError: return(NULL);
}
pTecsClient TeccInit(char *startcmd, int port) { pTecsClient TeccInit(char *startcmd, int port) {
CocConn *conn=NULL; CocConn *conn=NULL;
char *code, host[64]; char *code, host[64];
@ -37,27 +60,6 @@ pTecsClient TeccInit(char *startcmd, int port) {
return(NULL); return(NULL);
} }
pTecsClient TeccStart(char *startcmd, char *host, int port) {
CocConn *conn;
char *code, *cmd, thishost[64];
int iret;
NEW(conn, CocConn);
code=rwCode;
cmd=startcmd;
if (host[0]!='\0') {
gethostname(thishost, sizeof(thishost));
if (0!=strcmp(thishost, host)) {
code=rdCode;
cmd="";
}
}
ERR_I(iret=CocInitClient(conn, host, port, code, 0, cmd));
if (iret==1) ErrShort("TECS_INIT: can not connect to TecsServer");
return((pTecsClient)conn);
OnError: return(NULL);
}
int TeccGet3(pTecsClient conn, float *tC, float *tX, float *tP) { int TeccGet3(pTecsClient conn, float *tC, float *tX, float *tP) {
int iret; int iret;

View File

@ -3,7 +3,7 @@
character*(*) auxpar character*(*) auxpar
integer dmax, nmax, tmax, amax, nmenu, chartperiod, naux integer dmax, nmax, tmax, amax, nmenu, chartperiod, naux
parameter (dmax=400, nmax=9, tmax=8, amax=3, nmenu=13 parameter (dmax=400, nmax=10, tmax=9, amax=3, nmenu=13
1 , chartperiod=5, naux=1) 1 , chartperiod=5, naux=1)
integer minRange, maxRange, oneDay integer minRange, maxRange, oneDay
parameter (minRange=60, maxRange=7*24*3600, oneDay=24*3600) parameter (minRange=60, maxRange=7*24*3600, oneDay=24*3600)
@ -20,7 +20,7 @@
integer l,j,i,n,t,leng,i1,i2,rl,startday,thisday integer l,j,i,n,t,leng,i1,i2,rl,startday,thisday
integer ncol, nset, mode integer ncol, nset, mode
integer first,last,step,tbase,lastj integer first,last,step,tbase,lastj
integer colorList(nmax)/5,3,2,4,6,8,14,15,8/ integer colorList(nmax)/5,3,2,4,6,8,14,15,9,8/
integer color(nmax) integer color(nmax)
integer retLen(nmax) integer retLen(nmax)
integer sel/0/, sel1, sel2, auxsel/1/ integer sel/0/, sel1, sel2, auxsel/1/
@ -43,7 +43,7 @@
1 'Mon','Tue','Wed','Thu','Fri','Sat','Sun'/ 1 'Mon','Tue','Wed','Thu','Fri','Sat','Sun'/
character buf*8, device*8, name*40, filnam*128, numb*16 character buf*8, device*8, name*40, filnam*128, numb*16
character title*64, pars*64 character title*64, pars*64
character*4 tpar(tmax)/'Te','Tr','Tm','Ts','T1','T2','T3','T4'/ character*4 tpar(tmax)/'Te','Tr','Tm','Ts','Tk','T1','T2','T3','T4'/
character*4 apar(amax)/'P', 'He', 'Aux'/ character*4 apar(amax)/'P', 'He', 'Aux'/
character*16 parnam(nmax) character*16 parnam(nmax)
logical gap, done logical gap, done
@ -75,7 +75,7 @@
print *,'No PGPLOT-Device defined' print *,'No PGPLOT-Device defined'
goto 9 goto 9
endif endif
call sys_setenv('PGPLOT_DEV', device) call sys_setenv('PGPLOT_DEV', '/'//device)
endif endif
call pgqcol(i,ncol) call pgqcol(i,ncol)
@ -728,7 +728,7 @@
real*4 xd(dmax,nmax), yd(dmax,nmax) real*4 xd(dmax,nmax), yd(dmax,nmax)
integer oneDay, maxn integer oneDay, maxn
parameter (oneDay = 24*3600, maxn=9) parameter (oneDay = 24*3600, maxn=10)
integer tecs_get_data integer tecs_get_data
integer i,j,rl(maxn),m,k,n,mm integer i,j,rl(maxn),m,k,n,mm

View File

@ -104,7 +104,13 @@ int term_get_key(char *key, int msecTmo) {
} else if (k >= 'l' && k <= 'y') { } else if (k >= 'l' && k <= 'y') {
k=k-64; k=k-64;
} else { } else {
k='?'; switch (k) { /* L,R,U,D arrows */
case 'D': k=L_ARROW; break;
case 'C': k=R_ARROW; break;
case 'A': k=U_ARROW; break;
case 'B': k=D_ARROW; break;
default: k='?';
}
} }
break; break;
case '\177': /* del */ case '\177': /* del */
@ -132,6 +138,14 @@ static char *history[HISTORY_LINES]={NULL};
static int hist_pos=0; /* position when scrolling through the history */ static int hist_pos=0; /* position when scrolling through the history */
static int hist_end=0; /* end of history. Always history[hist_end]==NULL */ static int hist_end=0; /* end of history. Always history[hist_end]==NULL */
static int dirty=0; /* line is to be cleared through a call of term_clear_line */
void term_clear(void) {
if (dirty) {
fputs("\r\033[K", stdout);
dirty=0;
}
}
int term_get_line(char *buf, int size, int *pos, char *prompt, fd_set *mask) { int term_get_line(char *buf, int size, int *pos, char *prompt, fd_set *mask) {
char key, *lin; char key, *lin;
@ -166,13 +180,13 @@ int term_get_line(char *buf, int size, int *pos, char *prompt, fd_set *mask) {
} }
switch (key) { switch (key) {
case EVT_CHAR: case EVT_CHAR:
fputs("\r\033[K", stdout); /* caller must clear line before next write with term_clear() */
dirty=1;
return(iret); return(iret);
/* interrupted EXIT */ /* interrupted EXIT */
case RET_CHAR: case RET_CHAR:
/* fputs("\r\033[K", stdout); */
i=hist_end-1; if (i<0) i=HISTORY_LINES-1; i=hist_end-1; if (i<0) i=HISTORY_LINES-1;
if ((history[i]==NULL || 0!=strcmp(history[i], buf)) && buf[0]!='\0') { /* do not save equal and empty lines */ if ((history[i]==NULL || 0!=strcmp(history[i], buf)) && buf[0]!='\0') { /* do not save equal and empty lines */
buflen=strlen(buf)+1; buflen=strlen(buf)+1;

View File

@ -14,6 +14,8 @@ int term_wait_fd(int fd, int msecTmo);
int term_get_key(char *key, int msecTmo); int term_get_key(char *key, int msecTmo);
void term_clear(void);
int term_get_line(char *buf, int size, int *pos, char *prompt, fd_set *mask); int term_get_line(char *buf, int size, int *pos, char *prompt, fd_set *mask);
#endif /* TERM_H_ */ #endif /* TERM_H_ */