- remove all stuff related to tecs
This commit is contained in:
2
make_gen
2
make_gen
@ -14,7 +14,7 @@ OBJ=psi.o buffer.o ruli.o sps.o pimotor.o charbychar.o\
|
||||
amorstat.o tasinit.o ptasdrive.o tasutil.o tasscan.o swmotor.o \
|
||||
polterwrite.o ecb.o frame.o \
|
||||
el737driv.o sinqhmdriv.o tdchm.o \
|
||||
sanscook.o tecsdriv.o itc4driv.o itc4.o\
|
||||
sanscook.o itc4driv.o itc4.o\
|
||||
bruker.o ltc11.o eurodriv.o \
|
||||
el755driv.o serial.o scontroller.o t_update.o \
|
||||
t_rlp.o t_conv.o el737hpdriv.o el734hp.o \
|
||||
|
17
psi.c
17
psi.c
@ -26,7 +26,6 @@
|
||||
#include <site.h>
|
||||
#include "sinqhmdriv.i"
|
||||
#include "tdchm.h"
|
||||
#include "tecsdriv.h"
|
||||
#include "itc4.h"
|
||||
#include "bruker.h"
|
||||
#include "ltc11.h"
|
||||
@ -312,9 +311,7 @@ static void ConfigureController(char *name, pEVControl pNew,
|
||||
{
|
||||
EVCSetPar(pNew, "upperlimit", 300.0, pCon);
|
||||
EVCSetPar(pNew, "lowerlimit", 1.0, pCon);
|
||||
if (strcmp(name, "tecs") == 0) {
|
||||
TecsCustomize(pCon, pNew);
|
||||
} else if (strcmp(name, "euro") == 0) {
|
||||
if (strcmp(name, "euro") == 0) {
|
||||
EVCSetPar(pNew, "upperlimit", 750.0, pCon);
|
||||
EVCSetPar(pNew, "lowerlimit", 15.0, pCon);
|
||||
} else if (strcmp(name, "el755") == 0) {
|
||||
@ -350,17 +347,7 @@ static pEVControl InstallPsiEnvironmentController(SicsInterp * pSics,
|
||||
for the device. If 0 the default command will be installed later on
|
||||
*/
|
||||
|
||||
if (strcmp(argv[3], "tecs") == 0) {
|
||||
checkError = 1;
|
||||
pDriv = CreateTecsDriver(argc - 4, &argv[4]);
|
||||
if (pDriv != NULL) {
|
||||
pNew = CreateEVController(pDriv, argv[2], &status);
|
||||
if (pNew) {
|
||||
AddCommand(pSics, argv[2], TecsWrapper, DeleteEVController, pNew);
|
||||
commandInstalled = 1;
|
||||
}
|
||||
}
|
||||
} else if (strcmp(argv[3], "itc4") == 0) {
|
||||
if (strcmp(argv[3], "itc4") == 0) {
|
||||
checkError = 1;
|
||||
pDriv = CreateITC4Driver(argc - 4, &argv[4]);
|
||||
if (pDriv) {
|
||||
|
@ -1 +0,0 @@
|
||||
cd ../../obj/$SICS_VERSION/psi/tecs
|
@ -1,5 +0,0 @@
|
||||
sensA.type=m sensA.curve=mz020124
|
||||
sensB.type=s sensB.curve=r10409
|
||||
dev="APD closed cycle refrigerator (TriCS)"
|
||||
tlimit=310 resist=40 maxPower=16
|
||||
prop=15 int=10 deriv=0
|
@ -1,2 +0,0 @@
|
||||
sensC.type=x
|
||||
dev="APD auxilliary sensor"
|
@ -1,7 +0,0 @@
|
||||
sensA.type=k sensA.curve=x31318
|
||||
sensB.type=s sensB.curve=std4
|
||||
sensD.type=t sensD.curve=x31319
|
||||
dev="4 K closed cycle refrigerator (FOCUS)"
|
||||
tlimit=700 resist=25 maxPower=100
|
||||
sensA.alarm=310
|
||||
prop=50 int=20 deriv=0
|
@ -1,8 +0,0 @@
|
||||
sensA.type=t sensA.curve=x14231 sensA.alarm=310
|
||||
sensB.type=m sensB.curve=pt
|
||||
sensC.type=k sensC.curve=x10409
|
||||
sensD.type=s sensD.curve=x24506
|
||||
|
||||
dev="4 K closed cycle refrigerator (FOCUS) with hi-T stage"
|
||||
tlimit=700 resist=25 maxPower=100
|
||||
prop=50 int=20 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=x31319
|
||||
dev="4 K closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=100
|
||||
prop=50 int=20 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=r10401
|
||||
dev="CTI closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=r10402
|
||||
dev="CTI closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=r10403
|
||||
dev="CTI closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,5 +0,0 @@
|
||||
sensA.type=t sensA.curve=r10411 sensA.alarm=300
|
||||
sensB.type=m sensB.curve=rhfe4140
|
||||
dev="CTI closed cycle refrigerator (30...475 K)"
|
||||
tlimit=600 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=r10410
|
||||
dev="CTI closed cycle refrigerator (high power)"
|
||||
tlimit=310 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,5 +0,0 @@
|
||||
sensA.type=m sensA.curve=std1
|
||||
sensB.type=t sensB.curve=r10413
|
||||
dev="CTI closed cycle refrigerator (FOCUS, 475 K)"
|
||||
tlimit=474 resist=50 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensC.type=s sensC.curve=rxdil
|
||||
sensD.type=h full=0.0 empty=0.5
|
||||
dev="dilution (Risoe)"
|
||||
tlimit=375 resist=25 maxpower=25
|
||||
prop=20 int=10 deriv=0
|
||||
loop=2
|
||||
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=psam
|
||||
sensB.type=n sensB.curve=g24741
|
||||
dev="Displex closed cycle refrigerator C"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
sensA.lim=30 sensB.lim=60
|
||||
prop=15 int=10 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=x31317
|
||||
dev="Displex closed cycle refrigerator E"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=15 int=10 deriv=0
|
@ -1,10 +0,0 @@
|
||||
sensA.type=f
|
||||
sensB.type=t sensB.curve=rhfe4140 sensB.alarm=323
|
||||
sensC.type=s sensC.curve=std6
|
||||
sensD.type=m sensD.curve=std6
|
||||
dev="ILL Furnace (1500 K, typ K)"
|
||||
tlimit=1500 resist=1000 maxPower=2000 powfact=2000
|
||||
controlmode=1
|
||||
prop=3 int=0.3 deriv=0
|
||||
lscfg="LINEAR A,2,1.6,3,1,-1.4;INTYPE A,0,1,2,10,12;DISPFLD 4,A,4;DISPLAY:4"
|
||||
|
@ -1,5 +0,0 @@
|
||||
sensC.type=m sensC.curve=std6
|
||||
sensD.type=s sensD.curve=std6
|
||||
dev="small furnace"
|
||||
tlimit=800 resist=25 maxPower=100
|
||||
prop=10 int=5 deriv=0
|
@ -1,9 +0,0 @@
|
||||
sensA.type=f
|
||||
sensB.type=t sensB.curve=rhfe4140 sensB.alarm=373
|
||||
sensC.type=s sensC.curve=std6
|
||||
sensD.type=m sensD.curve=std6
|
||||
dev="tantalum furnace (1400 K)"
|
||||
tlimit=1405 resist=1000 maxPower=50 powfact=2000
|
||||
controlmode=1
|
||||
prop=10 int=5 deriv=0
|
||||
lscfg="LINEAR A,2,1.6,3,1,-1.4;INTYPE A,0,1,2,10,12;DISPFLD 4,A,4;DISPLAY:4"
|
@ -1,10 +0,0 @@
|
||||
sensA.type=f
|
||||
sensB.type=t sensB.curve=rhfe4140 sensB.alarm=323
|
||||
sensC.type=s sensC.curve=type_c sensC.scale=2.0 sensC.kink=333.15
|
||||
sensD.type=m sensD.curve=type_c sensD.scale=2.0 sensD.kink=333.15
|
||||
dev="ILL Furnace (2000 K, typ C / W5)"
|
||||
tlimit=1850 resist=1000 maxPower=2000 powfact=2000
|
||||
controlmode=1
|
||||
prop=3 int=0.3 deriv=0
|
||||
lscfg="LINEAR A,2,1.6,3,1,-1.4;INTYPE A,0,1,2,10,12;DISPFLD 4,A,4;DISPLAY:4"
|
||||
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=r3510
|
||||
sensB.type=t sensB.curve=r3509
|
||||
sensC.type=s sensC.curve=x14126
|
||||
dev="He-flow 4 circle cryostat"
|
||||
tlimit=310 resist=50 maxPower=25
|
||||
prop=50 int=20 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=pt_ill sensA.lim=30
|
||||
sensB.type=n sensB.curve=c_ab sensB.lim=40
|
||||
sensC.type=l sensC.curve=c_ill sensC.lim=40
|
||||
sensD.type=s sensD.curve=pt_ill sensD.lim=30
|
||||
dev="high pressure orange cryostat 63ILLHV70"
|
||||
tLimit=310 resist=50 maxpower=50 controlMode=0 full=4.64
|
||||
prop=25 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensB.type=m sensB.curve=x15601
|
||||
sensC.type=s sensC.curve=x12532
|
||||
sensD.type=h
|
||||
dev="orange cryostat 50 mm"
|
||||
tLimit=310 resist=50 maxpower=25 controlMode=0
|
||||
prop=25 int=10 deriv=0
|
||||
full=4.64
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=ds3b
|
||||
sensC.type=s sensC.curve=x14130
|
||||
sensD.type=h
|
||||
dev="orange cryostat 70 mm"
|
||||
tLimit=310 resist=50 maxpower=25 controlMode=0 full=4.64
|
||||
prop=25 int=10 deriv=0
|
@ -1,2 +0,0 @@
|
||||
sensC.type=s sensC.curve=x22637
|
||||
dev="uniaxial pressure insert for ILL2"
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=rhfe8119
|
||||
sensB.type=h
|
||||
sensC.type=s sensC.curve=rhfe8244
|
||||
dev="cryofurnace without power supply"
|
||||
tLimit=450 resist=10 maxpower=40 controlMode=0 full=4.64
|
||||
prop=25 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=rhfe8119
|
||||
sensB.type=h
|
||||
sensC.type=s sensC.curve=rhfe8244
|
||||
dev="cryofurnace with power supply"
|
||||
tLimit=600 resist=1000 maxpower=180 powFact=45
|
||||
prop=25 int=10 deriv=0
|
||||
controlMode=0 full=4.64
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=dt-470
|
||||
sensB.type=h
|
||||
sensC.type=s sensC.curve=x13089
|
||||
dev="FOCUS orange cryostat 70 mm"
|
||||
tLimit=310 resist=50 maxpower=25 controlMode=0 full=4.64
|
||||
prop=25 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensB.type=m sensB.curve=x10045
|
||||
sensC.type=s sensC.curve=x09882
|
||||
sensD.type=h
|
||||
dev="maxi orange crostat 100 mm"
|
||||
tLimit=310 resist=50 maxpower=25 controlMode=0 full=4.64
|
||||
prop=25 int=10 deriv=0
|
||||
sensA.alarm=0
|
@ -1,3 +0,0 @@
|
||||
sensC.type=s sensC.curve=x09883
|
||||
sensD.type=h
|
||||
dev="precoolable sample stick for maxi orange cryostat"
|
@ -1,30 +0,0 @@
|
||||
# Code list for SE devices connected via LSC340
|
||||
#
|
||||
ill1 1 -1
|
||||
ill2 2 -2
|
||||
ill2p -3
|
||||
ill3 3 -5
|
||||
ill4 4 -6
|
||||
ill5 5 -4
|
||||
ill5n -7
|
||||
cti1 6
|
||||
cti2 7
|
||||
cti3 8
|
||||
cti4 9
|
||||
cti6 11
|
||||
apd 12
|
||||
apdl -9
|
||||
ccr4k 13
|
||||
dil -18
|
||||
ccr2 28 -28
|
||||
hef4c 14 -11
|
||||
sup4t 15 60
|
||||
ma09 19 -19
|
||||
dise 26 -26
|
||||
ori1 29 -29
|
||||
ori2 25 -25
|
||||
ori3 22 -22
|
||||
ma11_test -27
|
||||
ma02 23 -23
|
||||
ma15 24
|
||||
dil2 -34
|
@ -1,5 +0,0 @@
|
||||
sensA.type=m sensA.curve=x29746
|
||||
sensC.type=s sensC.curve=x29630
|
||||
dev="1.8 T horizontal cryomagnet (Risoe)"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=15 int=10 deriv=0
|
@ -1,9 +0,0 @@
|
||||
sensA.type=m sensA.curve=c17844
|
||||
sensB.type=t sensB.curve=cplus70
|
||||
sensC.type=s sensC.curve=x22642
|
||||
sensD.type=h full=0.0 empty=0.5
|
||||
dev="9 T vertical cryomagnet (Risoe)"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
swRangeOn=1
|
||||
prop=20 int=10 deriv=0
|
||||
lscfg="dispfld 4,B,3;display 4"
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=x14667
|
||||
sensB.type=t sensB.curve=std4
|
||||
sensC.type=s sensC.curve=x23167
|
||||
sensD.type=k sensD.curve=std4
|
||||
dev="11 T horizontal SANS cryomagnet"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=10 int=10 deriv=0
|
@ -1,3 +0,0 @@
|
||||
sensC.type=t sensC.curve=cma11
|
||||
dev="SANS test carbon resistors"
|
||||
lscfg="dispfld 2,C,3;display 2"
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=x14667
|
||||
sensB.type=t sensB.curve=std4
|
||||
sensC.type=s sensC.curve=x12905
|
||||
sensD.type=k sensD.curve=ccs130
|
||||
dev="11 T horizontal SANS cryomagnet"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=10 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=x14667
|
||||
sensB.type=t sensB.curve=std4
|
||||
sensC.type=s sensC.curve=x17627
|
||||
sensD.type=k sensD.curve=std4
|
||||
dev="11T SANS cryomagnet with rotatable sample stick"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=10 int=10 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=s sensA.curve=x31254
|
||||
dev="15 T rotatable sample stick"
|
||||
tlimit=310 resist=40 maxpower=40
|
||||
prop=15 int=10 deriv=0
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=pcry sensA.lim=50
|
||||
sensB.type=n sensB.curve=c030311 sensB.lim=60
|
||||
sensC.type=s sensC.curve=x24506
|
||||
dev="orange cryostat 50 mm (Risoe)"
|
||||
tlimit=310 resist=50 maxpower=50 controlmode=0
|
||||
prop=25 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=pcry sensA.lim=30
|
||||
sensB.type=n sensB.curve=c030307 sensB.lim=40
|
||||
sensC.type=t sensC.curve=psam
|
||||
sensD.type=s sensD.curve=x2060
|
||||
dev="orange cryostat 50 mm (Risoe)"
|
||||
tlimit=310 resist=50 maxpower=50 controlmode=0
|
||||
prop=25 int=10 deriv=0
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=pcry sensA.lim=50
|
||||
sensB.type=n sensB.curve=c020415 sensB.lim=60
|
||||
sensC.type=s sensC.curve=x22643
|
||||
dev="maxi orange cryostat 100 mm (Risoe)"
|
||||
tlimit=310 resist=50 maxpower=50 controlmode=0
|
||||
prop=25 int=10 deriv=0
|
@ -1,2 +0,0 @@
|
||||
INCRV C,0;LINEAR C:2,0.01,1,2
|
||||
DISPFLD 2,C,4;DISPFLD 3,A,3;DISPLAY:3
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=rx1976 sensA.scale=0.01
|
||||
dev="LTF dilution cryostat"
|
||||
tlimit=12.0 resist=708 maxPower=0.01 powfact=0.03
|
||||
prop=50 int=10 deriv=0
|
||||
lscfg="INCRV C,0;LINEAR C:2,0.01,1,2;DISPFLD 2,C,4;DISPFLD 3,A,3;DISPLAY:3"
|
||||
|
@ -1,6 +0,0 @@
|
||||
sensA.type=m sensA.curve=rx1611 sensA.scale=0.01
|
||||
dev="LTF dilution cryostat"
|
||||
tlimit=12.0 resist=708 maxPower=0.01 powfact=0.03
|
||||
prop=50 int=10 deriv=0
|
||||
lscfg="INCRV C,0;LINEAR C:2,0.01,1,2;DISPFLD 2,C,4;DISPFLD 3,A,3;DISPLAY:3"
|
||||
|
@ -1,5 +0,0 @@
|
||||
sensA.type=m sensA.curve=ruox
|
||||
sensB.type=h
|
||||
dev="4 T vertical cryomagnet"
|
||||
tlimit=273 resist=440 maxPower=5 full=4.6
|
||||
prop=20 int=3 deriv=0
|
@ -1,5 +0,0 @@
|
||||
display 8
|
||||
dispfld 5,A01,3
|
||||
dispfld 6,A02,3
|
||||
dispfld 7,A03,3
|
||||
dispfld 8,A04,3
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=x14667
|
||||
sensB.type=t sensB.curve=std4
|
||||
sensC.type=s sensC.curve=x23167
|
||||
sensD.type=k sensD.curve=std4
|
||||
DEV="11 T horizontal SANS cryomagnet"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=10 int=10 deriv=0
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=x14667
|
||||
sensB.type=t sensB.curve=std4
|
||||
sensC.type=s sensC.curve=x17627
|
||||
sensD.type=k sensD.curve=std4
|
||||
DEV="11T SANS cryomagnet with rotatable sample stick"
|
||||
tlimit=310 resist=50 maxpower=50
|
||||
prop=10 int=10 deriv=0
|
@ -1,5 +0,0 @@
|
||||
sensA.type=m sensA.curve=x12533
|
||||
dev="variox cryostat"
|
||||
tlimit=375 resist=25 maxpower=25
|
||||
prop=20 int=10 deriv=0
|
||||
loop=2
|
@ -1,539 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/socket.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include <signal.h>
|
||||
#include "myc_err.h"
|
||||
#include "coc_util.h"
|
||||
#include "coc_client.h"
|
||||
#include "myc_str.h"
|
||||
|
||||
/* --- non ANSI signal --- */
|
||||
#ifndef SIGPIPE
|
||||
#define SIGPIPE 13
|
||||
#endif
|
||||
|
||||
#define COC_NETTMO 5
|
||||
#define COC_RESTMO 60
|
||||
|
||||
#define ARG_CHAR 1
|
||||
#define ARG_INT 2
|
||||
#define ARG_FLT 3
|
||||
#define ARG_ARR 4
|
||||
#define ARG_OUT 5
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocConnect(CocConn *conn) { /* connect, but do not start */
|
||||
int i;
|
||||
struct sockaddr_in sadr;
|
||||
|
||||
ERR_I(CocCreateSockAdr(&sadr, conn->host, conn->port));
|
||||
ERR_SI(conn->fd=socket(AF_INET, SOCK_STREAM, 0));
|
||||
i = 1;
|
||||
ERR_SI(setsockopt(conn->fd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(int))); /* allow quick port reuse */
|
||||
i=connect(conn->fd, (struct sockaddr *)&sadr, sizeof(sadr));
|
||||
if (i<0) {
|
||||
close(conn->fd);
|
||||
conn->fd=-1;
|
||||
if (errno==ECONNREFUSED) return(1);
|
||||
ERR_COD(errno);
|
||||
}
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocOpen(CocConn *conn) { /* connect and start, if not succsessful */
|
||||
int i, try, tmo;
|
||||
|
||||
ERR_I(i=CocConnect(conn));
|
||||
if (i==0) return(0);
|
||||
/* connection refused */
|
||||
if (conn->startcmd[0]=='\0') {
|
||||
CocDelay(500);
|
||||
ErrTxt("connect",1); return(1);
|
||||
}
|
||||
|
||||
printf("Starting TecsServer ...\n\n%s\n", conn->startcmd);
|
||||
ERR_I(system(conn->startcmd));
|
||||
|
||||
try=15;
|
||||
tmo=100; /* wait total ca. 10 sec. for max. 15 tries */
|
||||
while (try>0) {
|
||||
try--;
|
||||
CocDelay(tmo); tmo=tmo*5/4;
|
||||
ERR_I(i=CocConnect(conn));
|
||||
if (i==0) {
|
||||
printf("\n... connected to TecsServer\n");
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
ERR_MSG("can not start TECS, too many retries");
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocInitClient(CocConn *conn, char *host, int port, char *magic, int bufsize, char *startcmd) {
|
||||
int iret;
|
||||
assert(conn!=NULL);
|
||||
if (bufsize==0) bufsize=1024;
|
||||
StrLink(&conn->cmdbuf, conn->cmdbuf_);
|
||||
StrLink(&conn->resbuf, conn->resbuf_);
|
||||
conn->port=port;
|
||||
ERR_I(str_copy(conn->host, host));
|
||||
ERR_I(str_copy(conn->magic, magic));
|
||||
ERR_I(str_copy(conn->startcmd, startcmd));
|
||||
conn->fd=-1;
|
||||
ERR_I(iret=CocOpen(conn));
|
||||
if (iret==0) {
|
||||
iret=CocSendMagic(conn, conn->magic);
|
||||
if (iret<0) {
|
||||
CocCloseClient(conn);
|
||||
iret=1;
|
||||
}
|
||||
}
|
||||
return(iret);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocSendMagic(CocConn *conn, char *magic) {
|
||||
char *err;
|
||||
|
||||
if (magic != conn->magic) {
|
||||
str_copy(conn->magic, magic);
|
||||
}
|
||||
StrClear(&conn->resbuf); /* use return buffer for command in order to preserve command buffer */
|
||||
ERR_I(StrPut(&conn->resbuf, "", COC_MAGIC));
|
||||
ERR_I(StrPut(&conn->resbuf, magic, COC_SEP));
|
||||
ERR_I(CocSend(conn->fd, conn->resbuf.buf, conn->resbuf.wrpos));
|
||||
ERR_I(CocRecv(conn->fd, &conn->resbuf, COC_NETTMO, NULL));
|
||||
ERR_P(err=StrGet(&conn->resbuf, NULL, COC_SEP));
|
||||
if (err[0]!=COC_MAGIC) ERR_MSG("magic synch error");
|
||||
if (err[1]!='\0') { ErrMsg(err+1); ErrTxt(": (response from server)",0); goto OnError; }
|
||||
ERR_I(StrGetEnd(&conn->resbuf));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocCheck(CocConn *conn) {
|
||||
|
||||
if (conn->fd<0) return(1);
|
||||
ERR_I(CocSend(conn->fd, "_quit", 6));
|
||||
ERR_I(CocRecv(conn->fd, &conn->resbuf, COC_NETTMO, NULL));
|
||||
return(0);
|
||||
OnError:
|
||||
if (ErrCode==ECONNRESET || ErrCode==EPIPE) return(1);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocTryCmd(CocConn *conn) {
|
||||
int iret=-1;
|
||||
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
if (conn->fd<0) {
|
||||
ERR_I(iret=CocConnect(conn)); /* was CocOpen earlier */
|
||||
if (iret == 1) {
|
||||
CocDelay(500);
|
||||
ErrTxt("connect",1); return (-1);
|
||||
}
|
||||
|
||||
iret=-1;
|
||||
ERR_I(CocSendMagic(conn, conn->magic));
|
||||
}
|
||||
ERR_I(CocSend(conn->fd, conn->cmdbuf.buf, conn->cmdbuf.wrpos));
|
||||
ERR_I(CocRecv(conn->fd, &conn->resbuf, COC_NETTMO, NULL));
|
||||
return(0);
|
||||
OnError:
|
||||
if (ErrCode==ECONNRESET || ErrCode==EPIPE) return(-2);
|
||||
return(iret);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocCmdWithRetry(CocConn *conn) {
|
||||
int cnt, iret;
|
||||
|
||||
if (conn==NULL) ERR_MSG("not connected");
|
||||
cnt=3;
|
||||
while (1) {
|
||||
cnt--;
|
||||
if (cnt<=0) {
|
||||
ERR_I(CocTryCmd(conn));
|
||||
break;
|
||||
}
|
||||
iret=CocTryCmd(conn);
|
||||
if (iret>=0) break;
|
||||
if (conn->fd > 0) close(conn->fd);
|
||||
conn->fd=-1;
|
||||
if (iret==-1) goto OnError; /* severe error */
|
||||
ErrShort(ErrMessage);
|
||||
ErrShort("try to reconnect");
|
||||
}
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
void CocReset(CocConn *conn) {
|
||||
assert(conn!=NULL);
|
||||
StrClear(&conn->cmdbuf);
|
||||
if (conn->synch!=COC_SYN0) {
|
||||
conn->synch=COC_SYN0;
|
||||
} else {
|
||||
conn->synch=COC_SYN1;
|
||||
}
|
||||
StrPut(&conn->cmdbuf, "", conn->synch);
|
||||
conn->nargs=0;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocPushArg(CocConn *conn, const char *name, void *value, int type, int size) {
|
||||
StrBuf *buf;
|
||||
int n;
|
||||
|
||||
assert(conn!=NULL);
|
||||
assert(NULL==strchr(name, ' '));
|
||||
buf=&conn->cmdbuf;
|
||||
n=conn->nargs;
|
||||
if (n>=sizeof(conn->args)/sizeof(conn->args[0])) ERR_MSG("too many return arguments");
|
||||
conn->args[n].adr=value;
|
||||
conn->args[n].type=type;
|
||||
conn->args[n].size=size;
|
||||
conn->args[n].cmd=buf->buf + buf->wrpos;
|
||||
conn->nargs=n+1;
|
||||
if (value==NULL) {
|
||||
ERR_I(StrPut(buf, name, ' '));
|
||||
} else {
|
||||
ERR_I(StrPut(buf, name, COC_SEP));
|
||||
}
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocPutStr(CocConn *conn, const char *name, const char *value) {
|
||||
|
||||
ERR_I(CocPushArg(conn, name, NULL, ARG_CHAR, 0));
|
||||
ERR_I(StrPut(&conn->cmdbuf, value, COC_SEP));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocPutFloat(CocConn *conn, const char *name, float value) {
|
||||
|
||||
ERR_I(CocPushArg(conn, name, NULL, ARG_FLT, 0));
|
||||
ERR_I(StrPutFloat(&conn->cmdbuf, value, COC_SEP));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocPutArray(CocConn *conn, const char *name, float *value, int value_size) {
|
||||
|
||||
ERR_I(CocPushArg(conn, name, NULL, ARG_ARR, 0));
|
||||
ERR_I(StrPutArray(&conn->cmdbuf, value, value_size));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocPutInt(CocConn *conn, const char *name, int value) {
|
||||
|
||||
ERR_I(CocPushArg(conn, name, NULL, ARG_INT, 0));
|
||||
ERR_I(StrPutInt(&conn->cmdbuf, value, COC_SEP));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocGetStr(CocConn *conn, const char *name, char *value, int value_len) {
|
||||
|
||||
return(CocPushArg(conn, name, value, ARG_CHAR, value_len));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocGetFloat(CocConn *conn, const char *name, float *value) {
|
||||
|
||||
return(CocPushArg(conn, name, value, ARG_FLT, 0));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocGetInt(CocConn *conn, const char *name, int *value) {
|
||||
|
||||
return(CocPushArg(conn, name, value, ARG_INT, 0));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocGetArray(CocConn *conn, const char *name, float *value, int value_size) {
|
||||
|
||||
return(CocPushArg(conn, name, value, ARG_ARR, value_size));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocGetOut(CocConn *conn, const char *name, OutFunc *func) {
|
||||
return(CocPushArg(conn, name, func, ARG_OUT, 0));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocDoIt(CocConn *conn, char *res, int res_len) {
|
||||
StrBuf *buf;
|
||||
int i, pending;
|
||||
float *arr;
|
||||
CocArg *a;
|
||||
char *resp, *t, tag, *str;
|
||||
int iret=0;
|
||||
int siz;
|
||||
OutFunc *f;
|
||||
|
||||
assert(conn!=NULL);
|
||||
ERR_I(CocCmdWithRetry(conn));
|
||||
buf=&conn->resbuf;
|
||||
while (buf->buf[0] != conn->synch) { /* throw away unsynchronized answers */
|
||||
ERR_I(CocRecv(conn->fd, buf, COC_NETTMO, NULL));
|
||||
}
|
||||
|
||||
pending=conn->nargs;
|
||||
*res='\0';
|
||||
while (1) {
|
||||
if (buf->buf[0] != conn->synch) ERR_MSG("synch error");
|
||||
ERR_P(StrGet(buf, NULL, conn->synch));
|
||||
i=0;
|
||||
a=conn->args;
|
||||
while (pending>0 && i<conn->nargs) {
|
||||
if (a->type!=0) {
|
||||
resp=buf->buf + buf->rdpos;
|
||||
tag=*resp;
|
||||
if (tag==COC_DELAYED) { /* delayed response */
|
||||
resp++;
|
||||
ERR_P(StrGet(buf, NULL, COC_SEP));
|
||||
} else {
|
||||
pending--;
|
||||
if (tag==COC_ERR || tag==COC_TRM) { /* error response */
|
||||
str_ncat(res, a->cmd, res_len);
|
||||
resp++;
|
||||
ERR_P(StrGet(buf, NULL, COC_SEP));
|
||||
str_ncat(res, ": ", res_len);
|
||||
iret=1;
|
||||
if (tag==COC_TRM) return(1);
|
||||
} else {
|
||||
if (a->adr==NULL) {
|
||||
t=strchr(res, COC_SEP);
|
||||
str_ncat(res, a->cmd, res_len);
|
||||
t=strchr(t, ' ');
|
||||
assert(t!=NULL); /* truncate argument */
|
||||
*t=COC_SEP;
|
||||
str_ncat(res, "=", res_len);
|
||||
ERR_P(StrGet(buf, NULL, COC_SEP));
|
||||
} else {
|
||||
str_ncat(res, a->cmd, res_len);
|
||||
str_ncat(res, "=", res_len);
|
||||
if (a->type==ARG_INT) {
|
||||
ERR_I(StrGetInt(buf, (int *)a->adr, COC_SEP));
|
||||
} else if (a->type==ARG_FLT) {
|
||||
ERR_I(StrGetFloat(buf, (float *)a->adr, COC_SEP));
|
||||
} else if (a->type==ARG_ARR) {
|
||||
arr=(float *)a->adr;
|
||||
ERR_I(siz=StrGetArray(buf, arr, a->size));
|
||||
while (siz < a->size) { /* fill with zeroes */
|
||||
arr[siz++]=0.0;
|
||||
}
|
||||
resp="<array>";
|
||||
} else if (a->type==ARG_CHAR) {
|
||||
ERR_P(StrNGet(buf, (char *)a->adr, a->size, COC_SEP));
|
||||
} else if (a->type==ARG_OUT) {
|
||||
ERR_P(str=StrNGet(buf, NULL, 0, COC_SEP));
|
||||
f=(OutFunc *)a->adr;
|
||||
f->func(str, f->arg);
|
||||
} else {
|
||||
ERR_MSG("unknown type");
|
||||
}
|
||||
a->type=0; /* done */
|
||||
}
|
||||
}
|
||||
str_ncat(res, resp, res_len);
|
||||
str_ncat(res, "\n", res_len);
|
||||
}
|
||||
}
|
||||
i++; a++;
|
||||
}
|
||||
ERR_I(StrGetEnd(buf));
|
||||
if (pending==0) return(iret); /* no more delayed response awaiting */
|
||||
|
||||
ERR_I(CocRecv(conn->fd, buf, COC_RESTMO, NULL));
|
||||
}
|
||||
return(iret);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
static int interrupt, logFd=0;
|
||||
|
||||
void CocIntSignal(int sig) {
|
||||
char buf[4];
|
||||
|
||||
if (logFd) {
|
||||
interrupt=2;
|
||||
buf[0]=COC_CLRLOG;
|
||||
buf[1]=COC_SEP; /* send "clear log" message */
|
||||
printf("\nCLRLOG\n");
|
||||
CocSend(logFd, buf, 2);
|
||||
} else {
|
||||
printf("\ninterrupt\n");
|
||||
interrupt=1;
|
||||
}
|
||||
}
|
||||
|
||||
int CocWatchLog(CocConn *conn, char *loglist) {
|
||||
char cbuf[1024];
|
||||
StrBuf *buf;
|
||||
int fd, iret;
|
||||
|
||||
#if __VMS
|
||||
static int init=1;
|
||||
|
||||
if (init) {
|
||||
init=0;
|
||||
DECC$CRTL_INIT();
|
||||
}
|
||||
#endif
|
||||
fd=conn->fd;
|
||||
CocReset(conn);
|
||||
ERR_I(CocPutStr(conn, "loglist", loglist));
|
||||
ERR_I(CocDoIt(conn, cbuf, sizeof(cbuf)));
|
||||
buf=&conn->resbuf;
|
||||
interrupt=0;
|
||||
logFd=fd;
|
||||
signal(SIGINT, CocIntSignal);
|
||||
|
||||
while (!interrupt) {
|
||||
logFd=fd;
|
||||
ERR_I(iret=CocRecv(fd, buf, 60, &logFd));
|
||||
if (iret>0) {
|
||||
if (buf->buf[0]==COC_CLRLOG) { /* confirmed "clear log" message */
|
||||
interrupt=3;
|
||||
} else { /* it's a log message */
|
||||
StrReset(buf);
|
||||
while (!StrEnd(buf)) {
|
||||
ERR_P(StrGet(buf, cbuf, COC_SEP));
|
||||
printf("%s", cbuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
signal(SIGINT, SIG_DFL);
|
||||
logFd=0;
|
||||
if (interrupt==1) { /* send "clear log" message */
|
||||
cbuf[0]=COC_CLRLOG;
|
||||
cbuf[1]=COC_SEP; /* send "clear log" message */
|
||||
printf("\nclrlog\n");
|
||||
CocSend(fd, cbuf, 2);
|
||||
do {
|
||||
ERR_I(CocRecv(fd, buf, 10, NULL));
|
||||
} while (buf->buf[0]!=COC_CLRLOG);
|
||||
}
|
||||
return(0);
|
||||
OnError:
|
||||
signal(SIGINT, SIG_DFL);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int CocShowLog(CocConn *conn, char *loglist, int start, int lines) {
|
||||
char cbuf[1024];
|
||||
StrBuf *buf;
|
||||
int fd, iret;
|
||||
|
||||
fd=conn->fd;
|
||||
CocReset(conn);
|
||||
if (start>0) {
|
||||
ERR_I(CocPutInt(conn, "logstart", start));
|
||||
}
|
||||
ERR_I(CocPutInt(conn, "loglines", lines));
|
||||
ERR_I(CocPutStr(conn, "logshow", loglist));
|
||||
ERR_I(CocDoIt(conn, cbuf, sizeof(cbuf)));
|
||||
buf=&conn->resbuf;
|
||||
|
||||
while (1) {
|
||||
ERR_I(iret=CocRecv(fd, buf, 10, NULL));
|
||||
if (iret<=0) break;
|
||||
if (buf->buf[0]==COC_CLRLOG) { /* end of log message */
|
||||
break;
|
||||
} else { /* it's a log message */
|
||||
StrReset(buf);
|
||||
while (!StrEnd(buf)) {
|
||||
ERR_P(StrGet(buf, cbuf, COC_SEP));
|
||||
printf("%s", cbuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
OnError:
|
||||
signal(SIGINT, SIG_DFL);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
void CocCloseClient(CocConn *conn) {
|
||||
assert(conn!=NULL);
|
||||
if (conn->fd >= 0) close(conn->fd);
|
||||
conn->fd=-1;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
static char rbuf[256];
|
||||
|
||||
int CocSet(CocConn *conn, const char *name, const char *value) {
|
||||
int iret;
|
||||
|
||||
assert(conn!=NULL);
|
||||
CocReset(conn);
|
||||
ERR_I(CocPutStr(conn, name, value));
|
||||
ERR_I(iret=CocDoIt(conn, rbuf, sizeof(rbuf)));
|
||||
if (iret) ERR_MSG(rbuf);
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocGetN(CocConn *conn, const char *name, char *value, int reslen) {
|
||||
int iret;
|
||||
|
||||
assert(conn!=NULL);
|
||||
CocReset(conn);
|
||||
ERR_I(CocGetStr(conn, name, value, reslen));
|
||||
ERR_I(iret=CocDoIt(conn, rbuf, sizeof(rbuf)));
|
||||
if (iret) ERR_MSG(rbuf);
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocSetGetN(CocConn *conn, const char *name, const char *cmd, char *value, int reslen) {
|
||||
|
||||
assert(conn!=NULL);
|
||||
CocReset(conn);
|
||||
ERR_I(CocPutStr(conn, name, cmd));
|
||||
ERR_I(CocDoIt(conn, value, reslen));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
@ -1,88 +0,0 @@
|
||||
#ifndef _COC_CLIENT_H_
|
||||
#define _COC_CLIENT_H_
|
||||
|
||||
#include "myc_buf.h"
|
||||
#include "coc_util.h"
|
||||
|
||||
typedef struct {
|
||||
void (* func) (char *, void *);
|
||||
void *arg;
|
||||
} OutFunc;
|
||||
|
||||
typedef struct {
|
||||
void *adr;
|
||||
int type, size;
|
||||
char *cmd;
|
||||
} CocArg;
|
||||
|
||||
typedef struct {
|
||||
int fd;
|
||||
/* private */
|
||||
int port;
|
||||
StrBuf cmdbuf; /* for sending command */
|
||||
StrBuf resbuf; /* for response */
|
||||
char cmdbuf_[COC_CMD_LEN];
|
||||
char resbuf_[COC_RES_LEN];
|
||||
CocArg args[16];
|
||||
int nargs;
|
||||
char host[64];
|
||||
char magic[32];
|
||||
char startcmd[512];
|
||||
char synch;
|
||||
} CocConn;
|
||||
|
||||
int CocInitClient(CocConn *conn, char *host, int port, char *magic, int bufsize, char *startcmd);
|
||||
/* initialize a connection to the server process
|
||||
*/
|
||||
|
||||
int CocSendMagic(CocConn *conn, char *magic);
|
||||
/* send magic word to the server for changing access rights
|
||||
*/
|
||||
|
||||
void CocReset(CocConn *conn);
|
||||
int CocPutStr(CocConn *conn, const char *name, const char *value);
|
||||
int CocPutFloat(CocConn *conn, const char *name, float value);
|
||||
int CocPutInt(CocConn *conn, const char *name, int value);
|
||||
int CocPutArray(CocConn *conn, const char *name, float *value, int value_size);
|
||||
int CocGetStr(CocConn *conn, const char *name, char *value, int value_len);
|
||||
int CocGetFloat(CocConn *conn, const char *name, float *value);
|
||||
int CocGetInt(CocConn *conn, const char *name, int *value);
|
||||
int CocGetArray(CocConn *conn, const char *name, float *value, int value_size);
|
||||
int CocGetOut(CocConn *conn, const char *name, OutFunc *f);
|
||||
int CocDoIt(CocConn *conn, char *error, int error_len);
|
||||
|
||||
int CocCheck(CocConn *conn);
|
||||
/*
|
||||
returns 1, if not yet open
|
||||
returns 0, if connection o.k.
|
||||
returns -1 (error message), if connection died
|
||||
*/
|
||||
|
||||
int CocWatchLog(CocConn *conn, char *list);
|
||||
/*
|
||||
Watch indefinitely for log messages
|
||||
*/
|
||||
|
||||
int CocSet(CocConn *conn, const char *name, const char *value);
|
||||
/*
|
||||
set one variable
|
||||
*/
|
||||
|
||||
int CocGetN(CocConn *conn, const char *name, char *value, int reslen);
|
||||
#define CocGet(C,N,V) CocGetN(C,N,V,sizeof(V))
|
||||
/*
|
||||
read one variable. Use the macro if value is a fixed length array
|
||||
*/
|
||||
|
||||
int CocSetGetN(CocConn *conn, const char *name, const char *cmd, char *value, int reslen);
|
||||
#define CocSetGet(C,N,S,V) CocSetGetN(C,N,S,V,sizeof(V))
|
||||
/*
|
||||
set and get a variable. Use the macro if value is a fixed length array
|
||||
*/
|
||||
|
||||
void CocCloseClient(CocConn *conn);
|
||||
/*
|
||||
close the connection to the server
|
||||
*/
|
||||
|
||||
#endif /* _COC_CLIENT_H_ */
|
@ -1,350 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <assert.h>
|
||||
#include "coc_logfile.h"
|
||||
#include "myc_time.h"
|
||||
#include "myc_err.h"
|
||||
#include "myc_str.h"
|
||||
|
||||
static FILE *fil=NULL;
|
||||
static char lnam[224]="";
|
||||
static char filnam[256]="";
|
||||
static char ebuf[20000]="";
|
||||
static char *statusBuf=NULL;
|
||||
static int statusSize;
|
||||
static char *eptr=&ebuf[0];
|
||||
static int dated=0;
|
||||
static int logMask=0;
|
||||
static int wrtMask=0;
|
||||
static int newLine=1;
|
||||
static int logfileStd;
|
||||
static int dirty, writeAll;
|
||||
static int lastline=1;
|
||||
static long int lastpos=0;
|
||||
static int lastStamp=0;
|
||||
static int openTime;
|
||||
static int openDate;
|
||||
|
||||
void (*logfileOutRtn)(int, char *)=NULL;
|
||||
|
||||
void logfileOpen(int append) {
|
||||
int year;
|
||||
|
||||
if (logfileStd) {
|
||||
fil=stdout;
|
||||
str_copy(filnam, "<stdout>");
|
||||
return;
|
||||
}
|
||||
assert(fil==NULL);
|
||||
openTime = mycNow();
|
||||
openDate = mycDate(openTime); /* date in yyyymmdd decimal encoding */
|
||||
openTime = openTime % (24*3600); /* seconds since midnight */
|
||||
if (dated) {
|
||||
sprintf(filnam, "%s%02d-%02d.log", lnam, openDate % 10000 / 100, openDate % 100);
|
||||
} else {
|
||||
if (lnam[0]=='\0') {
|
||||
str_copy(filnam, "test.log");
|
||||
} else {
|
||||
str_copy(filnam, lnam);
|
||||
str_append(filnam, ".log");
|
||||
}
|
||||
}
|
||||
if (dated) {
|
||||
fil=fopen(filnam, "a+");
|
||||
if (fil != NULL) {
|
||||
fseek(fil, 0, SEEK_SET); /* set position to start */
|
||||
year=0;
|
||||
fscanf(fil, "%4d", &year);
|
||||
if (year != openDate / 10000) {
|
||||
fclose(fil);
|
||||
fil=fopen(filnam, "w+"); /* overwrite old logfile */
|
||||
} else {
|
||||
fseek(fil, 0, SEEK_END); /* set position to end */
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fil=fopen(filnam, "w+"); /* overwrite last logfile */
|
||||
}
|
||||
if (fil==NULL) {
|
||||
printf("Can not open %s\n", filnam);
|
||||
fil=stdout;
|
||||
str_copy(filnam, "<stdout>");
|
||||
return;
|
||||
}
|
||||
ErrSetOutFile(fil);
|
||||
fprintf(fil, "%04d-%02d-%02d %02d:%02d:%02d opened logfile\n"
|
||||
, openDate / 10000, openDate % 10000 / 100, openDate % 100
|
||||
, openTime / 3600, openTime / 60 % 60, openTime % 60);
|
||||
lastStamp = openTime / 60;
|
||||
}
|
||||
|
||||
void logfileStatusBuffer(char *buffer, int bufsize) {
|
||||
statusBuf=buffer;
|
||||
statusSize=bufsize-1;
|
||||
}
|
||||
|
||||
char *logfileInit(char *path, int nodate, int use_stdout, int write_all) {
|
||||
str_copy(lnam, path);
|
||||
logfileStd=use_stdout;
|
||||
writeAll=write_all;
|
||||
dated=!nodate;
|
||||
logfileOpen(1);
|
||||
return(filnam);
|
||||
}
|
||||
|
||||
void logfileStamp(char *text) {
|
||||
int time, date, stamp;
|
||||
|
||||
time = mycNow();
|
||||
date = mycDate(time); /* date in yyyymmdd decimal encoding */
|
||||
time = time % (24*3600); /* seconds since midnight */
|
||||
|
||||
stamp=time / 60;
|
||||
if (date != openDate ) { /* day has changed -> new logfile */
|
||||
if (fil!=NULL) { fclose(fil); fil=NULL; }
|
||||
lastpos=0;
|
||||
lastline=1;
|
||||
logfileOpen(1);
|
||||
}
|
||||
if (text==NULL) {
|
||||
if (stamp>lastStamp+1) {
|
||||
fprintf(fil, "---\t%02d:%02d:%02d\n", stamp / 60, stamp % 60, time % 60);
|
||||
}
|
||||
} else {
|
||||
fprintf(fil, "\t%02d:%02d:%02d%s", stamp / 60, stamp % 60, time % 60, text);
|
||||
}
|
||||
dirty=0;
|
||||
lastStamp=stamp;
|
||||
}
|
||||
|
||||
void logfileOut(int mask, const char *fmt, ...)
|
||||
{ va_list ap;
|
||||
char buf[8192], *p;
|
||||
int l;
|
||||
|
||||
va_start(ap, fmt);
|
||||
|
||||
if (mask & LOG_STAT && statusBuf!=NULL) {
|
||||
if (newLine) {
|
||||
statusBuf[0]='\0';
|
||||
newLine=0;
|
||||
}
|
||||
buf[statusSize]='\0';
|
||||
vsprintf(buf, fmt, ap);
|
||||
assert(buf[statusSize]=='\0'); /* check for overflow */
|
||||
if (buf[0]=='@') {
|
||||
if (buf[1]==' ') {
|
||||
str_ncat(statusBuf, buf+2, statusSize);
|
||||
} else {
|
||||
str_ncat(statusBuf, buf+1, statusSize);
|
||||
}
|
||||
} else {
|
||||
str_ncat(statusBuf, buf, statusSize);
|
||||
}
|
||||
p=strchr(statusBuf, '\n');
|
||||
if (p!=NULL) {
|
||||
newLine=1;
|
||||
*p='\0';
|
||||
}
|
||||
}
|
||||
if (logfileOutRtn!=NULL) {
|
||||
vsprintf(buf, fmt, ap); /* does not check for overflow! */
|
||||
logfileOutRtn(mask, buf);
|
||||
}
|
||||
if (writeAll) {
|
||||
vfprintf(fil, fmt, ap);
|
||||
wrtMask=LOG_ALL;
|
||||
} else if ((mask | LOG_NET) != LOG_NET) { /* do not store LOG_NET info */
|
||||
if (eptr!=NULL) {
|
||||
if (eptr-ebuf > sizeof(ebuf)-512) {
|
||||
sprintf(eptr, "... buffer full ... \1\1");
|
||||
eptr=NULL;
|
||||
} else {
|
||||
vsprintf(eptr, fmt, ap);
|
||||
p=strchr(eptr, '\1');
|
||||
if (p==NULL) {
|
||||
l=strlen(eptr);
|
||||
if (l>256) {
|
||||
sprintf(buf, "unusual long output %.32s... (%d chars)\n", eptr, l);
|
||||
logfileStamp(buf);
|
||||
}
|
||||
eptr+=l;
|
||||
} else {
|
||||
eptr=p; /* is in fact an error */
|
||||
}
|
||||
eptr[0]='\1'; /* put \1 as separator between blocks */
|
||||
eptr[1]=mask & 31;
|
||||
eptr[2]='\0';
|
||||
eptr+=2;
|
||||
}
|
||||
}
|
||||
wrtMask=wrtMask | mask;
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void logfileMask(int mask) {
|
||||
logMask=logMask | mask;
|
||||
}
|
||||
|
||||
void logfileWrite0(int mask) {
|
||||
char *s, *next;
|
||||
|
||||
logMask=logMask | mask;
|
||||
if (dirty) logfileStamp(NULL); /* there was something written since last time */
|
||||
|
||||
s=ebuf;
|
||||
if (writeAll || (*s!='\0' && (wrtMask & logMask))) {
|
||||
next=strchr(s, '\1');
|
||||
while (next!=NULL) {
|
||||
*next='\0';
|
||||
next++;
|
||||
if (*next & logMask) {
|
||||
if (*s=='@') { /* write out time */
|
||||
logfileStamp(s+1);
|
||||
} else {
|
||||
logfileStamp(NULL); /* write stamp before write something */
|
||||
fprintf(fil, "%s", s);
|
||||
dirty=1;
|
||||
}
|
||||
}
|
||||
s=next+1;
|
||||
next=strchr(s, '\1');
|
||||
}
|
||||
}
|
||||
ebuf[0]='\0';
|
||||
eptr=&ebuf[0];
|
||||
logMask=0;
|
||||
wrtMask=0;
|
||||
}
|
||||
|
||||
void logfileScan(int date, void (*scanLine)(void*, char*), void *arg) {
|
||||
FILE *sFile;
|
||||
char buf[256], *res;
|
||||
|
||||
if (date == openDate) {
|
||||
sFile=fil;
|
||||
rewind(sFile);
|
||||
} else {
|
||||
sprintf(buf, "%s%02d-%02d.log", lnam, date % 10000 / 100, date % 100);
|
||||
sFile=fopen(buf, "r+");
|
||||
if (sFile==NULL) return;
|
||||
}
|
||||
res=fgets(buf, sizeof(buf), sFile);
|
||||
while (res!=NULL) {
|
||||
if (res[0]=='\t') {
|
||||
scanLine(arg, res+1);
|
||||
}
|
||||
res=fgets(buf, sizeof(buf), sFile);
|
||||
}
|
||||
if (sFile==fil) {
|
||||
fseek(fil, 0, SEEK_END);
|
||||
} else {
|
||||
fclose(sFile);
|
||||
}
|
||||
}
|
||||
|
||||
void logfileWrite(int mask) {
|
||||
logfileWrite0(mask);
|
||||
fflush(fil);
|
||||
}
|
||||
|
||||
void logfileShowErr(char *text)
|
||||
{
|
||||
logfileWrite0(LOG_ALL); /* write all */
|
||||
ErrShow(text);
|
||||
fflush(fil);
|
||||
}
|
||||
|
||||
void logfileClose()
|
||||
{
|
||||
logfileWrite0(LOG_MAIN+LOG_INFO);
|
||||
lastStamp=-2;
|
||||
logfileOut(LOG_MAIN, "closed\n");
|
||||
logfileStamp(NULL);
|
||||
if (fil!=NULL) { fclose(fil); fil=NULL; }
|
||||
filnam[0]='\0';
|
||||
}
|
||||
|
||||
void logfileOutBuf(int mask, StrBuf *buf)
|
||||
{ char str[256];
|
||||
int rd0;
|
||||
char *ret;
|
||||
|
||||
rd0=buf->rdpos;
|
||||
if (buf->rdpos < 0 || buf->rdpos >= buf->dsize
|
||||
|| buf->wrpos < 0 || buf->wrpos >= buf->dsize) {
|
||||
logfileOut(mask, "<buffer corrupt>"); return;
|
||||
}
|
||||
while (!StrEnd(buf)) {
|
||||
ret=StrGet(buf, str, '\0');
|
||||
if (ret==NULL) {
|
||||
ret="...";
|
||||
buf->rdpos=buf->wrpos;
|
||||
}
|
||||
if (ret[0]<32 && ret[0]>0) {
|
||||
logfileOut(mask, "[%d]%s;", ret[0], ret+1);
|
||||
} else {
|
||||
logfileOut(mask, "%s;", ret);
|
||||
}
|
||||
}
|
||||
buf->rdpos=rd0;
|
||||
}
|
||||
|
||||
int logfileLength(void) {
|
||||
char lin[256];
|
||||
int l, ll;
|
||||
|
||||
if (logfileStd || fil==NULL) return 0;
|
||||
fseek(fil, lastpos, SEEK_SET);
|
||||
ll=lastpos;
|
||||
l=lastline;
|
||||
while (NULL!=fgets(lin, sizeof(lin), fil)) {
|
||||
lastpos=ll;
|
||||
ll=ftell(fil);
|
||||
lastline=l;
|
||||
l++;
|
||||
}
|
||||
return(lastline);
|
||||
}
|
||||
|
||||
long int logfilePos(int n) {
|
||||
/* set file to the start of n-th last line n, if n<0 then position to the -n-th line */
|
||||
int i;
|
||||
char lin[256];
|
||||
|
||||
if (logfileStd || fil==NULL) return 0;
|
||||
if (n>0) {
|
||||
n=logfileLength()-n+1;
|
||||
} else {
|
||||
n=-n;
|
||||
}
|
||||
fseek(fil, 0, SEEK_SET);
|
||||
for (i=1; i<n; i++) {
|
||||
if (NULL==fgets(lin, sizeof(lin), fil)) return ftell(fil);
|
||||
}
|
||||
return ftell(fil);
|
||||
}
|
||||
|
||||
|
||||
long int logfileGetLines(long int pos, int linmax, char *line, int len_line) {
|
||||
int l,i;
|
||||
if (logfileStd || fil==NULL) {
|
||||
line[0]='\0';
|
||||
return 0;
|
||||
}
|
||||
l=0;
|
||||
fseek(fil, pos, SEEK_SET);
|
||||
for (i=0; i<linmax; i++) {
|
||||
if (NULL==fgets(line+l, len_line-l, fil)) {
|
||||
line[l]='\0';
|
||||
return ftell(fil);
|
||||
}
|
||||
l=strlen(line);
|
||||
}
|
||||
pos=ftell(fil);
|
||||
fseek(fil, 0, SEEK_END);
|
||||
return pos;
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
#ifndef _COC_LOGFILE_H_
|
||||
#define _COC_LOGFILE_H_
|
||||
|
||||
#include "myc_buf.h"
|
||||
|
||||
#define LOG_ALL 31
|
||||
#define LOG_STAT 32
|
||||
#define LOG_SER 8
|
||||
#define LOG_NET 4
|
||||
#define LOG_INFO 2
|
||||
#define LOG_MAIN 1
|
||||
#define logfileStatusBuf(B) logfileStatusBuffer(B,sizeof(B))
|
||||
|
||||
void logfileStatusBuffer(char *buffer, int bufsize);
|
||||
char *logfileInit(char *path, int nodate, int use_stdout, int write_all);
|
||||
void logfileOut(int mask, const char *fmt, ...);
|
||||
void logfileOutBuf(int mask, StrBuf *buf);
|
||||
void logfileShowErr(char *text);
|
||||
void logfileMask(int mask);
|
||||
void logfileScan(int date, void (*scanLine)(void*, char*), void *arg);
|
||||
void logfileWrite(int mask);
|
||||
void logfileClose(void);
|
||||
long int logfilePos(int n);
|
||||
long int logfileGetLines(long int pos, int linmax, char *line, int len_line);
|
||||
|
||||
extern void (*logfileOutRtn)(int, char *); /* custom output routine */
|
||||
|
||||
#endif /* _COC_LOGFILE_H_ */
|
@ -1,664 +0,0 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/timeb.h>
|
||||
#include <strings.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include "myc_mem.h"
|
||||
#include "myc_err.h"
|
||||
#include "coc_logfile.h"
|
||||
#include "coc_util.h"
|
||||
#include "coc_server.h"
|
||||
#include "myc_str.h"
|
||||
#include "myc_time.h"
|
||||
#include "uselect.h"
|
||||
|
||||
#define COC_NUL COC_SEP
|
||||
|
||||
typedef struct _CocVar {
|
||||
struct _CocVar *next;
|
||||
char name[32];
|
||||
void *var;
|
||||
int access;
|
||||
int type;
|
||||
int size;
|
||||
void *strucType;
|
||||
int (*hdl)(int, void *, int);
|
||||
int pending;
|
||||
} CocVar;
|
||||
|
||||
CocVar *serverVarList=NULL;
|
||||
static CocVar **varListHandle=&serverVarList;
|
||||
static CocVar *lastDef=NULL;
|
||||
|
||||
typedef struct {
|
||||
CocVar *var;
|
||||
void *base;
|
||||
int mode;
|
||||
} Pend;
|
||||
|
||||
typedef struct _CocClient {
|
||||
struct _CocClient *next;
|
||||
int fd;
|
||||
int mode;
|
||||
Pend pend[16];
|
||||
int npend;
|
||||
int logmask;
|
||||
char synch;
|
||||
void *data;
|
||||
} CocClient;
|
||||
|
||||
void *(*setData)(void *);
|
||||
|
||||
/*
|
||||
static CocClientData **clData;
|
||||
static int clDataSize;
|
||||
*/
|
||||
|
||||
DeclStrBuf(buf, COC_CMD_LEN);
|
||||
DeclStrBuf(bufo, COC_RES_LEN);
|
||||
|
||||
static fd_set mask, rmask;
|
||||
static int maxfd;
|
||||
CocClient *cList;
|
||||
static int mainFd;
|
||||
static int modified;
|
||||
static char loglist[16];
|
||||
|
||||
void CocVarList(void **varList) {
|
||||
if (varList==NULL) {
|
||||
varListHandle=(CocVar **)varList;
|
||||
} else {
|
||||
varListHandle=&serverVarList;
|
||||
}
|
||||
}
|
||||
|
||||
void CocList() { CocVar *p;
|
||||
|
||||
p=*varListHandle;
|
||||
while (p!=NULL) {
|
||||
printf("%s %d ", p->name, p->type);
|
||||
p=p->next;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
CocVar *CocFindVar1(const char *name) {
|
||||
CocVar *p;
|
||||
|
||||
p=*varListHandle;
|
||||
while (p!=NULL && 0!=strcasecmp(p->name,name)) p=p->next;
|
||||
return(p);
|
||||
}
|
||||
|
||||
void *CocFindVar(const char *name, void **adr) {
|
||||
CocVar *p, *t;
|
||||
const char *f;
|
||||
void *base;
|
||||
char nam[32];
|
||||
|
||||
f=str_split(nam, name, '.');
|
||||
if (f==NULL) {
|
||||
f=str_split(nam, name, '-');
|
||||
if (f!=NULL) {
|
||||
if (f[0]!='>') {
|
||||
f=NULL;
|
||||
} else {
|
||||
f++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (f!=NULL) {
|
||||
if (adr!=NULL) *adr=NULL;
|
||||
p=CocFindVar1(nam);
|
||||
if (p==NULL) { return(NULL); }
|
||||
t=p->strucType;
|
||||
if (t==NULL) { return(NULL); }
|
||||
str_copy(nam, t->name);
|
||||
str_append(nam, ":");
|
||||
str_append(nam, f);
|
||||
if (adr!=NULL) {
|
||||
base=p->var;
|
||||
if (p->type==COC_PTR) base=*(void **)base;
|
||||
*adr=base;
|
||||
}
|
||||
} else if (adr!=NULL) {
|
||||
*adr=NULL;
|
||||
}
|
||||
p=CocFindVar1(nam);
|
||||
if (p!=NULL && p->type==COC_ALIAS) { /* recursive call for alias */
|
||||
p=CocFindVar(p->var, adr);
|
||||
}
|
||||
return(p);
|
||||
}
|
||||
|
||||
void *CocIntPtr(int *ptr) { return(ptr); }
|
||||
void *CocFltPtr(float *ptr) { return(ptr); }
|
||||
void *CocChrPtr(char *ptr) { return(ptr); }
|
||||
|
||||
void *CocDefVar(const char *name, void *var, int type, int size, int access) {
|
||||
CocVar *p;
|
||||
|
||||
assert(varListHandle!=NULL);
|
||||
p=CocFindVar1(name);
|
||||
if (p==NULL) {
|
||||
NEW(p,CocVar);
|
||||
p->next=*varListHandle;
|
||||
*varListHandle=p;
|
||||
str_copy(p->name, name);
|
||||
p->type=type;
|
||||
p->size=size;
|
||||
} else {
|
||||
assert(p->type==type);
|
||||
}
|
||||
p->var=var;
|
||||
p->access=access;
|
||||
/* printf("define %s %d\n", name, (int)var); */
|
||||
lastDef=p;
|
||||
return(p);
|
||||
OnError:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CocHdl(int (*handler)(int, void *, int)) {
|
||||
assert(lastDef!=NULL);
|
||||
lastDef->hdl=handler;
|
||||
}
|
||||
|
||||
int *CocSizePtr(void) {
|
||||
assert(lastDef!=NULL && lastDef->type==COC_ARRAY);
|
||||
return &lastDef->size;
|
||||
}
|
||||
|
||||
void CocDefVarS(const char *name, const char *tname, void *var, int type) {
|
||||
CocVar *p;
|
||||
|
||||
assert(type==COC_PTR || type==COC_STRUCT);
|
||||
p=CocDefVar(name, var, type, 0, COC_RDONLY);
|
||||
p->strucType=CocDefVar(tname, NULL, COC_TYPE, 0, COC_RDONLY);
|
||||
}
|
||||
|
||||
char err_name[64];
|
||||
|
||||
int CocGetThisVar(CocVar *var, void *base, StrBuf *buf, int separator) {
|
||||
void *adr;
|
||||
|
||||
if (base==NULL) {
|
||||
adr=var->var;
|
||||
if (adr==NULL)
|
||||
ERR_MSG("NULL pointer accessed");
|
||||
} else { /* dereference */
|
||||
adr=(char *)base + (int)var->var;
|
||||
}
|
||||
/* printf("get %s %d\n", name, (int)adr); */
|
||||
if (var->type==COC_CHAR) {
|
||||
ERR_P(StrNGet(buf, (char *)adr, var->size, separator));
|
||||
} else if (var->type==COC_INT) {
|
||||
ERR_I(StrGetInt(buf, (int *)adr, separator));
|
||||
} else if (var->type==COC_FLT) {
|
||||
ERR_I(StrGetFloat(buf, (float *)adr, separator));
|
||||
} else if (var->type==COC_ARRAY) {
|
||||
ERR_I(StrGetArray(buf, (float *)adr, var->size));
|
||||
} else {
|
||||
ERR_MSG("unknown type");
|
||||
}
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocPutThisVar(CocVar *var, void *base, StrBuf *buf, int separator) {
|
||||
void *adr;
|
||||
|
||||
if (base==NULL) {
|
||||
adr=var->var;
|
||||
if (adr==NULL)
|
||||
ERR_MSG("NULL pointer accessed");
|
||||
} else { /* dereference */
|
||||
adr=(char *)base + (int)var->var;
|
||||
}
|
||||
/* printf("put %s %d\n", name, (int)adr); */
|
||||
if (var->type==COC_CHAR) {
|
||||
ERR_I(StrPut(buf, adr, separator));
|
||||
} else if (var->type==COC_INT) {
|
||||
ERR_I(StrPutInt(buf, *(int *)adr, separator));
|
||||
} else if (var->type==COC_FLT) {
|
||||
ERR_I(StrPutFloat(buf, *(float *)adr, separator));
|
||||
} else if (var->type==COC_ARRAY) {
|
||||
ERR_I(StrPutArray(buf, (float *)adr, var->size));
|
||||
} else {
|
||||
ERR_MSG("unknown type");
|
||||
}
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocGetVar(const char *name, StrBuf *buf, int separator) {
|
||||
CocVar *var;
|
||||
void *base;
|
||||
static char msg[128];
|
||||
|
||||
var=CocFindVar(name, &base);
|
||||
if (var==NULL) {
|
||||
str_copy(msg, "undefined variable ; ");
|
||||
str_append(msg, name);
|
||||
ERR_MSG(msg);
|
||||
}
|
||||
ERR_I(CocGetThisVar(var, base, buf, separator));
|
||||
return(0);
|
||||
OnError: str_copy(err_name, name); ErrTxt(err_name,0); return(-1);
|
||||
}
|
||||
|
||||
int CocPutVar(const char *name, StrBuf *buf, int separator) {
|
||||
CocVar *var;
|
||||
void *base;
|
||||
|
||||
var=CocFindVar(name, &base);
|
||||
if (var==NULL) ERR_MSG("undefined variable");
|
||||
ERR_I(CocPutThisVar(var, base, buf, separator));
|
||||
return(0);
|
||||
OnError: str_copy(err_name, name); ErrTxt(err_name,0); return(-1);
|
||||
}
|
||||
|
||||
void CocFreeVarList(void) {
|
||||
CocVar *p, *v;
|
||||
|
||||
v=*varListHandle;
|
||||
while (v!=NULL) {
|
||||
p=v;
|
||||
v=p->next;
|
||||
p->next=NULL;
|
||||
FREE(p);
|
||||
}
|
||||
*varListHandle=NULL;
|
||||
}
|
||||
|
||||
char *CocReadVars(char *str, char stop){
|
||||
int i, l;
|
||||
char *eql, *cr, buf[256];
|
||||
StrBuf sbuf;
|
||||
|
||||
/* interprete variables until stop character appeares */
|
||||
i=sscanf(str, "%255s%n", buf, &l);
|
||||
while (i>0 && buf[0]!=stop) {
|
||||
if (buf[0]=='!') {
|
||||
cr=strchr(str, '\n');
|
||||
if (cr==NULL) return strchr(str, '\0');
|
||||
str=cr+1;
|
||||
} else {
|
||||
eql=strchr(buf,'=');
|
||||
if (eql==NULL) ERR_MSG("syntax error");
|
||||
*eql='\0';
|
||||
if (eql[1] == '\'' || eql[1]== '"') {
|
||||
eql=strchr(str, '=');
|
||||
StrNLink(&sbuf, eql+1, 256);
|
||||
ERR_I(CocGetVar(buf, &sbuf, StrNONE));
|
||||
str = sbuf.buf + sbuf.rdpos;
|
||||
} else {
|
||||
str+=l;
|
||||
StrLink(&sbuf, eql+1);
|
||||
ERR_I(CocGetVar(buf, &sbuf, ' '));
|
||||
}
|
||||
}
|
||||
i=sscanf(str, "%255s%n", buf, &l);
|
||||
}
|
||||
return str;
|
||||
OnError: return NULL;
|
||||
}
|
||||
|
||||
void CocToClients(int mask, char *str) {
|
||||
int iret;
|
||||
CocClient *cl;
|
||||
|
||||
cl=cList->next;
|
||||
while (cl!=NULL) {
|
||||
if (cl->logmask & mask) {
|
||||
iret=CocSend(cl->fd, str, strlen(str)+1);
|
||||
if (iret<0) {
|
||||
cl->logmask=0; /* disable logging for dead clients */
|
||||
logfileOut(LOG_MAIN, "(%d) disconnected while logging\n", cl->fd);
|
||||
}
|
||||
}
|
||||
cl=cl->next;
|
||||
}
|
||||
}
|
||||
|
||||
int CocInitServer(void *(*setDataRtn)(void *), int port) {
|
||||
int i;
|
||||
struct sockaddr_in sadr;
|
||||
|
||||
setData=setDataRtn;
|
||||
/*
|
||||
clDataSize=clientDataSize;
|
||||
clData=clientData;
|
||||
*/
|
||||
NEW(cList,CocClient); /* empty header */
|
||||
|
||||
ERR_SI(mainFd=socket(AF_INET, SOCK_STREAM, 0));
|
||||
i = 1;
|
||||
ERR_SI(setsockopt(mainFd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(int))); /* allow quick port reuse */
|
||||
ERR_I(CocCreateSockAdr(&sadr, NULL, port));
|
||||
ERR_SI(bind(mainFd, (struct sockaddr *)&sadr, sizeof(sadr)));
|
||||
logfileOutRtn=CocToClients;
|
||||
logfileOut(LOG_INFO, "created server on port %d\n", port);
|
||||
ERR_SI(listen(mainFd, 8));
|
||||
FD_ZERO(&mask);
|
||||
FD_SET(mainFd, &mask);
|
||||
maxfd=mainFd+1;
|
||||
CocDefStr(loglist, COC_RDWR);
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocHandleThis(CocVar *var, void *base, StrBuf *outBuf, int mode, int fd) {
|
||||
int iret;
|
||||
|
||||
if (var->hdl!=NULL) {
|
||||
iret=var->hdl(mode, base, fd);
|
||||
if (iret<0) { /* error */
|
||||
ErrShow(var->name);
|
||||
ERR_I(StrPut(outBuf, "", COC_ERR)); /* signal error message */
|
||||
ERR_I(StrPut(outBuf, ErrMessage, COC_SEP));
|
||||
return(0);
|
||||
}
|
||||
if (iret==COC_DRD) {
|
||||
ERR_I(StrPut(outBuf, "", COC_DELAYED)); /* delayed response message */
|
||||
ERR_I(StrPut(outBuf, "", COC_SEP)); /* empty message */
|
||||
return(COC_DRD);
|
||||
}
|
||||
if (iret!=0 && iret!=COC_DWR)
|
||||
ERR_MSG("illegal return value from handler");
|
||||
} else {
|
||||
iret=0;
|
||||
}
|
||||
ERR_I(CocPutThisVar(var, base, outBuf, COC_NUL));
|
||||
return(iret);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocPushThisHandler(CocVar *var, CocClient *cl, void *base, int mode) {
|
||||
int n;
|
||||
|
||||
if (mode==COC_DWR) {
|
||||
if (var->pending && cl->npend != 0) return(0);
|
||||
var->pending=1;
|
||||
}
|
||||
n=cl->npend;
|
||||
if (n * sizeof(Pend) >= sizeof(cl->pend)) {
|
||||
ERR_MSG("too many commands")
|
||||
}
|
||||
cl->pend[n].var=var;
|
||||
cl->pend[n].base=base;
|
||||
cl->pend[n].mode=mode;
|
||||
cl->npend=n+1;
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocCallHandlers(void) {
|
||||
CocClient *cl;
|
||||
CocVar *var;
|
||||
Pend *p;
|
||||
int i, iret, mode, delayedRead;
|
||||
char synch;
|
||||
DeclStrBuf(bufr, COC_RES_LEN);
|
||||
|
||||
cl=cList->next;
|
||||
while (cl!=NULL) {
|
||||
|
||||
delayedRead=0;
|
||||
/* treat delayed write handlers first */
|
||||
for (i=0; i<cl->npend; i++) {
|
||||
p=&cl->pend[i];
|
||||
mode=p->mode;
|
||||
var=p->var;
|
||||
assert(var!=NULL && var->hdl!=NULL);
|
||||
if (mode==COC_DWR) {
|
||||
var->pending=0;
|
||||
ERR_I(var->hdl(mode, p->base, cl->fd));
|
||||
p->mode=0;
|
||||
} else {
|
||||
delayedRead=1;
|
||||
}
|
||||
}
|
||||
if (delayedRead) {
|
||||
StrClear(&bufr);
|
||||
synch=cl->synch;
|
||||
ERR_I(StrPut(&bufr, "", cl->synch));
|
||||
for (i=0; i<cl->npend; i++) {
|
||||
p=&cl->pend[i];
|
||||
mode=p->mode;
|
||||
var=p->var;
|
||||
assert(var!=NULL && var->hdl!=NULL);
|
||||
if (mode==COC_DRD) {
|
||||
iret=var->hdl(mode, p->base, cl->fd);
|
||||
if (iret<0) { /* error */
|
||||
ERR_I(StrPut(&bufr, "", COC_ERR)); /* signal error message */
|
||||
ERR_I(StrPut(&bufr, ErrMessage, COC_SEP));
|
||||
}
|
||||
ERR_I(CocPutThisVar(var, p->base, &bufr, COC_NUL));
|
||||
}
|
||||
}
|
||||
if (cl->synch==synch) { /* send only if no new request from client received */
|
||||
assert(cl->fd!=0);
|
||||
ERR_I(CocSend(cl->fd, bufr.buf, bufr.wrpos));
|
||||
}
|
||||
}
|
||||
cl->npend=0;
|
||||
cl=cl->next;
|
||||
}
|
||||
return(0);
|
||||
OnError:
|
||||
cl->npend=0;
|
||||
return(-1);
|
||||
}
|
||||
|
||||
void CocShowHandlers(char *buf, int buf_len) {
|
||||
CocClient *cl;
|
||||
Pend *p;
|
||||
int i;
|
||||
|
||||
buf[0]='\0';
|
||||
cl=cList->next;
|
||||
while (cl!=NULL) {
|
||||
for (i=0; i<cl->npend; i++) {
|
||||
p=&cl->pend[i];
|
||||
if (p->mode==COC_DWR) {
|
||||
assert(p->var!=NULL);
|
||||
if (buf[0]!='\0') str_ncat(buf, ", ", buf_len);
|
||||
str_ncat(buf, p->var->name, buf_len);
|
||||
}
|
||||
}
|
||||
cl=cl->next;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef __VMS
|
||||
typedef size_t socklen_type;
|
||||
#else
|
||||
typedef socklen_t socklen_type;
|
||||
#endif
|
||||
|
||||
int CocHandle1Request(int tmo_msec, int fd) {
|
||||
struct sockaddr_in cadr;
|
||||
struct hostent *h;
|
||||
struct timeval tmo={0,1};
|
||||
CocClient *cl, *cl0;
|
||||
CocVar *var;
|
||||
int i, lmask, newfd, iret;
|
||||
socklen_type cadrlen;
|
||||
char *err, *varname;
|
||||
void *base;
|
||||
|
||||
rmask=mask;
|
||||
if (fd>0) FD_SET(fd, &rmask);
|
||||
if (fd>=maxfd) maxfd=fd+1;
|
||||
tmo.tv_sec=tmo_msec / 1000;
|
||||
tmo.tv_usec=(tmo_msec % 1000)*1000+1;
|
||||
ERR_I(i=uselect(maxfd,&rmask,NULL,NULL,&tmo));
|
||||
if (fd>0 && FD_ISSET(fd, &rmask)) return(1); /* event on fd */
|
||||
if (i==0) return(0); /* timeout */
|
||||
|
||||
if (FD_ISSET(mainFd, &rmask)) {
|
||||
cadrlen=sizeof(cadr);
|
||||
ERR_SI(newfd=accept(mainFd, (struct sockaddr *)&cadr, &cadrlen));
|
||||
FD_SET(newfd, &mask);
|
||||
if (newfd>=maxfd) maxfd=newfd+1;
|
||||
NEW(cl, CocClient);
|
||||
cl->fd=newfd;
|
||||
cl->mode=0;
|
||||
if (setData!=NULL) {
|
||||
ERR_P(cl->data = setData(NULL)); /* create new client data object */
|
||||
}
|
||||
/*
|
||||
ERR_SP(cList=calloc(1,sizeof(CocClient)+clDataSize));
|
||||
*/
|
||||
cl->next=cList->next;
|
||||
cList->next=cl;
|
||||
h=gethostbyaddr((void *)&cadr.sin_addr, 4, AF_INET);
|
||||
if (h==NULL) {
|
||||
logfileOut(LOG_INFO, "(%d) open from %s\n", newfd, "local");
|
||||
} else {
|
||||
logfileOut(LOG_INFO, "(%d) open from %s\n", newfd, h->h_name);
|
||||
}
|
||||
} else {
|
||||
cl0=cList; cl=cl0->next;
|
||||
while (cl!=NULL) {
|
||||
if (FD_ISSET(cl->fd, &rmask)) {
|
||||
iret=CocRecv(cl->fd, &buf, -1, NULL);
|
||||
if (iret<=0) {
|
||||
logfileOut(LOG_INFO, "(%d) disconnected\n",cl->fd);
|
||||
close(cl->fd);
|
||||
FD_CLR(cl->fd, &mask);
|
||||
cl0->next=cl->next;
|
||||
FREE(cl);
|
||||
cl=cl0;
|
||||
} else {
|
||||
cl->logmask=0; /* stop output to log client */
|
||||
lmask=0;
|
||||
StrReset(&buf);
|
||||
StrClear(&bufo);
|
||||
err=NULL;
|
||||
logfileOut(LOG_NET, "(%d) ", cl->fd);
|
||||
logfileOutBuf(LOG_NET, &buf);
|
||||
/* cl->npend=0; why that ? */
|
||||
logfileOut(LOG_NET, "\n");
|
||||
cl->synch=buf.buf[0];
|
||||
ERR_P(StrGet(&buf, NULL, cl->synch));
|
||||
ERR_I(StrPut(&bufo, "", cl->synch));
|
||||
while (!StrEnd(&buf)) {
|
||||
ERR_P(varname=StrGet(&buf, NULL, ' '));
|
||||
if (cl->synch==COC_MAGIC) { /* access code */
|
||||
if (0==strcmp(varname,"rdacs")) {
|
||||
logfileOut(LOG_INFO, "set read mode\n");
|
||||
cl->mode=1;
|
||||
ERR_I(StrPut(&bufo, "", COC_SEP)); /* empty message */
|
||||
} else if (0==strcmp(varname,"rwacs")) {
|
||||
logfileOut(LOG_INFO, "set write mode\n");
|
||||
cl->mode=2;
|
||||
ERR_I(StrPut(&bufo, "", COC_SEP)); /* empty message */
|
||||
} else {
|
||||
ERR_I(StrPut(&bufo, "", COC_ERR)); /* signal error message */
|
||||
ERR_I(StrPut(&bufo, "bad access code", COC_SEP));
|
||||
}
|
||||
ERR_P(StrGet(&buf, NULL, COC_NUL)); /* skip separator */
|
||||
} else if (cl->mode==0) {
|
||||
ERR_I(StrPut(&bufo, "", COC_ERR)); /* signal terminal error message */
|
||||
ERR_I(StrPut(&bufo, "no access", COC_SEP));
|
||||
ERR_P(StrGet(&buf, NULL, COC_NUL)); /* skip separator */
|
||||
} else {
|
||||
if (cl->data!=NULL) {
|
||||
setData(cl->data);
|
||||
}
|
||||
var=CocFindVar(varname, &base);
|
||||
if (var==NULL) {
|
||||
ERR_I(StrPut(&bufo, "", COC_ERR)); /* signal error message */
|
||||
ERR_I(StrPut(&bufo, "undefined variable", COC_SEP));
|
||||
ERR_P(StrGet(&buf, NULL, COC_NUL)); /* skip separator */
|
||||
} else if (buf.seen) { /* separator was there: set mode */
|
||||
if (var->access > cl->mode) {
|
||||
ERR_I(StrPut(&bufo, "", COC_ERR)); /* signal error message */
|
||||
ERR_I(StrPut(&bufo, "no access", COC_SEP));
|
||||
ERR_P(StrGet(&buf, NULL, COC_NUL)); /* skip separator */
|
||||
} else {
|
||||
ERR_I(CocGetThisVar(var, base, &buf, COC_SEP));
|
||||
if (0==strcmp(var->name,"loglist")) {
|
||||
str_upcase(loglist, loglist);
|
||||
if (NULL!=strchr(loglist,'A')) lmask = lmask | LOG_ALL;
|
||||
if (NULL!=strchr(loglist,'S')) lmask = lmask | LOG_SER;
|
||||
if (NULL!=strchr(loglist,'N')) lmask = lmask | LOG_NET;
|
||||
if (NULL!=strchr(loglist,'I')) lmask = lmask | LOG_INFO;
|
||||
if (NULL!=strchr(loglist,'M')) lmask = lmask | LOG_MAIN;
|
||||
ERR_I(StrPut(&bufo, "", COC_NUL)); /* o.k. */
|
||||
} else {
|
||||
ERR_I(iret=CocHandleThis(var, base, &bufo, COC_WR, cl->fd));
|
||||
if (iret) ERR_I(CocPushThisHandler(var, cl, base, iret));
|
||||
}
|
||||
modified=1;
|
||||
}
|
||||
} else {
|
||||
ERR_P(StrGet(&buf, NULL, COC_NUL)); /* skip separator */
|
||||
ERR_I(iret=CocHandleThis(var, base, &bufo, COC_RD, cl->fd));
|
||||
if (iret) ERR_I(CocPushThisHandler(var, cl, base, iret));
|
||||
}
|
||||
}
|
||||
}
|
||||
ERR_I(StrGetEnd(&buf));
|
||||
logfileOut(LOG_NET, " ");
|
||||
logfileOutBuf(LOG_NET, &bufo);
|
||||
logfileOut(LOG_NET, "\n");
|
||||
ERR_I(CocSend(cl->fd, bufo.buf, bufo.wrpos));
|
||||
cl->logmask=lmask;
|
||||
}
|
||||
}
|
||||
cl0=cl; cl=cl->next;
|
||||
}
|
||||
}
|
||||
if (modified) return(2);
|
||||
return(3);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int CocHandleRequests(int tmo_msec, int fd) {
|
||||
int tdif, iret, tim0;
|
||||
|
||||
if (modified && fd==0) { /* earlier modification */
|
||||
modified=0;
|
||||
return(2);
|
||||
}
|
||||
tim0=mycMsecSince(0);
|
||||
tdif=tmo_msec;
|
||||
while (tdif>=0) {
|
||||
ERR_I(iret=CocHandle1Request(tdif, fd));
|
||||
if (fd==0) {
|
||||
if (iret==2) return(2); /* modification of a variable */
|
||||
} else {
|
||||
if (iret==1) return(1); /* event on fd */
|
||||
}
|
||||
if (iret==0) return(0); /* timeout */
|
||||
tdif = tmo_msec - mycMsecSince(tim0);
|
||||
}
|
||||
return(0); /* timeout */
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
void CocCloseServer() {
|
||||
CocClient *cl, *cl0;
|
||||
|
||||
if (cList) {
|
||||
cl=cList->next;
|
||||
while (cl!=NULL) {
|
||||
close(cl->fd);
|
||||
cl0=cl;
|
||||
cl=cl->next;
|
||||
FREE(cl0);
|
||||
}
|
||||
FREE(cList);
|
||||
}
|
||||
close(mainFd);
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
#ifndef _SERVER_H_
|
||||
#define _SERVER_H_
|
||||
|
||||
#include "myc_buf.h"
|
||||
|
||||
void CocVarList(void **varlist);
|
||||
/*
|
||||
instal a variable list
|
||||
*/
|
||||
|
||||
void CocFreeVarList(void);
|
||||
/*
|
||||
free variable list
|
||||
*/
|
||||
|
||||
void *CocFindVar(const char *name, void **adr);
|
||||
/*
|
||||
find a variable. returns NULL if not found.
|
||||
*/
|
||||
|
||||
int CocPutVar(const char *name, StrBuf *buf, int separator);
|
||||
/*
|
||||
put a variable named <name> of variable list <varList> to the buffer <buf>
|
||||
*/
|
||||
|
||||
int CocGetVar(const char *name, StrBuf *buf, int separator);
|
||||
/*
|
||||
get a variable named <name> of variable list <varList> from the buffer <buf>
|
||||
*/
|
||||
|
||||
char *CocReadVars(char *str, char stop);
|
||||
/*
|
||||
read variables from the string str until a word starts with the stop character
|
||||
the string has the form [ whitespace var=value ] whitespace stop-character
|
||||
any text between an exclamation character and the next line break is treated as comment
|
||||
*/
|
||||
|
||||
void CocHdl(int (*handler)(int, void *, int));
|
||||
/*
|
||||
define handler for last defined item
|
||||
*/
|
||||
|
||||
int *CocSizePtr(void);
|
||||
/*
|
||||
get size pointer from last defined item (only valid when an array)
|
||||
*/
|
||||
|
||||
void *CocIntPtr(int *ptr);
|
||||
void *CocFltPtr(float *ptr);
|
||||
void *CocChrPtr(char *ptr);
|
||||
void *CocDefVar(const char *name, void *var, int type, int size, int access);
|
||||
void CocDefVarS(const char *name, const char *tname, void *var, int type);
|
||||
/*
|
||||
Define variables. Call this routines not directly, but through
|
||||
one of the macros below.
|
||||
*/
|
||||
|
||||
#define CocDefInt(V,A) CocDefVar(#V,CocIntPtr(&V),COC_INT,0,A)
|
||||
#define CocDefFlt(V,A) CocDefVar(#V,CocFltPtr(&V),COC_FLT,0,A)
|
||||
#define CocDefStr(V,A) CocDefVar(#V,CocChrPtr(V),COC_CHAR,sizeof(V),A)
|
||||
#define CocDefArr(V,A) CocDefVar(#V,CocFltPtr(V),COC_ARRAY,sizeof(V)/sizeof(float),A)
|
||||
#define CocDefPtr(V,S) CocDefVarS(#V,#S,&V,((V!=(S *)NULL)*0+COC_PTR));
|
||||
#define CocDefStruct(V,S) CocDefVarS(#V,#S,&V,((&V!=(S *)NULL)*0+COC_STRUCT));
|
||||
#define CocIntFld(S,V,A) CocDefVar(#S":"#V,CocIntPtr(&((S *)NULL)->V),COC_INT,0,A);
|
||||
#define CocFltFld(S,V,A) CocDefVar(#S":"#V,CocFltPtr(&((S *)NULL)->V),COC_FLT,0,A);
|
||||
#define CocStrFld(S,V,A) CocDefVar(#S":"#V,CocChrPtr(((S *)NULL)->V),COC_CHAR,sizeof(((S *)NULL)->V),A);
|
||||
#define CocArrFld(S,V,A) CocDefVar(#S":"#V,CocFltPtr(((S *)NULL)->V),COC_FLT,sizeof(((S *)NULL)->V)/sizeof(float),A);
|
||||
#define CocAlias(A,V) CocDefVar(#A, #V, COC_ALIAS,0,0);
|
||||
|
||||
#define COC_RDONLY 3
|
||||
#define COC_RDWR 2
|
||||
#define COC_RDWRALL 1
|
||||
|
||||
#define COC_WR 1
|
||||
#define COC_RD 2
|
||||
#define COC_DWR 3
|
||||
#define COC_DRD 4
|
||||
#define COC_SHOW 5
|
||||
|
||||
#define COC_CHAR 1
|
||||
#define COC_INT 2
|
||||
#define COC_FLT 3
|
||||
#define COC_ARRAY 4
|
||||
#define COC_PTR 5
|
||||
#define COC_STRUCT 6
|
||||
#define COC_TYPE 7
|
||||
#define COC_ALIAS 8
|
||||
|
||||
int CocInitServer(void *(*setDataRtn)(void *), int port);
|
||||
|
||||
int CocHandleRequests(int tmo_msec, int fd);
|
||||
int CocHandle1Request(int tmo_msec, int fd);
|
||||
/*
|
||||
handle hetwork requests.
|
||||
|
||||
return value: <0: error
|
||||
=0: timeout
|
||||
=1: event on fd
|
||||
=2: variable was changed
|
||||
=3: other network request treated
|
||||
|
||||
CocHandle1Request handles only one network request
|
||||
|
||||
For CocHandleRequests:
|
||||
|
||||
if fd=0: returns when a network request has changed a variable,
|
||||
or when timeout has expired (result is 0 or 2)
|
||||
|
||||
if fd>0: returns when an read event is pending on fd
|
||||
or when timeout has expired (result is 0 or 1)
|
||||
|
||||
*/
|
||||
|
||||
/* server handlers removed
|
||||
int CocPushHandler(const char *name);
|
||||
*/
|
||||
|
||||
int CocCallHandlers(void);
|
||||
void CocShowHandlers(char *buf, int buf_len);
|
||||
|
||||
void CocCloseServer(void);
|
||||
|
||||
#endif /* _SERVER_H_ */
|
113
tecs/coc_util.c
113
tecs/coc_util.c
@ -1,113 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/time.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <string.h>
|
||||
#include "myc_err.h"
|
||||
#include "myc_str.h"
|
||||
#include "coc_util.h"
|
||||
#include "uselect.h"
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/* CreateSocketAddress stolen from Tcl. Thanks to John Ousterhout */
|
||||
|
||||
int CocCreateSockAdr(
|
||||
struct sockaddr_in *sockaddrPtr, /* Socket address */
|
||||
const char *host, /* Host. NULL implies INADDR_ANY */
|
||||
int port) /* Port number */
|
||||
{
|
||||
struct hostent *hostent; /* Host database entry */
|
||||
struct in_addr addr; /* For 64/32 bit madness */
|
||||
|
||||
(void) memset((char *) sockaddrPtr, '\0', sizeof(struct sockaddr_in));
|
||||
sockaddrPtr->sin_family = AF_INET;
|
||||
sockaddrPtr->sin_port = htons((unsigned short) (port & 0xFFFF));
|
||||
if (host == NULL || host[0]=='\0') {
|
||||
addr.s_addr = INADDR_ANY;
|
||||
} else {
|
||||
hostent = gethostbyname(host);
|
||||
if (hostent != NULL) {
|
||||
memcpy((char *) &addr,
|
||||
(char *) hostent->h_addr_list[0], (size_t) hostent->h_length);
|
||||
} else {
|
||||
addr.s_addr = inet_addr(host);
|
||||
if (addr.s_addr == (unsigned long)-1) {
|
||||
return -1; /* error */
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* There is a rumor that this assignment may require care on
|
||||
* some 64 bit machines.
|
||||
*/
|
||||
|
||||
sockaddrPtr->sin_addr.s_addr = addr.s_addr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
void CocDelay(int msec) {
|
||||
struct timeval tmo;
|
||||
|
||||
tmo.tv_sec=msec / 1000;
|
||||
tmo.tv_usec=(msec % 1000)*1000+1;
|
||||
uselect(1,NULL,NULL,NULL,&tmo);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocSend(int fd, char *str, int size) {
|
||||
int siz;
|
||||
siz=htonl(size);
|
||||
ERR_SI(send(fd, &siz, 4, 0));
|
||||
ERR_SI(send(fd, str, size, 0));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
int CocRecv(int fd, StrBuf *buf, int timeout, int *flag) {
|
||||
struct timeval tmo={0,1};
|
||||
fd_set mask;
|
||||
int i, l;
|
||||
int siz, n;
|
||||
|
||||
if (timeout>=0) {
|
||||
tmo.tv_sec=timeout;
|
||||
|
||||
FD_ZERO(&mask);
|
||||
FD_SET(fd, &mask);
|
||||
ERR_SI(i=uselect(fd+1,&mask,NULL,NULL,&tmo));
|
||||
if (flag!=NULL) {
|
||||
*flag=0;
|
||||
if (i==0) return(0);
|
||||
} else {
|
||||
if (i==0) { ERR_MSG("time out"); }
|
||||
}
|
||||
}
|
||||
|
||||
n=0;
|
||||
ERR_SI(i=recv(fd, &n, 4, 0));
|
||||
if (i!=4) {
|
||||
ERR_COD(ECONNREFUSED);
|
||||
}
|
||||
siz=ntohl(n);
|
||||
if (siz > buf->dsize)
|
||||
ERR_MSG("buffer too small");
|
||||
ERR_SI(l=recv(fd, buf->buf, siz, 0));
|
||||
buf->wrpos=l;
|
||||
while (buf->wrpos<siz) {
|
||||
if (l==0) {
|
||||
ERR_COD(ECONNRESET);
|
||||
}
|
||||
ERR_SI(l=recv(fd, buf->buf+buf->wrpos, siz, 0));
|
||||
buf->wrpos+=l;
|
||||
}
|
||||
StrReset(buf);
|
||||
return(buf->wrpos);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
@ -1,45 +0,0 @@
|
||||
#ifndef _COC_UTIL_H_
|
||||
#define _COC_UTIL_H_
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include "myc_buf.h"
|
||||
|
||||
#define COC_CMD_LEN 256
|
||||
/* the follwing should be larger than 4x(largest array)+length of additional parameters */
|
||||
#define COC_RES_LEN 50000
|
||||
|
||||
int CocCreateSockAdr(
|
||||
struct sockaddr_in *sockaddrPtr, /* Socket address */
|
||||
const char *host, /* Host. NULL implies INADDR_ANY */
|
||||
int port); /* Port number */
|
||||
/*
|
||||
compose internet address
|
||||
*/
|
||||
|
||||
void CocDelay(int msec);
|
||||
/*
|
||||
system independent delay function with msec resolution
|
||||
*/
|
||||
|
||||
int CocSend(int fd, char *buf, int size);
|
||||
/*
|
||||
send a message
|
||||
*/
|
||||
|
||||
int CocRecv(int fd, StrBuf *buf, int timeout, int *flag);
|
||||
/*
|
||||
receive message
|
||||
if flag is NULL, a timeout generates an error
|
||||
else *flag is set to zero between the select and the recv command
|
||||
*/
|
||||
|
||||
#define COC_SEP '\0'
|
||||
#define COC_DELAYED '\1'
|
||||
#define COC_ERR '\2'
|
||||
#define COC_TRM '\3'
|
||||
#define COC_SYN0 '\4'
|
||||
#define COC_SYN1 '\5'
|
||||
#define COC_MAGIC '\6'
|
||||
#define COC_CLRLOG '\7'
|
||||
|
||||
#endif /* _COC_UTIL_H_ */
|
735
tecs/conv.f
735
tecs/conv.f
@ -1,735 +0,0 @@
|
||||
program conv
|
||||
|
||||
include 'conv.inc'
|
||||
|
||||
logical init
|
||||
integer i,j,l,lin,iostat
|
||||
character*128 line
|
||||
character*2048 input
|
||||
|
||||
data lun/0/,pos/0/,nlist/0/
|
||||
|
||||
path=' '
|
||||
lp=0
|
||||
verbose=.false.
|
||||
call sys_get_cmdpar(input, l)
|
||||
if (input .eq. ' ') then
|
||||
verbose=.true.
|
||||
print '(a,$)',
|
||||
1' File(s) (separated with space): '
|
||||
read(*,'(a)',end=99) input
|
||||
if (input .eq. ' ') goto 99
|
||||
endif
|
||||
i=index(input, '-p')
|
||||
if (i .ne. 0) then ! first path option valid from start
|
||||
j=index(input(i+1:), ' ')
|
||||
call str_trim(path, input(i+2:i+j), lp)
|
||||
endif
|
||||
i=0
|
||||
do while (input(i+1:) .ne. ' ')
|
||||
j=index(input(i+1:), ' ')
|
||||
if (j .le. 1) then
|
||||
i=i+1
|
||||
else if (input(i+1:i+2) .eq. '-p') then
|
||||
call str_trim(path, input(i+3:i+j), lp)
|
||||
i=i+j
|
||||
else if (input(i+1:i+1) .eq. '-') then
|
||||
print *,'unknown option: ',input(i+1:i+j)
|
||||
i=i+j
|
||||
else
|
||||
call str_trim(file, input(i+1:i+j), lf)
|
||||
i=i+j
|
||||
if (verbose) print *
|
||||
open(1,name=file(1:lf),status='old',iostat=iostat)
|
||||
if (iostat .ne. 0) then
|
||||
if (verbose) then
|
||||
print *,'can not open ',file(1:lf)
|
||||
print "(x,60('-'))"
|
||||
endif
|
||||
nlist=nlist+1
|
||||
list(nlist)='can not open '//file(1:lf)
|
||||
else
|
||||
lin=0
|
||||
do
|
||||
call lsc_errinit(1) ! 1=lun
|
||||
call lsc_convert_table(lin)
|
||||
if (lin .lt. 0) goto 19
|
||||
if (verbose) print "(x,60('-'))"
|
||||
enddo
|
||||
19 continue
|
||||
close(1)
|
||||
endif
|
||||
endif
|
||||
enddo
|
||||
|
||||
do i=1,nlist
|
||||
call str_trim(list(i), list(i), l)
|
||||
print *,list(i)(1:l)
|
||||
enddo
|
||||
|
||||
99 continue
|
||||
end
|
||||
|
||||
|
||||
subroutine pack(line, l, x, y, offset, m)
|
||||
character line*(*)
|
||||
integer l, offset, m
|
||||
real x(m), y(m)
|
||||
|
||||
integer j,p
|
||||
|
||||
p=0
|
||||
do j=1,m
|
||||
call str_append(line, p, '#0,')
|
||||
call cvt_real_str(line(p+1:), l, 1.0*(offset+j), 1, 0, 6, 3)
|
||||
p=p+l
|
||||
call str_append(line, p, ':')
|
||||
call cvt_real_str(line(p+1:), l, x(j), 1, 0, 6, 3)
|
||||
p=p+l
|
||||
call str_append(line, p, ',')
|
||||
call cvt_real_str(line(p+1:), l, y(j), 1, 0, 6, 3)
|
||||
p=p+l
|
||||
call str_append(line, p, ';')
|
||||
enddo
|
||||
line(p:p)=' '
|
||||
l=p-1
|
||||
end
|
||||
|
||||
|
||||
subroutine lsc_convert_table(lin)
|
||||
|
||||
implicit none
|
||||
include 'conv.inc'
|
||||
|
||||
integer lin
|
||||
|
||||
integer ntypes,nvolts, namps
|
||||
parameter (ntypes=12, nvolts=12, namps=12)
|
||||
integer np
|
||||
|
||||
real x(200), y(200), ex, ey
|
||||
integer i,j,l,p,li,crc,form,iostat
|
||||
|
||||
character name*15, sensor*10, header*64, line*128, old*128, intype*16
|
||||
character crcmp*3, filnam*128, cfgdir*128
|
||||
character c40*40/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$+-&'/
|
||||
integer unit, stype, excit, irange, coef, iunit, stdcurv
|
||||
! codes
|
||||
character types(0:ntypes)*12/'Special','Si Diode','GaAlAs Diode'
|
||||
1 ,'Pt250 Ohm','Pt500 Ohm','Pt2500 Ohm','RhFe','C-Glass'
|
||||
1 ,'Cernox','RuOx','Ge','Cap','Tc'/
|
||||
integer nunits
|
||||
parameter (nunits=3)
|
||||
character units(nunits)*5/'mV','V','Ohm'/
|
||||
integer nexcits
|
||||
parameter (nexcits=12)
|
||||
character excits(0:nexcits)*8/'Off','30nA','100nA','300nA','1uA','3uA'
|
||||
1 ,'10uA','30uA','100uA','300uA','1mA','10mV','1mV'/
|
||||
integer nforms
|
||||
parameter (nforms=5)
|
||||
character forms(nforms)*6/'ill','ill','lin','log','loglog'/
|
||||
|
||||
! default values
|
||||
integer defu(ntypes)/ 1, 1, 2, 2,2, 2, 2, 2, 2, 2, 3, 1/ ! unit
|
||||
integer defe(ntypes)/ 6, 6,10,10,8,10,11,11,11,12, 0, 0/ ! excit
|
||||
integer defr(ntypes)/11,12, 8, 9,8, 8, 4, 4, 4, 1, 1, 6/ ! range
|
||||
integer defc(ntypes)/ 1, 1, 2, 2,2, 2, 1, 1, 1, 1, 2, 2/ ! coef
|
||||
real volts(nvolts)/1E-3,2.5E-3,5E-3,1E-2,2.5E-2,5E-2
|
||||
1 ,1E-1,2.5E-1,5E-1,1E-0,2.5E-0,5E-0/
|
||||
real amps(namps)/3E-8,1E-7,3E-7,1E-6,3E-6,1E-5,3E-5,1E-4,3E-4,1E-3
|
||||
1 ,3E-8,3E-8/ ! minimal values are for voltage excitation
|
||||
integer stdmax
|
||||
parameter (stdmax=10)
|
||||
character*40 stdhdr(stdmax)/
|
||||
1 'DT-470 ,Standard ,2,+475.000E+0,1',
|
||||
1 'DT-500-D ,Standard ,2,+365.000E+0,1',
|
||||
1 'DT-500-E1 ,Standard ,2,+330.000E+0,1',
|
||||
1 'PT-100 ,Standard ,3,+800.000E+0,2',
|
||||
1 'PT-1000 ,Standard ,3,+800.000E+0,2',
|
||||
1 'TYPE K ,Standard ,1,+1645.00E+0,2',
|
||||
1 'TYPE E ,Standard ,1,+1188.50E+0,2',
|
||||
1 'TYPE T ,Standard ,1,+673.000E+0,2',
|
||||
1 'CrAuFe.03%,Standard ,1,+500.000E+0,2',
|
||||
1 'CrAuFe.07%,Standard ,1,+610.000E+0,2'/
|
||||
integer stdtype(stdmax)/1,1,1,4,5,12,12,12,12,12/
|
||||
|
||||
real tlim, range, xmax, ymax, curr, rl
|
||||
|
||||
real x1,x2,xi,y1,y2,yi,sum,sum1,sum2,mum,mum1,mum2,d,at,at1,at2
|
||||
logical eof, first, inverted
|
||||
|
||||
! functions
|
||||
integer lsc_getno
|
||||
external lsc_getno, pack
|
||||
|
||||
first=.true.
|
||||
eof=.false.
|
||||
np=0
|
||||
name=' '
|
||||
sensor=' '
|
||||
unit=0
|
||||
tlim=0
|
||||
stype=0
|
||||
excit=0
|
||||
form=0
|
||||
range=-1.0
|
||||
stdcurv=0
|
||||
1 read(1,'(a)',err=97,end=97) line
|
||||
call str_trim(line, line, l)
|
||||
lin=lin+1
|
||||
call str_first_nonblank(line, i)
|
||||
if (i .eq. 0) goto 1
|
||||
if (line(i:i) .eq. '!') goto 1
|
||||
first=.false.
|
||||
call str_upcase(line(1:l),line(i:l))
|
||||
i=index(line(1:l),'!')
|
||||
if (i .ne. 0) line=line(1:i-1)
|
||||
call str_trim(line(1:l),line(1:l),l)
|
||||
if (line(1:4) .ne. 'CURV') then
|
||||
i=index(line,'=')
|
||||
if (i .eq. 0) then
|
||||
call lsc_error(lin, 'missing "="')
|
||||
goto 1
|
||||
endif
|
||||
if (i .eq. l) then
|
||||
call lsc_error(lin, 'missing value')
|
||||
goto 1
|
||||
endif
|
||||
call str_first_nonblank(line(i+1:l), j)
|
||||
i=i+j
|
||||
if (line(1:4) .eq. 'SENS') then
|
||||
sensor=line(i:l)
|
||||
name=sensor
|
||||
elseif (line(1:4) .eq. 'UNIT') then
|
||||
unit=lsc_getno(units, nunits, line(i:l))
|
||||
if (unit .le. 0) call lsc_error(lin, 'illegal unit')
|
||||
elseif (line(1:4) .eq. 'TLIM') then
|
||||
read(line(i:l),*,err=92,end=92) tlim
|
||||
elseif (line(1:4) .eq. 'TYPE') then
|
||||
stype=lsc_getno(types, ntypes+1, line(i:l))-1
|
||||
if (stype .lt. 0) call lsc_error(lin, 'illegal type')
|
||||
elseif (line(1:4) .eq. 'EXCI') then
|
||||
call str_substitute(line(1:8),line(i:l),' ',char(0))
|
||||
excit=lsc_getno(excits, nexcits, line(1:8))-1
|
||||
if (excit .lt. 0) call lsc_error(lin, 'illegal excitation')
|
||||
elseif (line(1:4) .eq. 'RANG') then
|
||||
read(line(i:l),*,err=93,end=93) range
|
||||
if (range .lt. 0) goto 93
|
||||
elseif (line(1:4) .eq. 'FORM') then
|
||||
form=lsc_getno(forms, nforms, line(i:l))
|
||||
if (form .lt. 3) call lsc_error(lin, 'illegal format')
|
||||
else
|
||||
call lsc_error(lin, 'unknown parameter name')
|
||||
endif
|
||||
goto 1
|
||||
endif
|
||||
if (sensor .eq. ' ') call lsc_error(lin, 'missing sensor name')
|
||||
i=index(line,'=')
|
||||
if (i .ne. 0) then
|
||||
read(line(i+1:l), *, err=2,end=2) stdcurv
|
||||
2 continue
|
||||
if (stdcurv .lt. 0 .or. stdcurv .gt. stdmax) then
|
||||
call lsc_error(lin, 'illegal standard curve no.')
|
||||
goto 101
|
||||
endif
|
||||
if (unit .ne. 0 .or. stype .ne. 0 .or.
|
||||
1 excit .ne. 0 .or. tlim .ne. 0) then
|
||||
if (verbose) then
|
||||
print *,'Warning: all parameters except "sens"'
|
||||
1 ,', "range" and "curv" are ignored',char(7)
|
||||
endif
|
||||
errstat=max(errstat,1)
|
||||
endif
|
||||
line=stdhdr(stdcurv)
|
||||
i=index(line, ',')
|
||||
if (i .eq. 0) goto 96 ! illegal stdhdr
|
||||
j=index(line(i+1:), ',')
|
||||
if (j .eq. 0) goto 96 ! illegal stdhdr
|
||||
|
||||
read(line(i+j+1:), *, err=96, end=96) unit, ymax, coef
|
||||
stype=stdtype(stdcurv)
|
||||
! if (range .lt. 0) then
|
||||
! range=stdrange(stdcurv)
|
||||
! end if
|
||||
xmax=0
|
||||
excit=0
|
||||
tlim=0
|
||||
goto 100
|
||||
endif
|
||||
if (line(5:) .ne. ' ') then
|
||||
call lsc_error(lin, 'missing "="')
|
||||
goto 101
|
||||
end if
|
||||
! user curve
|
||||
if (unit .eq. 0) call lsc_error(lin, 'missing unit')
|
||||
if (stype .eq. 0) then
|
||||
if (excit .le. 0) call lsc_error(lin, 'missing excitation')
|
||||
if (range .lt. 0) call lsc_error(lin, 'missing range')
|
||||
else
|
||||
if (excit .eq. 0) excit=defe(stype)
|
||||
endif
|
||||
3 np=np+1
|
||||
read(1,'(a)',err=98,end=98) line
|
||||
lin=lin+1
|
||||
if (line .eq. ' ') goto 9
|
||||
read(line, *, err=94, end=94) x(np), y(np)
|
||||
goto 3
|
||||
|
||||
|
||||
92 call lsc_error(lin,'illegal tlim')
|
||||
goto 1
|
||||
93 call lsc_error(lin,'illegal range')
|
||||
goto 1
|
||||
94 call lsc_error(lin,'illegal datapoint')
|
||||
goto 101
|
||||
95 call lsc_error(lin,'illegal table no')
|
||||
goto 1
|
||||
96 stop 'internal error: illegal stdhdr'
|
||||
97 if (.not. first) then
|
||||
call lsc_error(lin,'unexpected end of file')
|
||||
endif
|
||||
lin=-1
|
||||
RETURN
|
||||
98 eof=.true.
|
||||
|
||||
9 np=np-1 ! point (np) is not valid
|
||||
|
||||
if (np .lt. 2) call lsc_error(lin+np, 'not enough data points')
|
||||
if (x(np) .lt. x(1)) then ! inverse order
|
||||
j=np
|
||||
do i=1,np/2
|
||||
ex=x(i)
|
||||
ey=y(i)
|
||||
x(i)=x(j)
|
||||
y(i)=y(j)
|
||||
x(j)=ex
|
||||
y(j)=ey
|
||||
j=j-1
|
||||
enddo
|
||||
inverted=.true.
|
||||
else
|
||||
inverted=.false.
|
||||
endif
|
||||
do i=2,np
|
||||
if (x(i) .le. x(i-1)) then
|
||||
j=i
|
||||
if (inverted) j=np-i+1
|
||||
call lsc_error(lin+j, 'table not ordered')
|
||||
goto 101
|
||||
endif
|
||||
enddo
|
||||
xmax=x(np)
|
||||
if (y(np) .lt. y(1)) then
|
||||
coef=1
|
||||
do i=2,np
|
||||
if (y(i) .ge. y(i-1)) then
|
||||
j=i
|
||||
if (inverted) j=np-i+1
|
||||
call lsc_error(lin+j, 'table not ordered')
|
||||
goto 101
|
||||
endif
|
||||
enddo
|
||||
ymax=y(1)
|
||||
else
|
||||
coef=2
|
||||
do i=2,np
|
||||
if (y(i) .le. y(i-1)) then
|
||||
j=i
|
||||
if (inverted) j=np-i+1
|
||||
call lsc_error(lin+j, 'table not ordered')
|
||||
goto 101
|
||||
endif
|
||||
enddo
|
||||
ymax=y(np)
|
||||
endif
|
||||
101 continue
|
||||
do i=1,np
|
||||
if (x(i) .eq. 0.0) then
|
||||
j=i
|
||||
if (inverted) j=np-i+1
|
||||
call lsc_error(lin+j, 'illegal sensor value')
|
||||
endif
|
||||
if (y(i) .le. 0.0) then
|
||||
j=i
|
||||
if (inverted) j=np-i+1
|
||||
call lsc_error(lin+j, 'illegal temperature')
|
||||
endif
|
||||
enddo
|
||||
if (errstat .gt. 1) goto 999
|
||||
|
||||
sum=0
|
||||
sum1=0
|
||||
sum2=0
|
||||
mum=0
|
||||
mum1=0
|
||||
mum2=0
|
||||
do i=2,np-1
|
||||
xi=x(i)
|
||||
x1=x(i-1)
|
||||
x2=x(i+1)
|
||||
yi=log(y(i))
|
||||
y1=y(i-1)
|
||||
y2=y(i+1)
|
||||
d=abs(yi-log(y1+(xi-x1)/(x2-x1)*(y2-y1)))
|
||||
sum=sum+d*d
|
||||
if (d .gt. mum) then
|
||||
mum=d
|
||||
at=y(i)
|
||||
endif
|
||||
xi=log(abs(xi))
|
||||
x1=log(abs(x1))
|
||||
x2=log(abs(x2))
|
||||
d=abs(yi-log(y1+(xi-x1)/(x2-x1)*(y2-y1)))
|
||||
sum1=sum1+d*d
|
||||
if (d .gt. mum1) then
|
||||
mum1=d
|
||||
at1=y(i)
|
||||
endif
|
||||
y1=log(y1)
|
||||
y2=log(y2)
|
||||
d=abs(yi-(y1+(xi-x1)/(x2-x1)*(y2-y1)))
|
||||
sum2=sum2+d*d
|
||||
if (d .gt. mum2) then
|
||||
mum2=d
|
||||
at2=y(i)
|
||||
endif
|
||||
enddo
|
||||
if (np .gt. 2) then
|
||||
sum=sqrt(sum/(np-1))*25
|
||||
sum1=sqrt(sum1/(np-1))*25
|
||||
sum2=sqrt(sum2/(np-1))*25
|
||||
|
||||
if (verbose) then
|
||||
print '(x,a)','Interpolation accuracy mean worst at'
|
||||
print '(13x,a,3(f8.2,a))','linear ',sum, '%',mum *25,'%',at,' K'
|
||||
print '(13x,a,3(f8.2,a))','log/lin ',sum1,'%',mum1*25,'%',at1,' K'
|
||||
print '(13x,a,3(f8.2,a))','log/log ',sum2,'%',mum2*25,'%',at2,' K'
|
||||
endif
|
||||
|
||||
if (unit .eq. 3) then
|
||||
sum1=(sum1/sum)**2+(mum1/mum)**2
|
||||
sum2=(sum2/sum)**2+(mum2/mum)**2
|
||||
if (form .eq. 0 .and. (sum1 .lt. 1.0 .or. sum2 .lt. 1.0)
|
||||
1 .or. form .gt. 3) then
|
||||
if (form .eq. 0 .and. sum2 .lt. sum1 .or. form .eq. 5) then
|
||||
unit=5
|
||||
do i=1,np
|
||||
y(i)=log10(y(i))
|
||||
enddo
|
||||
else
|
||||
unit=4
|
||||
endif
|
||||
do i=1,np
|
||||
x(i)=log10(x(i))
|
||||
enddo
|
||||
endif
|
||||
else
|
||||
if (form .gt. 3 .and. verbose)
|
||||
1 print *,'FORM ignored (not unit Ohm)'
|
||||
endif
|
||||
endif
|
||||
|
||||
100 continue
|
||||
|
||||
if (unit .eq. 1) then ! check for mV / V consistency
|
||||
if (xmax .gt. 990) then
|
||||
unit=2
|
||||
do i=1,np
|
||||
x(i)=x(i)/1000.0
|
||||
enddo
|
||||
endif
|
||||
xmax=xmax/1000.0
|
||||
range=range/1000.0
|
||||
elseif (unit .eq. 2) then
|
||||
if (xmax .lt. 0.5) then
|
||||
unit=1
|
||||
do i=1,np
|
||||
x(i)=x(i)*1000.0
|
||||
enddo
|
||||
endif
|
||||
endif
|
||||
if (range .eq. 0) range=xmax
|
||||
if (tlim .eq. 0 .or. tlim .gt. ymax) tlim=ymax
|
||||
irange=0
|
||||
if (range .gt. 0) then
|
||||
if (unit .ge. 3) then ! Ohm
|
||||
curr=amps(excit)
|
||||
rl=range*curr ! convert Ohm to V
|
||||
if (rl .gt. 5.0) then
|
||||
! print *,'Warning: maximum range exceeded: '
|
||||
! 1 , range,'>',5/curr,' Ohm',char(7)
|
||||
! errstat=max(errstat,1)
|
||||
irange=12
|
||||
endif
|
||||
else
|
||||
rl=range ! V
|
||||
endif
|
||||
if (irange .eq. 0) then
|
||||
if (stype.eq.12) then
|
||||
j=6
|
||||
else
|
||||
j=nvolts
|
||||
end if
|
||||
do i=1,j
|
||||
if (rl .le. volts(i)) then
|
||||
irange=i
|
||||
goto 150
|
||||
endif
|
||||
enddo
|
||||
! print *,'Warning: maximum range exceeded: ', range,' > ',volts(j),' V',char(7)
|
||||
! errstat=max(errstat,1)
|
||||
irange=j
|
||||
150 continue
|
||||
if (excit .eq. 11) then ! 10 mV excit -> min. 10 mV range
|
||||
if (irange .lt. 4) irange=4
|
||||
endif
|
||||
endif
|
||||
else
|
||||
irange=defr(stype)
|
||||
range=xmax
|
||||
endif
|
||||
if (stdcurv.eq.0) then
|
||||
if (unit .ge. 3) then
|
||||
if (range*amps(excit) .gt. volts(irange)) then
|
||||
print *,'Warning: max. range exceeded: '
|
||||
1 ,range,' > ',volts(irange)/amps(excit),' Ohm',char(7)
|
||||
errstat=max(errstat,1)
|
||||
endif
|
||||
else if (range .gt. volts(irange)) then
|
||||
print *,'Warning: max. range exceeded: '
|
||||
1 ,range,' > ',volts(irange), ' V',char(7)
|
||||
errstat=max(errstat,1)
|
||||
endif
|
||||
endif
|
||||
|
||||
if (stype .gt. 0) then
|
||||
if (excit .le. 0) excit=defe(stype)
|
||||
if (irange .eq. 0) irange=defr(stype)
|
||||
endif
|
||||
if (verbose) then
|
||||
print *,'Sensor type: ',types(stype)
|
||||
print *,'Excitation: ',excits(excit)
|
||||
if (unit .eq. 1) then
|
||||
print *,'Sensor Range: ',volts(irange)*1000,' mV'
|
||||
elseif (unit .eq. 2) then
|
||||
print *,'Sensor Range: ',volts(irange),' V'
|
||||
else
|
||||
print *,'Sensor Range: ',volts(irange)/amps(excit),' Ohm'
|
||||
if (unit .eq. 5) then
|
||||
print *,'table double logarithmic'
|
||||
elseif (unit .eq. 4) then
|
||||
print *,'table logarithmic'
|
||||
else
|
||||
print *,'table linear'
|
||||
endif
|
||||
endif
|
||||
if (coef .eq. 1) then
|
||||
print *,'negative characteristic'
|
||||
else
|
||||
print *,'positive characteristic'
|
||||
endif
|
||||
print *
|
||||
endif
|
||||
|
||||
if (stype .eq. 0) then
|
||||
if (unit .ge. 3) then
|
||||
iunit=2
|
||||
else
|
||||
iunit=1
|
||||
endif
|
||||
else
|
||||
if (unit .le. 2) then ! mV / V
|
||||
iunit=1
|
||||
else ! Ohm
|
||||
iunit=2
|
||||
endif
|
||||
if (iunit .ne. defu(stype) .or.
|
||||
1 coef .ne. defc(stype) .or.
|
||||
1 excit .ne. defe(stype) .or.
|
||||
1 irange.ne. defr(stype)) then
|
||||
if (stype .ne. 12) stype=0
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
if (stype .eq. 12) then
|
||||
l=5
|
||||
write (line(1:l), '(a,i1)') ',,,,',max(0,irange-5)
|
||||
elseif (stype .eq. 0) then
|
||||
l=14
|
||||
write (line(1:l), '(i2,4(a,i2.0))')
|
||||
1 stype,',',iunit,',',coef,',',excit,',',irange
|
||||
else
|
||||
l=2
|
||||
write(line(1:l), '(i2)') stype
|
||||
endif
|
||||
|
||||
call str_substitute(intype, line(1:l), ' ', char(0))
|
||||
call str_trim(intype, intype, li)
|
||||
|
||||
if (tlim .gt. 1500) tlim=1500
|
||||
if (tlim .lt. 0) tlim=0
|
||||
|
||||
if (stdcurv.eq.0) then
|
||||
! calculate crc of table
|
||||
crc=0
|
||||
do i=1,np
|
||||
call pack(line, l, x(i), y(i), i-1, 1)
|
||||
call str_crc(crc, line(1:l))
|
||||
enddo
|
||||
call str_crc_comp(crc, crcmp)
|
||||
write (header, "(a,x,a,',',a,',',i1,',',f8.3,',',i1)")
|
||||
1 name(1:11), crcmp,sensor,unit,tlim,coef
|
||||
else
|
||||
crc=0
|
||||
header=stdhdr(stdcurv)
|
||||
endif
|
||||
|
||||
! compare with old file
|
||||
call str_trim(filnam, sensor, l)
|
||||
call str_lowcase(filnam, filnam)
|
||||
filnam(l+1:)='.crv'
|
||||
if (path(1:lp) .ne. ' ') then
|
||||
filnam=path(1:lp)//filnam
|
||||
endif
|
||||
open(unit=2, file=filnam, status='old', iostat=iostat)
|
||||
if (iostat .ne. 0) goto 198
|
||||
read(2, '(a)',end=199) old
|
||||
if (old .ne. header) goto 199
|
||||
read(2, '(a)', end=199) old
|
||||
if (old .ne. intype) goto 199
|
||||
if (stdcurv .ne. 0) then
|
||||
write(line, '(a, i2)') '$',stdcurv
|
||||
read(2, '(a)', end=199) old
|
||||
if (line .ne. old) goto 199
|
||||
read(2, '(a)', end=197) old ! goto end (o.k.) if no more line
|
||||
goto 199
|
||||
endif
|
||||
do i=1,np,ncolumn
|
||||
read(2, '(a)', end=199) old
|
||||
call pack(line, l, x(i), y(i), i-1, min(ncolumn,np-i+1))
|
||||
if (line .ne. old) goto 199
|
||||
enddo
|
||||
read(2, '(a)', end=199) old
|
||||
call pack(line, l, 0.0, 0.0, np, 1)
|
||||
if (line .ne. old) goto 199
|
||||
read(2, '(a)', end=197) old ! goto end (o.k.) if no more line
|
||||
goto 199
|
||||
197 close(2)
|
||||
if (verbose) print *,'curve file has not changed: ',filnam
|
||||
goto 200
|
||||
! goto 999
|
||||
|
||||
198 if (verbose) print *,'create new curve file: ',filnam
|
||||
nlist=nlist+1
|
||||
list(nlist)='created '//filnam
|
||||
goto 200
|
||||
|
||||
199 close(2)
|
||||
if (verbose) print *,'modify curve file: ',filnam
|
||||
nlist=nlist+1
|
||||
list(nlist)='modified '//filnam
|
||||
200 continue
|
||||
open(unit=2, file=filnam, status='unknown', iostat=iostat)
|
||||
if (iostat .ne. 0) then
|
||||
call str_trim(filnam, filnam, l)
|
||||
print *,'can not open ',filnam(1:l)
|
||||
nlist=nlist-1
|
||||
lin=-1
|
||||
return
|
||||
endif
|
||||
call str_trim(header, header, l)
|
||||
write(2, '(a)') header(1:l)
|
||||
write(2, '(a)') intype(1:li)
|
||||
if (stdcurv .ne. 0) then
|
||||
write(2, '(a,i2)') '$',stdcurv
|
||||
else
|
||||
do i=1,np,ncolumn
|
||||
call pack(line, l, x(i), y(i), i-1, min(ncolumn,np-i+1))
|
||||
write(2,'(a)') line(1:l)
|
||||
enddo
|
||||
call pack(line, l, 0.0, 0.0, np, 1)
|
||||
write(2,'(a)') line(1:l)
|
||||
endif
|
||||
close(2)
|
||||
999 continue
|
||||
if (errstat .gt. 0) then
|
||||
if (name.eq.' ') name='<unknown>'
|
||||
nlist=nlist+1
|
||||
if (errstat .gt. 1) then
|
||||
list(nlist)='error in '//file(1:lf)//', curve '//name
|
||||
if (verbose) print *,'no curve file written'
|
||||
lin=-1
|
||||
else
|
||||
list(nlist)='warning in '//file(1:lf)//', curve '//name
|
||||
endif
|
||||
endif
|
||||
if (eof) lin=-1
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
integer function lsc_getno(list, n, name)
|
||||
|
||||
integer n
|
||||
character list(n)*(*), name*(*)
|
||||
character str*32
|
||||
|
||||
integer i,l
|
||||
|
||||
call str_trim(name, name, l)
|
||||
l=min(l,len(str))
|
||||
do i=1,n
|
||||
call str_upcase(str(1:l), list(i))
|
||||
if (name(1:l) .eq. str(1:l)) then
|
||||
lsc_getno=i
|
||||
RETURN
|
||||
endif
|
||||
enddo
|
||||
lsc_getno=0
|
||||
end
|
||||
|
||||
|
||||
subroutine lsc_errinit(lunit)
|
||||
|
||||
include 'conv.inc'
|
||||
|
||||
integer lunit
|
||||
|
||||
lun=lunit
|
||||
pos=0
|
||||
errstat=0
|
||||
end
|
||||
|
||||
|
||||
subroutine lsc_error(lin, text)
|
||||
|
||||
include 'conv.inc'
|
||||
|
||||
integer lin
|
||||
character text*(*)
|
||||
|
||||
integer i,l
|
||||
character line*132
|
||||
|
||||
if (pos .eq. 0) then
|
||||
print *
|
||||
endif
|
||||
if (lin .gt. pos) then
|
||||
rewind lun
|
||||
do i=1,lin-1
|
||||
read(lun, '(a)', end=8) line
|
||||
call str_trim(line, line, l)
|
||||
if (i .gt. max(pos,lin-3)) then
|
||||
print '(5x,a)',line(1:l)
|
||||
endif
|
||||
enddo
|
||||
read(lun, '(a)', end=8) line
|
||||
call str_trim(line, line, l)
|
||||
print '(x,2a)','>>> ',line(1:l)
|
||||
8 pos=lin
|
||||
errstat=2
|
||||
endif
|
||||
|
||||
9 print '(x,a)', text
|
||||
end
|
665
tecs/conv.f90
665
tecs/conv.f90
@ -1,665 +0,0 @@
|
||||
program conv
|
||||
|
||||
use strings
|
||||
|
||||
integer, parameter :: ncolumn=3
|
||||
logical init
|
||||
integer lun/0/,pos/0/,nlist/0/,ctx/0/
|
||||
integer i,l,lin
|
||||
character*128 file, input, list(1000), line
|
||||
logical wild
|
||||
integer errstat
|
||||
|
||||
call sys_get_cmdpar(input, l)
|
||||
if (input .ne. ' ') then
|
||||
i=index(input, '.')
|
||||
if (i .ne. 0) input(i:)=' '
|
||||
endif
|
||||
if (input == ' ') then
|
||||
print '(a,$)',' Device(s) (lowercase, separated by space, return for all): '
|
||||
read(*,'(a)',end=99) input
|
||||
endif
|
||||
if (input == 'all') input=' '
|
||||
|
||||
open(3, file='src/cfg/tecs.cfg', status='old',readonly,iostat=i)
|
||||
if (i .ne. 0) then
|
||||
print *,'can not open tecs.cfg'
|
||||
end if
|
||||
|
||||
do
|
||||
read(3, '(a)', iostat=i) line
|
||||
if (i .ne. 0) EXIT
|
||||
i=index(line, "'")
|
||||
if (i==0) CYCLE
|
||||
file=line(i+1:)
|
||||
i=index(file, "'")
|
||||
if (i<2) CYCLE
|
||||
file(i:i)=' '
|
||||
if (input .ne. ' ' .and. index(' '//input, ' '//file(1:i)) .eq. 0) CYCLE
|
||||
file(i:)='.inp'
|
||||
l=i+3
|
||||
print *
|
||||
open(1,name='src/cfg/'//file(1:l),status='old',readonly,iostat=i)
|
||||
if (i .ne. 0) then
|
||||
print *,'can not open ',file(1:l)
|
||||
print "(x,60('-'))"
|
||||
nlist=nlist+1
|
||||
list(nlist)='can not open '//file(1:l)
|
||||
else
|
||||
lin=0
|
||||
do
|
||||
print "(x,60('-'))"
|
||||
call lsc_errinit(1) ! 1=lun
|
||||
call lsc_convert_table(lin, file(1:l))
|
||||
if (lin<0) EXIT
|
||||
enddo
|
||||
close(1)
|
||||
endif
|
||||
enddo
|
||||
|
||||
print "(x,60('-'))"
|
||||
do i=1,nlist
|
||||
call str_trim(list(i), list(i), l)
|
||||
print *,list(i)(1:l)
|
||||
enddo
|
||||
|
||||
99 continue
|
||||
|
||||
contains
|
||||
|
||||
subroutine pack(line, l, x, y, offset, m)
|
||||
character line*(*)
|
||||
integer l, offset, m
|
||||
real x(m), y(m)
|
||||
|
||||
integer j,p
|
||||
|
||||
p=0
|
||||
do j=1,m
|
||||
call str_append(line, p, '#0,')
|
||||
call str_fmt_real(line(p+1:), l, 1.0*(offset+j), 1, 0, 6, 3)
|
||||
p=p+l
|
||||
call str_append(line, p, ':')
|
||||
call str_fmt_real(line(p+1:), l, x(j), 1, 0, 6, 3)
|
||||
p=p+l
|
||||
call str_append(line, p, ',')
|
||||
call str_fmt_real(line(p+1:), l, y(j), 1, 0, 6, 3)
|
||||
p=p+l
|
||||
call str_append(line, p, ';')
|
||||
enddo
|
||||
line(p:p)=' '
|
||||
l=p-1
|
||||
end subroutine
|
||||
|
||||
|
||||
subroutine lsc_convert_table(lin, file)
|
||||
|
||||
implicit none
|
||||
|
||||
integer lin
|
||||
character(len=*) file
|
||||
|
||||
integer, parameter :: ntypes=12, nvolts=12, namps=12
|
||||
integer n
|
||||
|
||||
real x(200), y(200), ex, ey
|
||||
integer i,j,l,p,li,crc,form
|
||||
|
||||
character name*15, sensor*10, header*64, line*128, old*128, intype*16
|
||||
character crcmp*3, filnam*24
|
||||
character months*12/'123456789ond'/
|
||||
character c40*40/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$+-&'/
|
||||
integer unit, type, excit, irange, coef, iunit, stdcurv
|
||||
! codes
|
||||
character types(0:ntypes)*12/'Special','Si Diode','GaAlAs Diode' &
|
||||
,'Pt250 Ohm','Pt500 Ohm','Pt2500 Ohm','RhFe','C-Glass' &
|
||||
,'Cernox','RuOx','Ge','??','TC'/
|
||||
integer, parameter :: nunits=3
|
||||
character units(nunits)*5/'mV','V','Ohm'/
|
||||
integer, parameter :: nexcits=12
|
||||
character excits(0:nexcits)*8/'Off','30nA','100nA','300nA','1uA','3uA' &
|
||||
,'10uA','30uA','100uA','300uA','1mA','10mV','1mV'/
|
||||
integer, parameter :: nforms=5
|
||||
character forms(nforms)*6/'ill','ill','lin','log','loglog'/
|
||||
|
||||
! default values
|
||||
integer defu(ntypes)/ 1, 1, 2, 2,2, 2, 2, 2, 2, 2, 3, 1/ ! unit
|
||||
integer defe(ntypes)/ 6, 6,10,10,8,10,11,11,11,12, 0, 0/ ! excit
|
||||
integer defr(ntypes)/11,12, 8, 9,8, 8, 4, 4, 4, 1, 1, 6/ ! range
|
||||
integer defc(ntypes)/ 1, 1, 2, 2,2, 2, 1, 1, 1, 1, 2, 2/ ! coef
|
||||
real volts(nvolts)/1E-3,2.5E-3,5E-3,1E-2,2.5E-2,5E-2 &
|
||||
,1E-1,2.5E-1,5E-1,1E-0,2.5E-0,5E-0/
|
||||
real amps(namps)/3E-8,1E-7,3E-7,1E-6,3E-6,1E-5,3E-5,1E-4,3E-4,1E-3 &
|
||||
,3E-8,3E-8/ ! minimal values are for voltage excitation
|
||||
integer, parameter :: stdmax=10
|
||||
character (len=40) stdhdr(stdmax)/ &
|
||||
'DT-470 ,Standard ,2,+475.000E+0,1', &
|
||||
'DT-500-D ,Standard ,2,+365.000E+0,1', &
|
||||
'DT-500-E1 ,Standard ,2,+330.000E+0,1', &
|
||||
'PT-100 ,Standard ,3,+800.000E+0,2', &
|
||||
'PT-1000 ,Standard ,3,+800.000E+0,2', &
|
||||
'TYPE K ,Standard ,1,+1645.00E+0,2', &
|
||||
'TYPE E ,Standard ,1,+1188.50E+0,2', &
|
||||
'TYPE T ,Standard ,1,+673.000E+0,2', &
|
||||
'CrAuFe.03%,Standard ,1,+500.000E+0,2', &
|
||||
'CrAuFe.07%,Standard ,1,+610.000E+0,2'/
|
||||
integer stdtype(stdmax)/1,1,1,4,5,12,12,12,12,12/
|
||||
|
||||
real tlim, range, xmax, ymax, curr, rl
|
||||
|
||||
real x1,x2,xi,y1,y2,yi,sum,sum1,sum2,mum,mum1,mum2,d,at,at1,at2
|
||||
logical eof, first
|
||||
|
||||
first=.true.
|
||||
eof=.false.
|
||||
n=0
|
||||
name=' '
|
||||
sensor=' '
|
||||
unit=0
|
||||
tlim=0
|
||||
type=0
|
||||
excit=0
|
||||
form=0
|
||||
range=-1.0
|
||||
stdcurv=0
|
||||
1 read(1,'(q,a)',err=97,end=97) l,line
|
||||
lin=lin+1
|
||||
l=max(1,min(l,len(line)))
|
||||
call str_first_nonblank(line, i)
|
||||
if (i .eq. 0) goto 1
|
||||
if (line(i:i) .eq. '!') goto 1
|
||||
first=.false.
|
||||
call str_upcase(line(1:l),line(i:l))
|
||||
i=index(line(1:l),'!')
|
||||
if (i .ne. 0) line=line(1:i-1)
|
||||
call str_trim(line(1:l),line(1:l),l)
|
||||
if (line(1:4) .ne. 'CURV') then
|
||||
i=index(line,'=')
|
||||
if (i .eq. 0) then
|
||||
call lsc_error(lin, 'missing "="')
|
||||
goto 1
|
||||
endif
|
||||
if (i .eq. l) then
|
||||
call lsc_error(lin, 'missing value')
|
||||
goto 1
|
||||
endif
|
||||
call str_first_nonblank(line(i+1:l), j)
|
||||
i=i+j
|
||||
if (line(1:4) .eq. 'NAME') then
|
||||
call str_lowcase(name,line(i:l))
|
||||
elseif (line(1:4) .eq. 'SENS') then
|
||||
sensor=line(i:l)
|
||||
elseif (line(1:4) .eq. 'UNIT') then
|
||||
unit=lsc_getno(units, nunits, line(i:l))
|
||||
if (unit .le. 0) call lsc_error(lin, 'illegal unit')
|
||||
elseif (line(1:4) .eq. 'TLIM') then
|
||||
read(line(i:l),*,err=92,end=92) tlim
|
||||
elseif (line(1:4) .eq. 'TYPE') then
|
||||
type=lsc_getno(types, ntypes, line(i:l))-1
|
||||
if (type .lt. 0) call lsc_error(lin, 'illegal type')
|
||||
elseif (line(1:4) .eq. 'EXCI') then
|
||||
call str_substitute(line(1:8),line(i:l),' ',char(0))
|
||||
excit=lsc_getno(excits, nexcits, line(1:8))-1
|
||||
if (excit .lt. 0) call lsc_error(lin, 'illegal excitation')
|
||||
elseif (line(1:4) .eq. 'RANG') then
|
||||
read(line(i:l),*,err=93,end=93) range
|
||||
if (range .lt. 0) goto 93
|
||||
elseif (line(1:4) .eq. 'FORM') then
|
||||
form=lsc_getno(forms, nforms, line(i:l))
|
||||
if (form .lt. 3) call lsc_error(lin, 'illegal format')
|
||||
else
|
||||
call lsc_error(lin, 'unknown parameter name')
|
||||
endif
|
||||
goto 1
|
||||
endif
|
||||
if (name .eq. ' ') call lsc_error(lin, 'missing name')
|
||||
i=index(line,'=')
|
||||
if (i .ne. 0) then
|
||||
read(line(i+1:l), *, err=2,end=2) stdcurv
|
||||
2 continue
|
||||
if (stdcurv<0 .or. stdcurv>stdmax) then
|
||||
call lsc_error(lin, 'illegal standard curve no.')
|
||||
goto 101
|
||||
endif
|
||||
if (unit/=0 .or. type/=0 .or. &
|
||||
excit/=0 .or. tlim/=0 .or. sensor/=' ') then
|
||||
print *,'Warning: all parameters except "name", "range" and "curv" are ignored',char(7)
|
||||
errstat=max(errstat,1)
|
||||
endif
|
||||
line=stdhdr(stdcurv)
|
||||
i=index(line, ',')
|
||||
if (i .eq. 0) goto 96 ! illegal stdhdr
|
||||
j=index(line(i+1:), ',')
|
||||
if (j .eq. 0) goto 96 ! illegal stdhdr
|
||||
|
||||
read(line(i+j+1:), *, err=96, end=96) unit, ymax, coef
|
||||
type=stdtype(stdcurv)
|
||||
! if (range < 0) then
|
||||
! range=stdrange(stdcurv)
|
||||
! end if
|
||||
xmax=0
|
||||
excit=0
|
||||
tlim=0
|
||||
goto 100
|
||||
endif
|
||||
if (line(5:) /= ' ') then
|
||||
call lsc_error(lin, 'missing "="')
|
||||
goto 101
|
||||
end if
|
||||
! user curve
|
||||
if (unit .eq. 0) call lsc_error(lin, 'missing unit')
|
||||
if (type .eq. 0) then
|
||||
if (excit .le. 0) call lsc_error(lin, 'missing excitation')
|
||||
if (range .lt. 0) call lsc_error(lin, 'missing range')
|
||||
else
|
||||
if (excit .eq. 0) excit=defe(type)
|
||||
endif
|
||||
3 n=n+1
|
||||
read(1,'(a)',err=98,end=98) line
|
||||
lin=lin+1
|
||||
if (line .eq. ' ') goto 9
|
||||
read(line, *, err=94, end=94) x(n), y(n)
|
||||
goto 3
|
||||
|
||||
|
||||
92 call lsc_error(lin,'illegal tlim')
|
||||
goto 1
|
||||
93 call lsc_error(lin,'illegal range')
|
||||
goto 1
|
||||
94 call lsc_error(lin,'illegal datapoint')
|
||||
goto 101
|
||||
95 call lsc_error(lin,'illegal table no')
|
||||
goto 1
|
||||
96 stop 'internal error: illegal stdhdr'
|
||||
97 if (.not. first) then
|
||||
call lsc_error(lin,'unexpected end of file')
|
||||
endif
|
||||
lin=-1
|
||||
RETURN
|
||||
98 eof=.true.
|
||||
|
||||
9 x(n)=0
|
||||
y(n)=0
|
||||
|
||||
if (n .lt. 3) call lsc_error(lin+n-1, 'not enough data points')
|
||||
if (x(n-1) .lt. x(1)) then ! inverse order
|
||||
j=n
|
||||
do i=1,n/2
|
||||
j=j-1
|
||||
ex=x(i)
|
||||
ey=y(i)
|
||||
x(i)=x(j)
|
||||
y(i)=y(j)
|
||||
x(j)=ex
|
||||
y(j)=ey
|
||||
enddo
|
||||
endif
|
||||
do i=2,n-1
|
||||
if (x(i) .le. x(i-1)) then
|
||||
call lsc_error(lin+n, 'table not ordered')
|
||||
goto 101
|
||||
endif
|
||||
enddo
|
||||
xmax=x(n-1)
|
||||
if (y(n-1) .lt. y(1)) then
|
||||
coef=1
|
||||
do i=2,n-1
|
||||
if (y(i) .ge. y(i-1)) then
|
||||
call lsc_error(lin+n, 'table not ordered')
|
||||
goto 101
|
||||
endif
|
||||
enddo
|
||||
ymax=y(1)
|
||||
else
|
||||
coef=2
|
||||
do i=2,n-1
|
||||
if (y(i) .le. y(i-1)) then
|
||||
call lsc_error(lin+n, 'table not ordered')
|
||||
goto 101
|
||||
endif
|
||||
enddo
|
||||
ymax=y(n-1)
|
||||
endif
|
||||
101 continue
|
||||
do i=1,n-1
|
||||
if (x(i) .le. 0.0) call lsc_error(lin+n, 'illegal sensor value')
|
||||
if (y(i) .le. 0.0) call lsc_error(lin+n, 'illegal temperature')
|
||||
enddo
|
||||
if (errstat .gt. 1) goto 999
|
||||
|
||||
sum=0
|
||||
sum1=0
|
||||
sum2=0
|
||||
mum=0
|
||||
mum1=0
|
||||
mum2=0
|
||||
do i=2,n-2
|
||||
xi=x(i)
|
||||
x1=x(i-1)
|
||||
x2=x(i+1)
|
||||
yi=log(y(i))
|
||||
y1=y(i-1)
|
||||
y2=y(i+1)
|
||||
d=abs(yi-log(y1+(xi-x1)/(x2-x1)*(y2-y1)))
|
||||
sum=sum+d*d
|
||||
if (d .gt. mum) then
|
||||
mum=d
|
||||
at=y(i)
|
||||
endif
|
||||
xi=log(xi)
|
||||
x1=log(x1)
|
||||
x2=log(x2)
|
||||
d=abs(yi-log(y1+(xi-x1)/(x2-x1)*(y2-y1)))
|
||||
sum1=sum1+d*d
|
||||
if (d .gt. mum1) then
|
||||
mum1=d
|
||||
at1=y(i)
|
||||
endif
|
||||
y1=log(y1)
|
||||
y2=log(y2)
|
||||
d=abs(yi-(y1+(xi-x1)/(x2-x1)*(y2-y1)))
|
||||
sum2=sum2+d*d
|
||||
if (d .gt. mum2) then
|
||||
mum2=d
|
||||
at2=y(i)
|
||||
endif
|
||||
enddo
|
||||
if (n .gt. 3) then
|
||||
sum=sqrt(sum/(n-2))*25
|
||||
sum1=sqrt(sum1/(n-2))*25
|
||||
sum2=sqrt(sum2/(n-2))*25
|
||||
|
||||
print '(x,a)','Interpolation accuracy mean worst at'
|
||||
print '(13x,a,3(f8.2,a))','linear ',sum, '%',mum *25,'%',at,' K'
|
||||
print '(13x,a,3(f8.2,a))','log/lin ',sum1,'%',mum1*25,'%',at1,' K'
|
||||
print '(13x,a,3(f8.2,a))','log/log ',sum2,'%',mum2*25,'%',at2,' K'
|
||||
|
||||
if (unit .eq. 3) then
|
||||
sum1=(sum1/sum)**2+(mum1/mum)**2
|
||||
sum2=(sum2/sum)**2+(mum2/mum)**2
|
||||
if (form .eq. 0 .and. (sum1 .lt. 1.0 .or. sum2 .lt. 1.0) &
|
||||
.or. form .gt. 3) then
|
||||
if (form .eq. 0 .and. sum2 .lt. sum1 .or. form .eq. 5) then
|
||||
unit=5
|
||||
do i=1,n-1
|
||||
y(i)=log10(y(i))
|
||||
enddo
|
||||
else
|
||||
unit=4
|
||||
endif
|
||||
do i=1,n-1
|
||||
x(i)=log10(x(i))
|
||||
enddo
|
||||
endif
|
||||
else
|
||||
if (form .gt. 3) print *,'FORM ignored (not unit Ohm)'
|
||||
endif
|
||||
endif
|
||||
|
||||
100 continue
|
||||
|
||||
if (unit .eq. 1) then ! check for mV / V consistency
|
||||
if (xmax .gt. 990) then
|
||||
unit=2
|
||||
do i=1,n-1
|
||||
x(n)=x(n)/1000.0
|
||||
enddo
|
||||
endif
|
||||
xmax=xmax/1000.0
|
||||
range=range/1000.0
|
||||
elseif (unit .eq. 2) then
|
||||
if (xmax .lt. 0.5) then
|
||||
unit=1
|
||||
do i=1,n-1
|
||||
x(n)=x(n)*1000.0
|
||||
enddo
|
||||
endif
|
||||
endif
|
||||
if (range .eq. 0) range=xmax
|
||||
if (tlim .eq. 0 .or. tlim .gt. ymax) tlim=ymax
|
||||
irange=0
|
||||
if (range .gt. 0) then
|
||||
if (unit .ge. 3) then ! Ohm
|
||||
curr=amps(excit)
|
||||
rl=range*curr ! convert Ohm to V
|
||||
if (rl .gt. 5.0) then
|
||||
! print *,'Warning: maximum range exceeded: ', range,'>',5/curr,' Ohm',char(7)
|
||||
! errstat=max(errstat,1)
|
||||
irange=12
|
||||
endif
|
||||
else
|
||||
rl=range ! V
|
||||
endif
|
||||
if (irange .eq. 0) then
|
||||
if (type==12) then
|
||||
j=6
|
||||
else
|
||||
j=nvolts
|
||||
end if
|
||||
do i=1,j
|
||||
if (rl .le. volts(i)) then
|
||||
irange=i
|
||||
goto 150
|
||||
endif
|
||||
enddo
|
||||
! print *,'Warning: maximum range exceeded: ', range,' > ',volts(j),' V',char(7)
|
||||
! errstat=max(errstat,1)
|
||||
irange=j
|
||||
150 continue
|
||||
if (excit .eq. 11) then ! 10 mV excit -> min. 10 mV range
|
||||
if (irange .lt. 4) irange=4
|
||||
endif
|
||||
endif
|
||||
else
|
||||
irange=defr(type)
|
||||
range=xmax
|
||||
endif
|
||||
if (stdcurv==0) then
|
||||
if (unit .ge. 3) then
|
||||
if (range*amps(excit) .gt. volts(irange)) then
|
||||
print *,'Warning: max. range exceeded: ',range,' > ',volts(irange)/amps(excit),' Ohm',char(7)
|
||||
errstat=max(errstat,1)
|
||||
endif
|
||||
else if (range .gt. volts(irange)) then
|
||||
print *,'Warning: max. range exceeded: ',range,' > ',volts(irange), ' V',char(7)
|
||||
errstat=max(errstat,1)
|
||||
endif
|
||||
endif
|
||||
|
||||
if (type .gt. 0) then
|
||||
if (excit .le. 0) excit=defe(type)
|
||||
if (irange .eq. 0) irange=defr(type)
|
||||
endif
|
||||
print *,'Sensor type: ',types(type)
|
||||
print *,'Excitation: ',excits(excit)
|
||||
if (unit .eq. 1) then
|
||||
print *,'Sensor Range: ',volts(irange)*1000,' mV'
|
||||
elseif (unit .eq. 2) then
|
||||
print *,'Sensor Range: ',volts(irange),' V'
|
||||
else
|
||||
print *,'Sensor Range: ',volts(irange)/amps(excit),' Ohm'
|
||||
if (unit .eq. 5) then
|
||||
print *,'table double logarithmic'
|
||||
elseif (unit .eq. 4) then
|
||||
print *,'table logarithmic'
|
||||
else
|
||||
print *,'table linear'
|
||||
endif
|
||||
endif
|
||||
if (coef .eq. 1) then
|
||||
print *,'negative characteristic'
|
||||
else
|
||||
print *,'positive characteristic'
|
||||
endif
|
||||
print *
|
||||
|
||||
if (type .eq. 0) then
|
||||
if (unit .ge. 3) then
|
||||
iunit=2
|
||||
else
|
||||
iunit=1
|
||||
endif
|
||||
else
|
||||
if (unit .le. 2) then ! mV / V
|
||||
iunit=1
|
||||
else ! Ohm
|
||||
iunit=2
|
||||
endif
|
||||
if (iunit .ne. defu(type) .or. &
|
||||
coef .ne. defc(type) .or. &
|
||||
excit .ne. defe(type) .or. &
|
||||
irange.ne. defr(type)) then
|
||||
if (type .ne. 12) type=0
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
if (type .eq. 12) then
|
||||
l=5
|
||||
write (line(1:l), '(a,i1)') ',,,,',max(0,irange-5)
|
||||
elseif (type .eq. 0) then
|
||||
l=14
|
||||
write (line(1:l), '(i2,4(a,i2.0))') type,',',iunit,',',coef,',',excit,',',irange
|
||||
else
|
||||
l=2
|
||||
write(line(1:l), '(i2)') type
|
||||
endif
|
||||
|
||||
call str_substitute(intype, line(1:l), ' ', char(0))
|
||||
call str_trim(intype, intype, li)
|
||||
|
||||
if (tlim .gt. 1500) tlim=1500
|
||||
if (tlim .lt. 0) tlim=0
|
||||
|
||||
if (stdcurv==0) then
|
||||
! calculate crc of table
|
||||
crc=0
|
||||
do i=1,n,ncolumn
|
||||
call pack(line, l, x(i), y(i), i-1, 1)
|
||||
call str_crc(crc, line(1:l))
|
||||
enddo
|
||||
call str_crc_comp(crc, crcmp)
|
||||
write (header, "(a,x,a,',',a,',',i1,',',f8.3,',',i1)") name(1:11), crcmp,sensor,unit,tlim,coef
|
||||
else
|
||||
header=stdhdr(stdcurv)
|
||||
endif
|
||||
|
||||
! compare with old file
|
||||
call str_trim(filnam, name, l)
|
||||
filnam(l+1:)='.crv'
|
||||
filnam='tecs/'//filnam
|
||||
open(unit=2, file=filnam, status='old', action='read',err=198)
|
||||
read(2, '(a)',end=199) old
|
||||
if (old/=header) goto 199
|
||||
read(2, '(a)', end=199) old
|
||||
if (old/=intype) goto 199
|
||||
do i=1,n,ncolumn
|
||||
read(2, '(a)') old
|
||||
call pack(line, l, x(i), y(i), i-1, min(ncolumn,n-i+1))
|
||||
if (line/=old) goto 199
|
||||
enddo
|
||||
close(2)
|
||||
print *,'curve file has not changed: ',filnam
|
||||
goto 999
|
||||
|
||||
198 print *,'create new curve file: ',filnam
|
||||
nlist=nlist+1
|
||||
list(nlist)='created '//filnam
|
||||
goto 200
|
||||
|
||||
199 close(2)
|
||||
print *,'modify curve file: ',filnam
|
||||
nlist=nlist+1
|
||||
list(nlist)='modified '//filnam
|
||||
200 continue
|
||||
open(unit=2, file=filnam, status='unknown', action='write', carriagecontrol='list')
|
||||
call str_trim(header, header, l)
|
||||
if (stdcurv/=0) then
|
||||
write(2, '(a)') header(1:l)
|
||||
write(2, '(a)') intype(1:li)
|
||||
write(2, '(a,i2)') '$',stdcurv
|
||||
else
|
||||
write(2, '(a)') header(1:l)
|
||||
write(2, '(a)') intype(1:li)
|
||||
do i=1,n,ncolumn
|
||||
call pack(line, l, x(i), y(i), i-1, min(ncolumn,n-i+1))
|
||||
write(2,'(a)') line(1:l)
|
||||
enddo
|
||||
endif
|
||||
close(2)
|
||||
999 continue
|
||||
if (errstat .gt. 0) then
|
||||
if (name==' ') name='<unknown>'
|
||||
nlist=nlist+1
|
||||
if (errstat .gt. 1) then
|
||||
list(nlist)='error in '//file//', curve '//name
|
||||
print *,'no curve file written'
|
||||
lin=-1
|
||||
else
|
||||
list(nlist)='warning in '//file//', curve '//name
|
||||
endif
|
||||
endif
|
||||
if (eof) lin=-1
|
||||
return
|
||||
end subroutine
|
||||
|
||||
|
||||
integer function lsc_getno(list, n, name)
|
||||
|
||||
integer n
|
||||
character list(n)*(*), name*(*)
|
||||
character str*32
|
||||
|
||||
integer i,l
|
||||
|
||||
call str_trim(name, name, l)
|
||||
l=min(l,len(str))
|
||||
do i=1,n
|
||||
call str_upcase(str(1:l), list(i))
|
||||
if (name(1:l) .eq. str(1:l)) then
|
||||
lsc_getno=i
|
||||
RETURN
|
||||
endif
|
||||
enddo
|
||||
lsc_getno=0
|
||||
end function
|
||||
|
||||
|
||||
subroutine lsc_errinit(lunit)
|
||||
|
||||
integer lunit
|
||||
|
||||
lun=lunit
|
||||
pos=0
|
||||
errstat=0
|
||||
end subroutine
|
||||
|
||||
subroutine lsc_error(lin, text)
|
||||
|
||||
integer lin
|
||||
character text*(*)
|
||||
|
||||
integer i,l
|
||||
character line*132
|
||||
|
||||
if (pos .eq. 0) then
|
||||
print *
|
||||
endif
|
||||
if (lin .gt. pos) then
|
||||
rewind lun
|
||||
do i=1,lin-1
|
||||
read(lun, '(q,a)', end=8) l,line
|
||||
if (i .gt. max(pos,lin-3)) then
|
||||
print '(5x,a)',line(1:max(1,min(l,len(line))))
|
||||
endif
|
||||
enddo
|
||||
read(lun, '(q,a)', end=8) l,line
|
||||
print '(x,2a)','>>> ',line(1:max(1,min(l,len(line))))
|
||||
8 pos=lin
|
||||
errstat=2
|
||||
endif
|
||||
|
||||
9 print '(x,a)', text
|
||||
end subroutine
|
||||
|
||||
end program
|
@ -1,11 +0,0 @@
|
||||
integer ncolumn
|
||||
parameter (ncolumn=3)
|
||||
integer lun,pos,nlist,errstat,lf,lp
|
||||
common /convcom/lun,pos,nlist,errstat,lf,lp
|
||||
logical verbose
|
||||
common /convcom/verbose
|
||||
character*128 file, path
|
||||
common /convcom/file, path
|
||||
character*128 list(1000)
|
||||
common /convcom/list
|
||||
|
208
tecs/cvt.f
208
tecs/cvt.f
@ -1,208 +0,0 @@
|
||||
!!------------------------------------------------------------------------------
|
||||
!!
|
||||
subroutine CVT_REAL_STR(RESULT, RESLEN, X, !!
|
||||
1 WIDTH, FIXLEN, DIGITS, TRUNC) !!
|
||||
!! =====================================================
|
||||
!!
|
||||
!! Convert X to RESULT (subroutine version)
|
||||
!!
|
||||
!! The number is converted using Fortran format F<WIDTH>.<FIXLEN>.
|
||||
!! If the number is too large or the number of significant digits is to
|
||||
!! low, the number digits after the decimal point is changed or, if this is
|
||||
!! is not possible, an E-format is choosen. If WIDTH is lower than 6, the
|
||||
!! result length will be larger in some cases.
|
||||
!!
|
||||
!! Default format (WIDTH < 0, FIXLEN < -1, DIGITS < 0)
|
||||
!!
|
||||
implicit none
|
||||
|
||||
!! Arguments
|
||||
character*(*) RESULT !!
|
||||
integer RESLEN !! length of result
|
||||
real X !! number to be converted
|
||||
integer WIDTH !! minimum width
|
||||
integer FIXLEN !! minimum digits after comma
|
||||
integer DIGITS !! minimum significant digits
|
||||
integer TRUNC !! TRUNC=1,3: omit trailing zeros
|
||||
!! TRUNC=0,1: decimal point always shown
|
||||
|
||||
integer bufmax
|
||||
parameter (bufmax=32)
|
||||
integer wid, fix, dig, trc
|
||||
character*(bufmax) fixbuf, expbuf ! internal buffers
|
||||
integer exponent
|
||||
real mantissa
|
||||
integer f0, fl, e0, el ! start and end of used buffer F/E
|
||||
integer fdig, edig ! digits after decimal point F/E format
|
||||
integer overhd ! overhead
|
||||
integer p ! position of decimal point
|
||||
integer digf ! number of digits-1 shown (F-Format)
|
||||
integer le, l
|
||||
character*8 rfmt
|
||||
|
||||
trc=trunc
|
||||
if (mod(trc,2) .eq. 1) then ! defaults
|
||||
wid=1
|
||||
fix=0
|
||||
dig=4
|
||||
if (width .ge. 0) wid=width
|
||||
else
|
||||
wid=min(8,len(result))
|
||||
if (width .ge. 0) wid=width
|
||||
fix=max(0,wid/2-1)
|
||||
dig=1
|
||||
endif
|
||||
if (fixlen .ge. 0) fix=fixlen
|
||||
if (digits .ge. 0) dig=digits
|
||||
|
||||
wid=min(bufmax, wid, len(result))
|
||||
dig=min(bufmax, dig)
|
||||
|
||||
if (x .eq. 0) then
|
||||
exponent=0
|
||||
mantissa=0
|
||||
else
|
||||
exponent=int(log10(abs(x))+100)-100
|
||||
mantissa=x/10.0**exponent
|
||||
endif
|
||||
|
||||
|
||||
edig=min(max(wid-4,dig-1),len(result)-4)
|
||||
fdig=min(max(fix,dig-1-exponent),len(result)-1)
|
||||
|
||||
! F-Format
|
||||
|
||||
11 f0=0
|
||||
fl=bufmax+1 ! in case of write error
|
||||
digf=-1
|
||||
if (fdig .lt. -exponent) goto 14
|
||||
write(rfmt, '(''(F'',I2.2,''.'',I2.2,'')'')') bufmax, fdig
|
||||
write(fixbuf, rfmt, err=14) x
|
||||
|
||||
! reduce
|
||||
|
||||
f0=bufmax-fdig
|
||||
if (exponent .gt. 0) f0=f0-exponent
|
||||
do while(f0 .gt. 0 .and. fixbuf(f0:f0) .ne. ' ')
|
||||
f0=f0-1
|
||||
enddo
|
||||
fl=bufmax-1
|
||||
do while(fixbuf(fl+1:fl+1) .eq. ' ')
|
||||
fl=fl-1
|
||||
enddo
|
||||
overhd=fl+1-f0-len(result)
|
||||
do while (fixbuf(fl+1:fl+1) .eq. '0'
|
||||
1 .and. (overhd .gt. 0 .or. mod(trc,2) .eq. 1))
|
||||
fl=fl-1
|
||||
overhd=overhd-1
|
||||
enddo
|
||||
if (fixbuf(fl+1:fl+1) .eq. '.' .and. trc .ge. 2) then
|
||||
overhd=overhd-1
|
||||
else
|
||||
fl=fl+1
|
||||
endif
|
||||
if (overhd .gt. 0) then
|
||||
12 if (fdig .ge. overhd) then
|
||||
fdig=fdig-overhd
|
||||
goto 11 ! try again with less digits
|
||||
endif
|
||||
fl=bufmax+1
|
||||
endif
|
||||
digf=fdig+exponent
|
||||
|
||||
! E-Format mantissa
|
||||
|
||||
14 if (x .eq. 0 .or. edig .lt. 0) goto 13
|
||||
|
||||
15 write(rfmt, '(''(F'',I2.2,''.'',I2.2,'')'')') bufmax-4, edig
|
||||
write(expbuf(1:bufmax-4), rfmt, err=19) mantissa
|
||||
|
||||
if (exponent .gt. -10) then
|
||||
if (exponent .lt. 10 .and. exponent .ge. 0) then
|
||||
le=2
|
||||
else
|
||||
le=3
|
||||
endif
|
||||
else
|
||||
le=4
|
||||
endif
|
||||
|
||||
! reduce
|
||||
|
||||
e0=bufmax-6-edig
|
||||
if (e0 .gt. 0) then
|
||||
if (expbuf(e0:e0) .eq. '1') then ! 9.9 was rounded to 10
|
||||
exponent=exponent+1
|
||||
mantissa=mantissa/10.0
|
||||
goto 15
|
||||
endif
|
||||
if (expbuf(e0:e0) .eq. '-') e0=e0-1
|
||||
endif
|
||||
|
||||
el=bufmax-5
|
||||
do while(expbuf(el+1:el+1) .eq. ' ')
|
||||
el=el-1
|
||||
enddo
|
||||
overhd=el+le+1-e0-len(result)
|
||||
do while (expbuf(el+1:el+1) .eq. '0' .and.
|
||||
1 (overhd .gt. 0 .or. mod(trc,2) .ne. 0))
|
||||
el=el-1
|
||||
overhd=overhd-1
|
||||
enddo
|
||||
if (expbuf(el+1:el+1) .eq. '.' .and. trc .ge. 2) then
|
||||
overhd=overhd-1
|
||||
else
|
||||
el=el+1
|
||||
endif
|
||||
|
||||
if (overhd .gt. 0) then
|
||||
if (edig .ge. overhd) then
|
||||
edig=edig-overhd
|
||||
goto 14 ! try again with less digits
|
||||
endif
|
||||
el=bufmax+1
|
||||
else
|
||||
write(rfmt, '(''(A,I'',I2.2,'')'')') le-1
|
||||
write(expbuf(el+1:el+le), rfmt) 'E',exponent
|
||||
el=el+le
|
||||
endif
|
||||
|
||||
|
||||
! Compare
|
||||
|
||||
l=fl-f0
|
||||
if (l .gt. wid .and.
|
||||
1 (edig .gt. digf .or.
|
||||
1 edig .eq. digf .and. l .gt. el-e0 .or.
|
||||
1 l .gt. len(result))) then ! E-format is better
|
||||
fixbuf=expbuf
|
||||
f0=e0
|
||||
fl=el
|
||||
p=bufmax-4-edig
|
||||
else
|
||||
p=bufmax-fdig
|
||||
if (fix .eq. 0 .and. trc .ge. 2) p=p-1 ! Decimal point not needed if fix=0
|
||||
endif
|
||||
|
||||
13 l=fl-f0
|
||||
if (l .gt. len(result)) then
|
||||
goto 19
|
||||
elseif (p-f0 .gt. wid-fix .or. l .ge. wid) then ! Left just
|
||||
result=fixbuf(f0+1:fl)
|
||||
elseif (fl-p .gt. fix) then ! Right just
|
||||
result=fixbuf(fl-wid+1:fl)
|
||||
l=wid
|
||||
else ! Decimal just
|
||||
result=fixbuf(p+fix-wid+1:fl)
|
||||
l=fl+wid-p-fix
|
||||
endif
|
||||
reslen=min(l, len(result))
|
||||
return
|
||||
|
||||
19 result='******'
|
||||
reslen=len(result)
|
||||
end
|
||||
|
||||
subroutine cvt_bintim
|
||||
stop 'CVT_BINTIM: obsolete'
|
||||
end
|
86
tecs/didi
86
tecs/didi
@ -1,86 +0,0 @@
|
||||
#!/bin/tcsh
|
||||
|
||||
set what="$1"
|
||||
set where="$2"
|
||||
|
||||
set destlist=( type@osf1 \
|
||||
alpha=/afs/psi.ch/project/sinq/tru64/stow/tecs/bin/ \
|
||||
type@linux \
|
||||
slinux=/afs/psi.ch/project/sinq/sl-linux/stow/tecs/bin/ \
|
||||
amor@amor:tecs/ focus@focus:tecs/ trics@trics:tecs/ \
|
||||
tasp@tasp:tecs/ dmc@dmc:tecs/ hrpt@hrpt:tecs/ \
|
||||
morpheus@morpheus:tecs/ sans@sans:tecs/ sans2@sans2:tecs/ \
|
||||
l_samenv@lnsl15:tecs/ \
|
||||
type@darwin \
|
||||
macosx=/afs/psi.ch/project/sinq/mac_os/stow/tecs/bin/ \
|
||||
prep1=admin@ldmprep1:bin/ prep2=admin@ldmprep2:bin/ \
|
||||
)
|
||||
|
||||
set dests=""
|
||||
set destl=""
|
||||
foreach dest ($destlist)
|
||||
set ext="${dest:s/=/ /}"
|
||||
set ext=($ext)
|
||||
if ("$ext" != "$dest") then
|
||||
set dest="$ext[2]"
|
||||
set d="$ext[1]"
|
||||
else
|
||||
set d=""
|
||||
endif
|
||||
set ext=${dest:s/@/ /}
|
||||
set ext=($ext)
|
||||
if ("$ext[1]" == type) then
|
||||
set type=$ext[2]
|
||||
else
|
||||
if ("$d" == "") set d=$ext[1]
|
||||
if ($?type) then
|
||||
set t_$d=$type
|
||||
else
|
||||
echo "type undefined"
|
||||
exit
|
||||
endif
|
||||
set d_$d=$dest
|
||||
set dests=($dests $d)
|
||||
endif
|
||||
end
|
||||
|
||||
set items=(TecsServer TecsClient six)
|
||||
|
||||
echo ""
|
||||
echo " all $items"
|
||||
echo -n "distribute what: "
|
||||
if ("$what" == "") then
|
||||
set what=$<
|
||||
endif
|
||||
if ($what == all) then
|
||||
set what=($items)
|
||||
endif
|
||||
|
||||
echo ""
|
||||
echo " all $dests"
|
||||
echo "distribute where: "
|
||||
if ("$where" == "") then
|
||||
set where=$<
|
||||
endif
|
||||
if ($where == all) then
|
||||
set where=($dests)
|
||||
endif
|
||||
|
||||
set this=${0:h}
|
||||
if ($this == $0) then
|
||||
set this=./
|
||||
endif
|
||||
cd $this
|
||||
|
||||
#set obj=../../obj/$SICS_VERSION/psi/tecs
|
||||
foreach dest ($where)
|
||||
alias get 'set d=$'"d_$dest;"'set t=$'"t_$dest"
|
||||
get
|
||||
foreach item ($what)
|
||||
if ("$t" == "$OSTYPE") then
|
||||
echo $item to $d
|
||||
rsync -e ssh -vt $item $d
|
||||
endif
|
||||
end
|
||||
end
|
||||
|
@ -1,4 +0,0 @@
|
||||
#include "fortify.c"
|
||||
#ifndef FORTIFY
|
||||
void null(void){}
|
||||
#endif
|
10
tecs/inilist
10
tecs/inilist
@ -1,10 +0,0 @@
|
||||
amor: host=localhost:4000/10
|
||||
dmc: host=psts225:3007
|
||||
hrpt: host=psts229:3007
|
||||
focus: host=psts215:3001
|
||||
sans2: host=localhost:4000/6
|
||||
sans: host=localhost:4000/11
|
||||
tasp: host=psts231:3007
|
||||
morpheus: host=localhost:4000/8
|
||||
rita2: host=psts216:3007
|
||||
trics: host=psts228:3007
|
@ -1,5 +0,0 @@
|
||||
sensA.type=m sensA.curve=mz020124
|
||||
sensB.type=s sensB.curve=r10409
|
||||
dev="APD closed cycle refrigerator (TriCS)"
|
||||
tlimit=310 resist=40 maxPower=16
|
||||
prop=15 int=10 deriv=0
|
@ -1,2 +0,0 @@
|
||||
sensC.type=x
|
||||
dev="APD auxilliary sensor"
|
@ -1,109 +0,0 @@
|
||||
sens=c020415
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
|
||||
form=loglog
|
||||
curv ! curve (sensor,temp/K) follows, must be ordered, but can be increasing or decreasing
|
||||
87 278.58
|
||||
87.7 273.38
|
||||
88.4 267.75
|
||||
89.1 261.75
|
||||
89.9 254.55
|
||||
90.7 247.11
|
||||
91.6 238.55
|
||||
92.6 228.96
|
||||
93.7 218.46
|
||||
95 206.33
|
||||
96.6 192.03
|
||||
98.9 173.02
|
||||
104 138.05
|
||||
106.2 125.83
|
||||
108.4 115.1
|
||||
110.6 105.67
|
||||
112.8 97.379
|
||||
115 90.068
|
||||
117.2 83.601
|
||||
119.4 77.863
|
||||
121.7 72.535
|
||||
124.1 67.603
|
||||
126.6 63.049
|
||||
129.1 59.004
|
||||
131.7 55.261
|
||||
134.4 51.8
|
||||
137.3 48.498
|
||||
140.3 45.466
|
||||
143.4 42.683
|
||||
147 39.828
|
||||
150 37.712
|
||||
154 35.206
|
||||
158 33.003
|
||||
162 31.056
|
||||
166 29.324
|
||||
170 27.775
|
||||
175 26.057
|
||||
180 24.543
|
||||
185 23.201
|
||||
191 21.781
|
||||
197 20.532
|
||||
203 19.429
|
||||
210 18.293
|
||||
217 17.293
|
||||
225 16.29
|
||||
233 15.409
|
||||
242 14.539
|
||||
251 13.775
|
||||
261 13.028
|
||||
272 12.31
|
||||
284 11.628
|
||||
297 10.985
|
||||
311 10.384
|
||||
326 9.8244
|
||||
342 9.3062
|
||||
360 8.8014
|
||||
379 8.3407
|
||||
400 7.9007
|
||||
423 7.4854
|
||||
448 7.0969
|
||||
475 6.736
|
||||
505 6.3915
|
||||
540 6.0487
|
||||
580 5.7176
|
||||
620 5.4367
|
||||
670 5.1397
|
||||
720 4.8893
|
||||
780 4.6356
|
||||
840 4.4212
|
||||
910 4.2092
|
||||
990 4.0054
|
||||
1080 3.8132
|
||||
1180 3.6344
|
||||
1300 3.456
|
||||
1440 3.2845
|
||||
1600 3.1239
|
||||
1780 2.9757
|
||||
1990 2.8344
|
||||
2240 2.6977
|
||||
2530 2.5697
|
||||
2900 2.4393
|
||||
3300 2.3271
|
||||
3800 2.2154
|
||||
4400 2.1099
|
||||
5100 2.0131
|
||||
6000 1.916
|
||||
7100 1.8247
|
||||
8400 1.7416
|
||||
10000 1.663
|
||||
12000 1.5879
|
||||
14600 1.5142
|
||||
18000 1.4427
|
||||
22000 1.3801
|
||||
27000 1.3216
|
||||
34000 1.2614
|
||||
43000 1.2054
|
||||
55000 1.1518
|
||||
71000 1.1009
|
||||
93000 1.0519
|
||||
124000 1.0041
|
||||
300000 0.75
|
||||
|
||||
|
@ -1,34 +0,0 @@
|
||||
sens=c030307
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! 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
|
||||
100000 0.42
|
||||
15000 1.05
|
||||
8000 1.42
|
||||
4000 1.99
|
||||
2000 2.77
|
||||
1600 3.1
|
||||
1400 3.32
|
||||
1200 3.61
|
||||
1000 4.01
|
||||
900 4.28
|
||||
800 4.61
|
||||
700 5.05
|
||||
600 5.64
|
||||
500 6.5
|
||||
400 7.96
|
||||
300 10.81
|
||||
265 12.68
|
||||
228 15.77
|
||||
206 18.96
|
||||
191 21.67
|
||||
180 24.48
|
||||
171 27.3
|
||||
154 35.2
|
||||
142 45
|
||||
134 60
|
||||
130 70
|
||||
90 310
|
||||
|
||||
|
@ -1,107 +0,0 @@
|
||||
sens=c030311
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! 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
|
||||
94 331.07
|
||||
95.6 301.46
|
||||
98.2 258.68
|
||||
100.3 229.17
|
||||
102.1 207.24
|
||||
103.8 189.07
|
||||
105.4 173.97
|
||||
107 160.58
|
||||
108.6 148.68
|
||||
110.2 138.09
|
||||
111.9 128.07
|
||||
113.6 119.17
|
||||
115.3 111.22
|
||||
117.1 103.71
|
||||
118.9 97.013
|
||||
120.8 90.694
|
||||
122.8 84.763
|
||||
124.8 79.468
|
||||
126.9 74.498
|
||||
129.1 69.849
|
||||
131.4 65.511
|
||||
133.8 61.473
|
||||
136.3 57.722
|
||||
138.9 54.241
|
||||
141.7 50.902
|
||||
144.6 47.825
|
||||
147.6 44.991
|
||||
151 42.141
|
||||
154 39.899
|
||||
158 37.247
|
||||
162 34.917
|
||||
166 32.859
|
||||
170 31.029
|
||||
174 29.394
|
||||
179 27.58
|
||||
184 25.982
|
||||
189 24.565
|
||||
195 23.065
|
||||
201 21.747
|
||||
207 20.581
|
||||
214 19.38
|
||||
221 18.324
|
||||
229 17.263
|
||||
237 16.331
|
||||
246 15.411
|
||||
255 14.602
|
||||
265 13.812
|
||||
276 13.051
|
||||
288 12.328
|
||||
301 11.646
|
||||
315 11.009
|
||||
330 10.416
|
||||
346 9.8657
|
||||
363 9.3576
|
||||
382 8.8648
|
||||
403 8.3941
|
||||
426 7.9501
|
||||
451 7.5349
|
||||
478 7.1492
|
||||
508 6.7812
|
||||
540 6.4443
|
||||
580 6.0862
|
||||
620 5.7828
|
||||
660 5.5221
|
||||
710 5.2433
|
||||
770 4.9621
|
||||
830 4.7255
|
||||
900 4.4923
|
||||
980 4.2688
|
||||
1070 4.0588
|
||||
1170 3.8641
|
||||
1280 3.685
|
||||
1410 3.5088
|
||||
1560 3.3408
|
||||
1730 3.184
|
||||
1930 3.0326
|
||||
2160 2.8904
|
||||
2430 2.7546
|
||||
2700 2.6432
|
||||
3100 2.5095
|
||||
3500 2.4024
|
||||
4000 2.2943
|
||||
4600 2.1908
|
||||
5300 2.0948
|
||||
6200 1.9976
|
||||
7300 1.9054
|
||||
8600 1.8209
|
||||
10300 1.736
|
||||
12400 1.6564
|
||||
15000 1.582
|
||||
18000 1.5166
|
||||
22000 1.4505
|
||||
27000 1.3888
|
||||
34000 1.3252
|
||||
43000 1.2661
|
||||
55000 1.2096
|
||||
71000 1.156
|
||||
93000 1.1043
|
||||
123000 1.0554
|
||||
170000 1.0039
|
||||
|
||||
|
@ -1,74 +0,0 @@
|
||||
sens=c1
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
|
||||
!excit=100uA ! (off,30nA,100nA,300nA,1uA,3uA,10uA,30uA,100uA,300uA,1mA,10mV,1mV) (if omitted: default from sensor type)
|
||||
range=333333 ! 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
|
||||
999999 1.00
|
||||
272100 1.03
|
||||
172977 1.12
|
||||
112093 1.21
|
||||
74662 1.31
|
||||
50854.6 1.42
|
||||
35305.6 1.53
|
||||
25003.3 1.66
|
||||
18090 1.80
|
||||
13356.3 1.94
|
||||
10053.4 2.10
|
||||
7697.32 2.28
|
||||
5986.53 2.47
|
||||
4724.73 2.67
|
||||
3784.47 2.89
|
||||
3069.36 3.13
|
||||
2518.99 3.39
|
||||
2091.39 3.67
|
||||
1755.38 3.97
|
||||
1487.08 4.30
|
||||
1273.44 4.66
|
||||
1101.81 5.04
|
||||
960.139 5.46
|
||||
844.434 5.91
|
||||
747.186 6.40
|
||||
665.698 6.93
|
||||
596.693 7.50
|
||||
539.771 8.12
|
||||
490.76 8.79
|
||||
448.006 9.52
|
||||
412.762 10.30
|
||||
380.541 11.15
|
||||
352.62 12.08
|
||||
328.321 13.07
|
||||
306.25 14.16
|
||||
288.286 15.32
|
||||
271.424 16.59
|
||||
256.195 17.96
|
||||
242.787 19.45
|
||||
230.54 21.05
|
||||
219.532 22.79
|
||||
209.575 24.68
|
||||
200.383 26.72
|
||||
192.065 28.93
|
||||
184.48 31.32
|
||||
177.432 33.91
|
||||
171.256 36.71
|
||||
165.012 39.74
|
||||
159.59 43.03
|
||||
154.324 46.58
|
||||
149.365 50.43
|
||||
144.78 54.60
|
||||
139.937 60.00
|
||||
133.722 68.50
|
||||
128.791 77.30
|
||||
123.897 88.60
|
||||
119.039 103.50
|
||||
114.217 124.20
|
||||
109.43 154.70
|
||||
107.05 176.00
|
||||
104.678 203.80
|
||||
102.316 240.90
|
||||
100.237 287.70
|
||||
99.6953 300.00
|
||||
90 310
|
||||
|
||||
|
@ -1,87 +0,0 @@
|
||||
sens=c12900
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
type=C ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
|
||||
range=800000
|
||||
curv ! curve (sensor,temp/K) follows, must be ordered, but can be increasing or decreasing
|
||||
1012550 1.20497
|
||||
546701 1.30399
|
||||
312268 1.40162
|
||||
114040 1.60623
|
||||
51444 1.80617
|
||||
26719.2 2.00576
|
||||
15435.5 2.20444
|
||||
9602.53 2.40494
|
||||
6397.94 2.60259
|
||||
4489.76 2.79906
|
||||
3219.32 3.00654
|
||||
2461.2 3.19842
|
||||
1897.64 3.40336
|
||||
1502.24 3.6079
|
||||
1230.54 3.80022
|
||||
1012.12 4.00621
|
||||
841.192 4.22067
|
||||
637.469 4.58241
|
||||
489.918 4.97865
|
||||
367.931 5.4844
|
||||
264.075 6.1965
|
||||
195.15 7.00194
|
||||
144.285 8.00824
|
||||
113.298 9.01723
|
||||
92.4347 10.0564
|
||||
78.2614 11.0715
|
||||
67.9423 12.0828
|
||||
60.1888 13.0842
|
||||
54.1233 14.0857
|
||||
49.3103 15.0747
|
||||
45.3379 16.0757
|
||||
42.0996 17.0531
|
||||
39.3391 18.0384
|
||||
36.9796 19.0217
|
||||
34.9151 20.0177
|
||||
32.9926 21.0862
|
||||
30.5452 22.6981
|
||||
28.6209 24.2233
|
||||
26.9266 25.8078
|
||||
25.4992 27.3598
|
||||
24.2509 28.9385
|
||||
23.0398 30.7055
|
||||
21.8009 32.8076
|
||||
20.3302 35.8012
|
||||
19.1087 38.8327
|
||||
18.0816 41.8826
|
||||
17.2216 44.8952
|
||||
16.4751 47.9305
|
||||
16.0348 49.938
|
||||
15.0984 54.8967
|
||||
14.3247 59.8577
|
||||
13.6715 64.8573
|
||||
13.1178 69.8244
|
||||
12.636 74.8078
|
||||
12.2143 79.7839
|
||||
11.8399 84.8244
|
||||
11.5105 89.8012
|
||||
11.2102 94.8438
|
||||
10.942 99.8132
|
||||
10.4716 109.826
|
||||
10.0743 119.846
|
||||
9.73462 129.833
|
||||
9.43818 139.857
|
||||
9.17665 149.828
|
||||
8.94393 159.859
|
||||
8.73457 169.862
|
||||
8.54545 179.864
|
||||
8.37336 189.826
|
||||
8.21397 199.879
|
||||
8.06779 209.858
|
||||
7.93285 219.86
|
||||
7.80698 229.843
|
||||
7.68873 239.855
|
||||
7.57774 249.851
|
||||
7.47313 259.852
|
||||
7.37448 269.854
|
||||
7.28072 279.868
|
||||
7.19198 289.881
|
||||
7.10731 299.874
|
||||
7.02683 309.874
|
||||
|
||||
|
@ -1,93 +0,0 @@
|
||||
sens=c17844
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! 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)
|
||||
range=1500000 ! 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
|
||||
1600000.000 1.1
|
||||
970035.6003 1.20121
|
||||
505060.7083 1.30296
|
||||
338710.9339 1.3989
|
||||
120001.056 1.60059
|
||||
51903.02439 1.80271
|
||||
14804.70375 2.20221
|
||||
9145.783794 2.39764
|
||||
5892.856091 2.60368
|
||||
4098.343859 2.798
|
||||
2949.617582 2.99639
|
||||
2170.79842 3.20492
|
||||
1650.889664 3.41307
|
||||
1316.149683 3.60371
|
||||
1062.659731 3.80091
|
||||
877.1929825 3.99488
|
||||
724.6376812 4.20335
|
||||
465.1162791 4.77734
|
||||
358.4229391 5.17319
|
||||
274.7252747 5.65299
|
||||
201.2072435 6.31596
|
||||
150.6024096 7.06791
|
||||
111.1111111 8.04676
|
||||
85.17887564 9.11986
|
||||
70.92198582 10.0142
|
||||
59.9880024 10.982
|
||||
51.25576627 12.0445
|
||||
45.74565416 12.9337
|
||||
41.05090312 13.8897
|
||||
37.09198813 14.9045
|
||||
33.99048266 15.8801
|
||||
31.56565657 16.7995
|
||||
29.43773918 17.7499
|
||||
27.5862069 18.7256
|
||||
25.96728123 19.7153
|
||||
24.27184466 20.9274
|
||||
22.37637055 22.5615
|
||||
20.90301003 24.0999
|
||||
19.5427008 25.7898
|
||||
18.43657817 27.4256
|
||||
17.49475157 29.0442
|
||||
16.50709805 31.0254
|
||||
15.64945227 33.0448
|
||||
14.53911021 36.2007
|
||||
13.70801919 39.0782
|
||||
12.97690112 42.0868
|
||||
12.39157373 44.9234
|
||||
11.84553423 47.9836
|
||||
11.52339249 50.031
|
||||
10.84245907 55.0141
|
||||
10.28806584 59.9738
|
||||
9.811616954 65.062
|
||||
9.409993413 70.0969
|
||||
9.071117562 75.0211
|
||||
8.765778401 80.058
|
||||
8.494733265 85.1505
|
||||
8.25968448 90.1304
|
||||
8.048289738 95.0917
|
||||
7.840677435 100.499
|
||||
7.505817008 110.505
|
||||
7.22230247 120.57
|
||||
6.97934115 130.684
|
||||
6.770022341 140.651
|
||||
6.582411796 150.794
|
||||
6.416014372 160.824
|
||||
6.26605677 170.879
|
||||
6.130456106 181.012
|
||||
6.007810153 191.033
|
||||
5.895183635 201.141
|
||||
5.788376939 211.227
|
||||
5.691519636 221.232
|
||||
5.602554765 231.279
|
||||
5.518154729 241.451
|
||||
5.437442227 251.53
|
||||
5.361642807 261.574
|
||||
5.291285253 272.626
|
||||
5.2227503 281.619
|
||||
5.158095631 291.746
|
||||
5.096060745 301.885
|
||||
5.03626108 311.966
|
||||
5.007260528 317.011
|
||||
4.979831682 322.01
|
||||
4.947555907 328.015
|
||||
4.927322 331.981
|
||||
|
||||
|
@ -1,83 +0,0 @@
|
||||
sens=c2
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
|
||||
!excit=100uA ! (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)
|
||||
curv ! curve (sensor,temp/K) follows, must be ordered, but can be increasing or decreasing
|
||||
179323 0.607
|
||||
112538 0.749
|
||||
75275 0.891
|
||||
52838 1.033
|
||||
38592 1.176
|
||||
29156 1.318
|
||||
22674 1.460
|
||||
18077 1.593
|
||||
14725 1.709
|
||||
10302 1.930
|
||||
8000 2.112
|
||||
7000 2.211
|
||||
6500 2.272
|
||||
6000 2.332
|
||||
5500 2.404
|
||||
5000 2.500
|
||||
4500 2.595
|
||||
4000 2.713
|
||||
3500 2.865
|
||||
3000 3.050
|
||||
2800 3.142
|
||||
2600 3.234
|
||||
2400 3.349
|
||||
2200 3.485
|
||||
2000 3.644
|
||||
1800 3.825
|
||||
1600 4.051
|
||||
1500 4.186
|
||||
1400 4.342
|
||||
1300 4.510
|
||||
1200 4.711
|
||||
1100 4.945
|
||||
1000 5.233
|
||||
900 5.577
|
||||
800 6.008
|
||||
750 6.273
|
||||
700 6.582
|
||||
650 6.934
|
||||
600 7.363
|
||||
550 7.879
|
||||
500 8.516
|
||||
450 9.327
|
||||
400 10.412
|
||||
380 10.949
|
||||
360 11.541
|
||||
340 12.309
|
||||
320 13.188
|
||||
300 14.177
|
||||
280 15.498
|
||||
260 17.041
|
||||
240 19.140
|
||||
210 23.577
|
||||
200 25.693
|
||||
190 28.258
|
||||
180 31.496
|
||||
170 35.618
|
||||
165 38.056
|
||||
160 40.920
|
||||
155 44.302
|
||||
150 48.177
|
||||
145 52.835
|
||||
140 58.344
|
||||
135 65.188
|
||||
130 73.754
|
||||
126 82.556
|
||||
122 93.825
|
||||
118 108.675
|
||||
114 129.321
|
||||
110 159.772
|
||||
108 181.052
|
||||
106 208.836
|
||||
104 245.923
|
||||
102 299.013
|
||||
101.8 300.013
|
||||
100 330.010
|
||||
|
@ -1,62 +0,0 @@
|
||||
sens=c9r1al
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
38580.4733 1.2
|
||||
25527.04753 1.32
|
||||
17468.3041 1.45
|
||||
12066.93001 1.6
|
||||
8650.280274 1.76
|
||||
6306.651073 1.94
|
||||
4694.252185 2.14
|
||||
3573.626135 2.36
|
||||
2783.444132 2.6
|
||||
2216.839621 2.86
|
||||
1791.14137 3.15
|
||||
1470.704612 3.47
|
||||
1227.87547 3.82
|
||||
1033.9 4.22
|
||||
880.7788603 4.67
|
||||
762.3400194 5.16
|
||||
668.2320962 5.7
|
||||
592.0511811 6.3
|
||||
530.3886753 6.96
|
||||
479.7006886 7.69
|
||||
437.5649046 8.5
|
||||
402.2469771 9.4
|
||||
372.7148658 10.39
|
||||
347.5924137 11.49
|
||||
326.2948196 12.7
|
||||
307.9980846 14.04
|
||||
292.2339082 15.52
|
||||
278.5371412 17.16
|
||||
266.6268462 18.97
|
||||
256.2075009 20.97
|
||||
247.0526452 23.18
|
||||
238.9529249 25.63
|
||||
231.8026482 28.33
|
||||
225.437156 31.32
|
||||
219.7716127 34.62
|
||||
214.7027482 38.27
|
||||
210.1529453 42.31
|
||||
206.069282 46.77
|
||||
202.3900793 51.7
|
||||
199.0677301 57.15
|
||||
196.059213 63.18
|
||||
193.330802 69.85
|
||||
190.8 77.4
|
||||
188.5955401 85.3
|
||||
186.5433486 94
|
||||
184.635154 103.6
|
||||
182.8665863 114.2
|
||||
181.2481553 125.8
|
||||
179.7615145 138.6
|
||||
178.4065199 152.7
|
||||
177.1754481 168.3
|
||||
176.0711025 185.5
|
||||
175.0943243 204.4
|
||||
174.2406583 225.2
|
||||
173.5048158 248.2
|
||||
172.9 273
|
||||
172.3429819 300.8
|
@ -1,62 +0,0 @@
|
||||
sens=c9r2ol
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
38789.32947 1.2
|
||||
25664.68349 1.32
|
||||
17561.97111 1.45
|
||||
12131.12683 1.6
|
||||
8695.835664 1.76
|
||||
6339.419493 1.94
|
||||
4718.223268 2.14
|
||||
3591.48302 2.36
|
||||
2796.989741 2.6
|
||||
2227.293804 2.86
|
||||
1799.272921 3.15
|
||||
1477.087842 3.47
|
||||
1232.933811 3.82
|
||||
1037.9 4.22
|
||||
883.9434229 4.67
|
||||
764.8583732 5.16
|
||||
670.236992 5.7
|
||||
593.6404296 6.3
|
||||
531.6414898 6.96
|
||||
480.6769466 7.69
|
||||
438.3112675 8.5
|
||||
402.8006434 9.4
|
||||
373.1074033 10.39
|
||||
347.8478818 11.49
|
||||
326.4340868 12.7
|
||||
308.0375238 14.04
|
||||
292.1873372 15.52
|
||||
278.4158399 17.16
|
||||
266.4405616 18.97
|
||||
255.9643678 20.97
|
||||
246.7595627 23.18
|
||||
238.6156499 25.63
|
||||
231.4263609 28.33
|
||||
225.0261383 31.32
|
||||
219.3296834 34.62
|
||||
214.2331629 38.27
|
||||
209.658536 42.31
|
||||
205.5525921 46.77
|
||||
201.8533154 51.7
|
||||
198.5128393 57.15
|
||||
195.4879076 63.18
|
||||
192.7446102 69.85
|
||||
190.2 77.4
|
||||
187.9625977 85.3
|
||||
185.8374309 94
|
||||
183.8172669 103.6
|
||||
181.8985625 114.2
|
||||
180.0943165 125.8
|
||||
178.3856344 138.6
|
||||
176.773299 152.7
|
||||
175.2487852 168.3
|
||||
173.8160903 185.5
|
||||
172.4774782 204.4
|
||||
171.22817 225.2
|
||||
170.0608949 248.2
|
||||
169 273
|
||||
167.9638906 300.8
|
@ -1,62 +0,0 @@
|
||||
sens=c9r3tc
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
33583.11255 1.2
|
||||
22221.9409 1.32
|
||||
15207.93789 1.45
|
||||
10506.80125 1.6
|
||||
7533.088074 1.76
|
||||
5493.288397 1.94
|
||||
4089.921887 2.14
|
||||
3114.574484 2.36
|
||||
2426.83216 2.6
|
||||
1933.682604 2.86
|
||||
1563.172136 3.15
|
||||
1284.276995 3.47
|
||||
1072.928372 3.82
|
||||
904.1 4.22
|
||||
770.8295786 4.67
|
||||
667.7452215 5.16
|
||||
585.837507 5.7
|
||||
519.5327324 6.3
|
||||
465.8641916 6.96
|
||||
421.7474265 7.69
|
||||
385.0741513 8.5
|
||||
354.3348616 9.4
|
||||
328.6313113 10.39
|
||||
306.7657492 11.49
|
||||
288.2291883 12.7
|
||||
272.3044532 14.04
|
||||
258.5839543 15.52
|
||||
246.6628445 17.16
|
||||
236.2966074 18.97
|
||||
227.2280324 20.97
|
||||
219.2600178 23.18
|
||||
212.2103503 25.63
|
||||
205.9870398 28.33
|
||||
200.4467739 31.32
|
||||
195.5157151 34.62
|
||||
191.1039813 38.27
|
||||
187.1440176 42.31
|
||||
183.5897629 46.77
|
||||
180.3875343 51.7
|
||||
177.4958965 57.15
|
||||
174.8774054 63.18
|
||||
172.5027073 69.85
|
||||
170.3 77.4
|
||||
168.3554821 85.3
|
||||
166.4930511 94
|
||||
164.7069389 103.6
|
||||
162.9944953 114.2
|
||||
161.3679759 125.8
|
||||
159.8109808 138.6
|
||||
158.3246563 152.7
|
||||
156.9014886 168.3
|
||||
155.5455151 185.5
|
||||
154.2593594 204.4
|
||||
153.0389377 225.2
|
||||
151.8774371 248.2
|
||||
150.8 273
|
||||
149.7365435 300.8
|
@ -1,62 +0,0 @@
|
||||
sens=c9r4bc
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
34741.52828 1.2
|
||||
22985.54894 1.32
|
||||
15727.80503 1.45
|
||||
10863.30101 1.6
|
||||
7786.249475 1.76
|
||||
5675.565508 1.94
|
||||
4223.431152 2.14
|
||||
3214.189828 2.36
|
||||
2502.548036 2.6
|
||||
1992.261231 2.86
|
||||
1608.875297 3.15
|
||||
1320.288379 3.47
|
||||
1101.595261 3.82
|
||||
926.9 4.22
|
||||
788.9983497 4.67
|
||||
682.331748 5.16
|
||||
597.5776902 5.7
|
||||
528.968784 6.3
|
||||
473.4352285 6.96
|
||||
427.7853788 7.69
|
||||
389.8376848 8.5
|
||||
358.0301859 9.4
|
||||
331.4334214 10.39
|
||||
308.8080177 11.49
|
||||
289.6272999 12.7
|
||||
273.1491705 14.04
|
||||
258.9518758 15.52
|
||||
246.6165002 17.16
|
||||
235.89003 18.97
|
||||
226.5063165 20.97
|
||||
218.2614085 23.18
|
||||
210.9667606 25.63
|
||||
204.5271863 28.33
|
||||
198.7943928 31.32
|
||||
193.6919766 34.62
|
||||
189.1269324 38.27
|
||||
185.0293576 42.31
|
||||
181.3515904 46.77
|
||||
178.0380823 51.7
|
||||
175.0459584 57.15
|
||||
172.3364731 63.18
|
||||
169.8792527 69.85
|
||||
167.6 77.4
|
||||
165.5852656 85.3
|
||||
163.6502528 94
|
||||
161.7890578 103.6
|
||||
159.9989837 114.2
|
||||
158.2929731 125.8
|
||||
156.6539552 138.6
|
||||
155.083202 152.7
|
||||
153.5728121 168.3
|
||||
152.1271003 185.5
|
||||
150.748961 204.4
|
||||
149.4341298 225.2
|
||||
148.1753057 248.2
|
||||
147 273
|
||||
145.836448 300.8
|
@ -1,24 +0,0 @@
|
||||
sens=c_1
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50049 1
|
||||
6549 2
|
||||
2249 3
|
||||
1149 4.2
|
||||
674 6
|
||||
399 10
|
||||
299 15
|
||||
259 20
|
||||
229 27
|
||||
209 35
|
||||
189 50
|
||||
173 77
|
||||
165 100
|
||||
156 150
|
||||
152 200
|
||||
147 300
|
||||
139 500
|
||||
|
||||
|
@ -1,24 +0,0 @@
|
||||
sens=c_2
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50053 1
|
||||
6553 2
|
||||
2253 3
|
||||
1153 4.2
|
||||
678 6
|
||||
403 10
|
||||
303 15
|
||||
263 20
|
||||
233 27
|
||||
213 35
|
||||
193 50
|
||||
177 77
|
||||
169 100
|
||||
160 150
|
||||
156 200
|
||||
151 300
|
||||
143 500
|
||||
|
||||
|
@ -1,24 +0,0 @@
|
||||
sens=c_3
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50076 1
|
||||
6576 2
|
||||
2276 3
|
||||
1176 4.2
|
||||
701 6
|
||||
426 10
|
||||
326 15
|
||||
286 20
|
||||
256 27
|
||||
236 35
|
||||
216 50
|
||||
200 77
|
||||
192 100
|
||||
183 150
|
||||
179 200
|
||||
174 300
|
||||
166 500
|
||||
|
||||
|
@ -1,23 +0,0 @@
|
||||
sens=c_4
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50077 1
|
||||
6577 2
|
||||
2277 3
|
||||
1177 4.2
|
||||
702 6
|
||||
427 10
|
||||
327 15
|
||||
287 20
|
||||
257 27
|
||||
237 35
|
||||
217 50
|
||||
201 77
|
||||
193 100
|
||||
184 150
|
||||
180 200
|
||||
175 300
|
||||
167 500
|
||||
|
@ -1,70 +0,0 @@
|
||||
sens=c_ab
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
217890 1.05
|
||||
166770 1.1
|
||||
104660 1.2
|
||||
70006 1.3
|
||||
49139 1.4
|
||||
35891 1.5
|
||||
27115 1.6
|
||||
21087 1.7
|
||||
16812 1.8
|
||||
13694 1.9
|
||||
9580.4 2.1
|
||||
7091 2.3
|
||||
5479.2 2.5
|
||||
4380.9 2.7
|
||||
3600 2.9
|
||||
3025.2 3.1
|
||||
2589.8 3.3
|
||||
2110.6 3.6
|
||||
1768.5 3.9
|
||||
1515 4.2
|
||||
1321.7 4.5
|
||||
1127.4 4.9
|
||||
982.45 5.3
|
||||
870.93 5.7
|
||||
763.89 6.2
|
||||
681.8 6.7
|
||||
617.16 7.2
|
||||
555.91 7.8
|
||||
507.43 8.4
|
||||
462.39 9.1
|
||||
426.33 9.799
|
||||
393.06 10.6
|
||||
366.01 11.4
|
||||
341.1 12.3
|
||||
318.49 13.3
|
||||
298.16 14.4
|
||||
280.01 15.6
|
||||
264.97 16.8
|
||||
251.35 18.1
|
||||
239.03 19.5
|
||||
227.24 21.1
|
||||
216.74 22.8
|
||||
207.36 24.6
|
||||
198.54 26.6
|
||||
190.68 28.7
|
||||
183.35 31.01
|
||||
176.56 33.5
|
||||
170.28 36.2
|
||||
164.49 39.1
|
||||
159.15 42.21
|
||||
154.09 45.61
|
||||
149.45 49.2
|
||||
145.07 53.1
|
||||
139.94 60
|
||||
133.72 68.5
|
||||
128.79 77.3
|
||||
123.9 88.6
|
||||
119.04 103.5
|
||||
114.22 124.2
|
||||
109.43 154.7
|
||||
107.05 176
|
||||
104.68 203.8
|
||||
102.32 240.9
|
||||
99.96 294
|
||||
99.0 300
|
@ -1,185 +0,0 @@
|
||||
sens=c_ill
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
90 310.451
|
||||
100 177.957
|
||||
110 115.629
|
||||
120 82.078
|
||||
130 62.133
|
||||
140 49.348
|
||||
150 40.656
|
||||
160 34.463
|
||||
170 29.88
|
||||
180 26.38
|
||||
190 23.636
|
||||
200 21.437
|
||||
220 18.15
|
||||
240 15.823
|
||||
260 14.097
|
||||
280 12.767
|
||||
300 11.712
|
||||
320 10.855
|
||||
340 10.144
|
||||
360 9.545
|
||||
380 9.033
|
||||
400 8.589
|
||||
420 8.202
|
||||
440 7.859
|
||||
460 7.555
|
||||
480 7.282
|
||||
500 7.036
|
||||
520 6.813
|
||||
540 6.61
|
||||
560 6.424
|
||||
580 6.253
|
||||
600 6.095
|
||||
620 5.949
|
||||
640 5.813
|
||||
660 5.687
|
||||
680 5.569
|
||||
700 5.458
|
||||
720 5.354
|
||||
740 5.256
|
||||
760 5.164
|
||||
780 5.077
|
||||
800 4.995
|
||||
820 4.916
|
||||
840 4.842
|
||||
860 4.772
|
||||
880 4.705
|
||||
900 4.641
|
||||
920 4.579
|
||||
940 4.521
|
||||
960 4.465
|
||||
980 4.411
|
||||
1000 4.36
|
||||
1050 4.24
|
||||
1100 4.131
|
||||
1150 4.032
|
||||
1200 3.94
|
||||
1250 3.856
|
||||
1300 3.778
|
||||
1350 3.706
|
||||
1400 3.639
|
||||
1450 3.576
|
||||
1500 3.517
|
||||
1550 3.461
|
||||
1600 3.409
|
||||
1650 3.36
|
||||
1700 3.313
|
||||
1750 3.269
|
||||
1800 3.227
|
||||
1850 3.187
|
||||
1900 3.149
|
||||
1950 3.113
|
||||
2000 3.078
|
||||
2100 3.013
|
||||
2200 2.953
|
||||
2300 2.898
|
||||
2400 2.847
|
||||
2500 2.799
|
||||
2600 2.755
|
||||
2700 2.713
|
||||
2800 2.674
|
||||
2900 2.637
|
||||
3000 2.602
|
||||
3100 2.569
|
||||
3200 2.538
|
||||
3300 2.508
|
||||
3400 2.48
|
||||
3500 2.453
|
||||
3600 2.427
|
||||
3700 2.403
|
||||
3800 2.379
|
||||
3900 2.356
|
||||
4000 2.335
|
||||
4100 2.314
|
||||
4200 2.294
|
||||
4300 2.275
|
||||
4400 2.256
|
||||
4500 2.239
|
||||
4600 2.221
|
||||
4700 2.205
|
||||
4800 2.189
|
||||
4900 2.173
|
||||
5000 2.158
|
||||
5200 2.129
|
||||
5400 2.103
|
||||
5600 2.077
|
||||
5800 2.053
|
||||
6000 2.03
|
||||
6200 2.009
|
||||
6400 1.988
|
||||
6600 1.969
|
||||
6800 1.95
|
||||
7000 1.933
|
||||
7200 1.916
|
||||
7400 1.9
|
||||
7600 1.884
|
||||
7800 1.869
|
||||
8000 1.855
|
||||
8200 1.841
|
||||
8400 1.828
|
||||
8600 1.815
|
||||
8800 1.803
|
||||
9000 1.791
|
||||
9200 1.78
|
||||
9400 1.769
|
||||
9600 1.758
|
||||
9800 1.747
|
||||
10000 1.737
|
||||
10500 1.714
|
||||
11000 1.692
|
||||
11500 1.671
|
||||
12000 1.652
|
||||
12500 1.634
|
||||
13000 1.616
|
||||
13500 1.6
|
||||
14000 1.585
|
||||
14500 1.57
|
||||
15000 1.557
|
||||
15500 1.543
|
||||
16000 1.531
|
||||
16500 1.519
|
||||
17000 1.507
|
||||
17500 1.496
|
||||
18000 1.485
|
||||
18500 1.475
|
||||
19000 1.465
|
||||
19500 1.455
|
||||
20000 1.446
|
||||
21000 1.428
|
||||
22000 1.412
|
||||
23000 1.396
|
||||
24000 1.381
|
||||
25000 1.367
|
||||
26000 1.354
|
||||
27000 1.341
|
||||
28001 1.329
|
||||
29000 1.318
|
||||
30001 1.307
|
||||
31001 1.296
|
||||
32000 1.286
|
||||
33000 1.277
|
||||
34000 1.268
|
||||
35000 1.259
|
||||
36001 1.251
|
||||
37000 1.243
|
||||
38001 1.236
|
||||
39000 1.229
|
||||
40000 1.222
|
||||
41000 1.216
|
||||
42000 1.21
|
||||
43000 1.204
|
||||
44000 1.199
|
||||
45000 1.194
|
||||
46000 1.19
|
||||
47000 1.186
|
||||
48001 1.182
|
||||
49000 1.178
|
||||
50000 1.175
|
||||
55001 1.164
|
||||
60000 1.161
|
||||
65000 1.16
|
123
tecs/inp/c_t.inp
123
tecs/inp/c_t.inp
@ -1,123 +0,0 @@
|
||||
sens=c_t
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
290277 0.8
|
||||
49174 1.1844
|
||||
45504 1.2021
|
||||
37196 1.2575
|
||||
29580 1.3252
|
||||
23801 1.3965
|
||||
19297 1.4695
|
||||
15840 1.546
|
||||
13083 1.6267
|
||||
12653 1.6416
|
||||
12118 1.6622
|
||||
10903 1.7092
|
||||
10060 1.7512
|
||||
9168.6 1.7978
|
||||
8437.1 1.8424
|
||||
7757.7 1.8895
|
||||
7171.7 1.9382
|
||||
6624.6 1.9864
|
||||
6131.6 2.0355
|
||||
5672.1 2.0887
|
||||
5441.5 2.1172
|
||||
5278.3 2.1399
|
||||
5122 2.1595
|
||||
4906.5 2.1913
|
||||
4551 2.2492
|
||||
4266 2.3013
|
||||
3960.9 2.3632
|
||||
3716.3 2.4197
|
||||
3466 2.4824
|
||||
3258.7 2.541
|
||||
3045.9 2.6078
|
||||
2873.2 2.6686
|
||||
2695.2 2.7384
|
||||
2544.3 2.8036
|
||||
2265.5 2.9445
|
||||
2128.3 3.0242
|
||||
2022.8 3.0924
|
||||
1907.6 3.1744
|
||||
1815.8 3.2462
|
||||
1545.4 3.5039
|
||||
1301.3 3.8249
|
||||
1223.1 3.952
|
||||
1120.2 4.1453
|
||||
1030.7 4.3453
|
||||
949.41 4.5588
|
||||
871.45 4.7969
|
||||
811.95 5.0209
|
||||
755.31 5.2629
|
||||
703.23 5.5225
|
||||
657.85 5.7898
|
||||
616.25 6.0735
|
||||
578.68 6.3716
|
||||
544.67 6.6851
|
||||
507.24 7.0827
|
||||
482.02 7.3788
|
||||
459.77 7.6798
|
||||
438.21 8.0109
|
||||
417.54 8.3813
|
||||
396.98 8.7969
|
||||
377.93 9.251
|
||||
360.75 9.7156
|
||||
345.18 10.198
|
||||
331.02 10.7
|
||||
317.86 11.218
|
||||
305.81 11.761
|
||||
294.64 12.329
|
||||
284.17 12.925
|
||||
274.42 13.543
|
||||
265.18 14.192
|
||||
256.54 14.872
|
||||
248.51 15.58
|
||||
240.96 16.321
|
||||
233.86 17.093
|
||||
227.27 17.891
|
||||
220.98 18.742
|
||||
214.77 19.674
|
||||
208.93 20.652
|
||||
203.42 21.68
|
||||
198.1 22.782
|
||||
193.13 23.969
|
||||
188.32 25.222
|
||||
183.72 26.55
|
||||
175.19 29.445
|
||||
171.2 31.031
|
||||
167.36 32.719
|
||||
163.69 34.522
|
||||
160.15 36.444
|
||||
156.74 38.504
|
||||
153.45 40.722
|
||||
150.29 43.131
|
||||
146.54 46.351
|
||||
144.07 48.729
|
||||
141.74 51.17
|
||||
139.49 53.701
|
||||
137.34 56.349
|
||||
135.24 59.172
|
||||
133.23 62.116
|
||||
131.26 65.235
|
||||
129.38 68.478
|
||||
127.6 71.879
|
||||
125.88 75.426
|
||||
124.22 79.175
|
||||
122.61 83.13
|
||||
121.08 87.312
|
||||
119.6 91.725
|
||||
116.82 101.23
|
||||
114.35 111.5
|
||||
112.11 122.66
|
||||
110.07 134.97
|
||||
106.49 165.24
|
||||
105.14 181.66
|
||||
103.99 199.82
|
||||
103.07 219.79
|
||||
102.35 241.71
|
||||
101.84 265.85
|
||||
101.55 292.41
|
||||
101.48 321.47
|
||||
|
@ -1,23 +0,0 @@
|
||||
sens=cab505
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
48000 2.5
|
||||
9506 4.2
|
||||
2800 8
|
||||
1600 12
|
||||
925.9 21.8
|
||||
805.8 26.4
|
||||
737.5 30.1
|
||||
674.3 35
|
||||
625.0 40
|
||||
588.6 45
|
||||
557.4 50
|
||||
533.0 55
|
||||
512.3 60
|
||||
460.8 77
|
||||
419.8 100.2
|
||||
344.8 200
|
||||
339.1 220
|
||||
320 300
|
@ -1,7 +0,0 @@
|
||||
sensA.type=m sensA.curve=x31318
|
||||
sensC.type=k sensC.curve=x31320
|
||||
sensD.type=s sensD.curve=x31319
|
||||
dev="4 K closed cycle refrigerator (FOCUS)"
|
||||
tlimit=700 resist=25 maxPower=100
|
||||
sensA.alarm=310
|
||||
prop=50 int=20 deriv=0
|
@ -1,8 +0,0 @@
|
||||
sensA.type=t sensA.curve=x14231 sensA.alarm=310
|
||||
sensB.type=m sensB.curve=pt100e
|
||||
sensC.type=k sensC.curve=x10409
|
||||
sensD.type=s sensD.curve=x24506
|
||||
|
||||
dev="4 K closed cycle refrigerator (FOCUS) with hi-T stage"
|
||||
tlimit=700 resist=25 maxPower=100
|
||||
prop=50 int=20 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=x22644
|
||||
dev="4 K closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=100
|
||||
prop=50 int=20 deriv=0
|
@ -1,65 +0,0 @@
|
||||
sens=ccs130
|
||||
unit=Ohm ! sensor format (mV,V,Ohm), log formats are choosen automatically
|
||||
!tlim=325 ! setpoint limit (automatic if omitted)
|
||||
type=C ! sensor type (Special,Si,GaAlAs,Pt250,Pt500,Pt2500,RhFe,C,Cernox,RuOx,Ge) (special if omitted)
|
||||
!excit=100uA ! (off,30nA,100nA,300nA,1uA,3uA,10uA,30uA,100uA,300uA,1mA,10mV,1mV) (if omitted: default from sensor type)
|
||||
!range=333333 ! 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
|
||||
16000 1.244393476
|
||||
15200 1.285367202
|
||||
14440 1.328663252
|
||||
13718 1.374439348
|
||||
13032 1.422875796
|
||||
12380 1.474181416
|
||||
11761 1.52850843
|
||||
11172 1.586218689
|
||||
10613 1.647425693
|
||||
10082 1.712465327
|
||||
9577 1.781745861
|
||||
9098 1.855443001
|
||||
8643 1.934058129
|
||||
8210 2.018215323
|
||||
7799 2.108233951
|
||||
7409 2.204664752
|
||||
7038 2.308439192
|
||||
6686 2.420075417
|
||||
6351 2.540838002
|
||||
6033 2.671491983
|
||||
5731 2.813308366
|
||||
5444 2.967822828
|
||||
5171 3.136910729
|
||||
4912 3.322118864
|
||||
4666 3.52596846
|
||||
4432 3.751599155
|
||||
4210 4.001751141
|
||||
3999 4.280838061
|
||||
3799 4.59279255
|
||||
3609 4.943939063
|
||||
3428 5.342442547
|
||||
3256 5.796123843
|
||||
3093 6.313967225
|
||||
2938 6.910359479
|
||||
2791 7.599287093
|
||||
2651 8.403199284
|
||||
2518 9.344690735
|
||||
2392 10.4503784
|
||||
2272 11.76331676
|
||||
2158 13.32775638
|
||||
2050 15.19642266
|
||||
1947 17.45575579
|
||||
1849 20.19676627
|
||||
1756 23.52986632
|
||||
1668 27.5869931
|
||||
1584 32.59016947
|
||||
1504 38.77520717
|
||||
1428 46.43078775
|
||||
1356 55.90478999
|
||||
1288 67.60768096
|
||||
1223 82.26763593
|
||||
1161 100.6430743
|
||||
1102 123.6586838
|
||||
1046 152.4202751
|
||||
993 188.2165653
|
||||
943 232.4978903
|
||||
895 288.1383817
|
||||
850 356.1477994
|
@ -1,23 +0,0 @@
|
||||
sens=cma11
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50007 1
|
||||
6507 2
|
||||
2207 3
|
||||
1107 4.2
|
||||
632 6
|
||||
357 10
|
||||
257 15
|
||||
217 20
|
||||
187 27
|
||||
167 35
|
||||
147 50
|
||||
131 77
|
||||
122 100
|
||||
114 150
|
||||
110 200
|
||||
105 300
|
||||
97 500
|
||||
|
@ -1,62 +0,0 @@
|
||||
sens=cma11r1al
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
53486 1.2
|
||||
35350 1.32
|
||||
24153 1.45
|
||||
16649 1.6
|
||||
11902 1.76
|
||||
8645.8 1.94
|
||||
6405.5 2.14
|
||||
4848.6 2.36
|
||||
3750.7 2.6
|
||||
2963.5 2.86
|
||||
2372.1 3.15
|
||||
1926.9 3.47
|
||||
1589.5 3.82
|
||||
1320 4.22
|
||||
1107.26 4.67
|
||||
942.71 5.16
|
||||
811.96 5.7
|
||||
706.11 6.3
|
||||
620.44 6.96
|
||||
550.02 7.69
|
||||
491.48 8.5
|
||||
442.41 9.4
|
||||
401.38 10.39
|
||||
366.47 11.49
|
||||
336.88 12.7
|
||||
311.46 14.04
|
||||
289.56 15.52
|
||||
270.53 17.16
|
||||
253.98 18.97
|
||||
239.50 20.97
|
||||
226.79 23.18
|
||||
215.53 25.63
|
||||
205.60 28.33
|
||||
196.75 31.32
|
||||
188.88 34.62
|
||||
181.84 38.27
|
||||
175.52 42.31
|
||||
169.84 46.77
|
||||
164.73 51.7
|
||||
160.12 57.15
|
||||
155.94 63.18
|
||||
152.15 69.85
|
||||
148.63 77.4
|
||||
145.58 85.3
|
||||
142.77 94
|
||||
140.17 103.6
|
||||
137.78 114.2
|
||||
135.61 125.8
|
||||
133.63 138.6
|
||||
131.83 152.7
|
||||
130.21 168.3
|
||||
128.75 185.5
|
||||
127.48 204.4
|
||||
126.36 225.2
|
||||
125.40 248.2
|
||||
124.61 273
|
||||
123.89 300.8
|
@ -1,62 +0,0 @@
|
||||
sens=cma11r2ol
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
45084 1.2
|
||||
29807 1.32
|
||||
20375 1.45
|
||||
14053 1.6
|
||||
10054 1.76
|
||||
7311.2 1.94
|
||||
5424.1 2.14
|
||||
4112.5 2.36
|
||||
3187.7 2.6
|
||||
2524.5 2.86
|
||||
2026.3 3.15
|
||||
1651.2 3.47
|
||||
1367.0 3.82
|
||||
1140 4.22
|
||||
960.79 4.67
|
||||
822.17 5.16
|
||||
712.02 5.7
|
||||
622.86 6.3
|
||||
550.69 6.96
|
||||
491.37 7.69
|
||||
442.05 8.5
|
||||
400.72 9.4
|
||||
366.15 10.39
|
||||
336.75 11.49
|
||||
311.82 12.7
|
||||
290.41 14.04
|
||||
271.96 15.52
|
||||
255.93 17.16
|
||||
241.99 18.97
|
||||
229.79 20.97
|
||||
219.08 23.18
|
||||
209.60 25.63
|
||||
201.23 28.33
|
||||
193.78 31.32
|
||||
187.15 34.62
|
||||
181.22 38.27
|
||||
175.89 42.31
|
||||
171.11 46.77
|
||||
166.80 51.7
|
||||
162.92 57.15
|
||||
159.40 63.18
|
||||
156.20 69.85
|
||||
153.24 77.4
|
||||
150.64 85.3
|
||||
148.17 94
|
||||
145.83 103.6
|
||||
143.61 114.2
|
||||
141.53 125.8
|
||||
139.55 138.6
|
||||
137.69 152.7
|
||||
135.92 168.3
|
||||
134.26 185.5
|
||||
132.71 204.4
|
||||
131.25 225.2
|
||||
129.88 248.2
|
||||
128.63 273
|
||||
127.41 300.8
|
@ -1,62 +0,0 @@
|
||||
sens=cma11r3lc
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
43962 1.2
|
||||
29064 1.32
|
||||
19867 1.45
|
||||
13703 1.6
|
||||
9803 1.76
|
||||
7128.6 1.94
|
||||
5288.4 2.14
|
||||
4009.5 2.36
|
||||
3107.7 2.6
|
||||
2461.0 2.86
|
||||
1975.2 3.15
|
||||
1609.5 3.47
|
||||
1332.4 3.82
|
||||
1111 4.22
|
||||
936.25 4.67
|
||||
801.08 5.16
|
||||
693.68 5.7
|
||||
606.73 6.3
|
||||
536.36 6.96
|
||||
478.51 7.69
|
||||
430.42 8.5
|
||||
390.12 9.4
|
||||
356.41 10.39
|
||||
327.74 11.49
|
||||
303.44 12.7
|
||||
282.55 14.04
|
||||
264.56 15.52
|
||||
248.93 17.16
|
||||
235.34 18.97
|
||||
223.45 20.97
|
||||
213.00 23.18
|
||||
203.76 25.63
|
||||
195.59 28.33
|
||||
188.33 31.32
|
||||
181.86 34.62
|
||||
176.08 38.27
|
||||
170.89 42.31
|
||||
166.23 46.77
|
||||
162.03 51.7
|
||||
158.24 57.15
|
||||
154.80 63.18
|
||||
151.69 69.85
|
||||
148.80 77.4
|
||||
146.27 85.3
|
||||
143.87 94
|
||||
141.59 103.6
|
||||
139.44 114.2
|
||||
137.42 125.8
|
||||
135.51 138.6
|
||||
133.71 152.7
|
||||
132.02 168.3
|
||||
130.42 185.5
|
||||
128.94 204.4
|
||||
127.55 225.2
|
||||
126.25 248.2
|
||||
125.06 273
|
||||
123.91 300.8
|
@ -1,62 +0,0 @@
|
||||
sens=cma11r4rc
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
35372 1.2
|
||||
23387 1.32
|
||||
15987 1.45
|
||||
11028 1.6
|
||||
7891 1.76
|
||||
5739.2 1.94
|
||||
4258.8 2.14
|
||||
3229.9 2.36
|
||||
2504.4 2.6
|
||||
1984.1 2.86
|
||||
1593.3 3.15
|
||||
1299.1 3.47
|
||||
1076.1 3.82
|
||||
898 4.22
|
||||
757.41 4.67
|
||||
648.66 5.16
|
||||
562.26 5.7
|
||||
492.31 6.3
|
||||
435.70 6.96
|
||||
389.16 7.69
|
||||
350.47 8.5
|
||||
318.04 9.4
|
||||
290.93 10.39
|
||||
267.86 11.49
|
||||
248.31 12.7
|
||||
231.51 14.04
|
||||
217.03 15.52
|
||||
204.46 17.16
|
||||
193.52 18.97
|
||||
183.95 20.97
|
||||
175.55 23.18
|
||||
168.11 25.63
|
||||
161.55 28.33
|
||||
155.70 31.32
|
||||
150.50 34.62
|
||||
145.85 38.27
|
||||
141.67 42.31
|
||||
137.92 46.77
|
||||
134.54 51.7
|
||||
131.49 57.15
|
||||
128.73 63.18
|
||||
126.22 69.85
|
||||
123.90 77.4
|
||||
121.84 85.3
|
||||
119.87 94
|
||||
117.96 103.6
|
||||
116.12 114.2
|
||||
114.36 125.8
|
||||
112.66 138.6
|
||||
111.03 152.7
|
||||
109.45 168.3
|
||||
107.94 185.5
|
||||
106.48 204.4
|
||||
105.09 225.2
|
||||
103.74 248.2
|
||||
102.47 273
|
||||
101.21 300.8
|
@ -1,23 +0,0 @@
|
||||
sens=cplus45
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50045 1
|
||||
6545 2
|
||||
2245 3
|
||||
1145 4.2
|
||||
670 6
|
||||
395 10
|
||||
295 15
|
||||
255 20
|
||||
225 27
|
||||
205 35
|
||||
185 50
|
||||
169 77
|
||||
161 100
|
||||
152 150
|
||||
148 200
|
||||
143 300
|
||||
135 500
|
||||
|
@ -1,23 +0,0 @@
|
||||
sens=cplus70
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
50070 1
|
||||
6570 2
|
||||
2270 3
|
||||
1170 4.2
|
||||
695 6
|
||||
420 10
|
||||
320 15
|
||||
280 20
|
||||
250 27
|
||||
230 35
|
||||
210 50
|
||||
194 77
|
||||
186 100
|
||||
177 150
|
||||
173 200
|
||||
168 300
|
||||
135 500
|
||||
|
@ -1,51 +0,0 @@
|
||||
sens=cs405
|
||||
unit=Ohm
|
||||
type=C
|
||||
form=loglog
|
||||
curv
|
||||
8342.788494 0.29
|
||||
7997.108246 0.3
|
||||
7385.224382 0.32
|
||||
6860.63041 0.34
|
||||
6406.112969 0.36
|
||||
5658.608243 0.4
|
||||
5070.752206 0.44
|
||||
4597.749769 0.48
|
||||
4210.063652 0.52
|
||||
3887.352305 0.56
|
||||
3615.181303 0.6
|
||||
3330.280576 0.65
|
||||
3093.128214 0.7
|
||||
2893.109164 0.75
|
||||
2722.418161 0.8
|
||||
2575.268002 0.85
|
||||
2447.269899 0.9
|
||||
2335.06011 0.95
|
||||
2236.020956 1
|
||||
2148.092966 1.05
|
||||
2069.625085 1.1
|
||||
1999.285056 1.15
|
||||
1935.977983 1.2
|
||||
1878.783871 1.25
|
||||
1826.93583 1.3
|
||||
1779.78886 1.35
|
||||
1736.797991 1.4
|
||||
1697.485938 1.45
|
||||
1661.422111 1.5
|
||||
1518.391902 1.75
|
||||
1417.276946 2
|
||||
1341.147035 2.25
|
||||
1280.347927 2.5
|
||||
1230.110043 2.75
|
||||
1188.629004 3
|
||||
1153.26912 3.25
|
||||
1121.726004 3.5
|
||||
1092.415035 3.75
|
||||
1065.750065 4
|
||||
1042.61099 4.25
|
||||
1022.648076 4.5
|
||||
1005.397982 4.75
|
||||
990.4706816 5
|
||||
966.1023663 5.5
|
||||
946.5027198 6
|
||||
470.0000000 300
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=r10401
|
||||
dev="CTI closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
@ -1,4 +0,0 @@
|
||||
sensA.type=m sensA.curve=r10402
|
||||
dev="CTI closed cycle refrigerator"
|
||||
tlimit=310 resist=25 maxPower=25
|
||||
prop=15 int=10 deriv=0
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user