PROCESS(INPATH,INFILE,OUTPATH,OUTFILE) ;From raw microseconds data from Arduino ; to random binary or decimal ; N OS S OS=$S($T(OS^%ZOSV)]"":$$OS^%ZOSV,1:"") N DEL S DEL=$S(OS="NT":"\",OS="UNIX":"/",1:"") S INPATH=$G(INPATH,DEL_"tmp"),OUTPATH=$G(OUTPATH,INPATH) S INFILE=$G(INFILE,"micros.txt"),OUTFILE=$G(OUTFILE,"rngs.txt") N GBL S GBL=$NA(^XTMP("SISBNA",$J)) K @GBL S SISERR="" ; Read microseconds I $$FTG^%ZISH(INPATH,INFILE,$NA(@GBL@(1)),$QL(GBL)+1) E S SISERR="Data import failed!" I $L(SISERR) Q:$Q SISERR Q N I,J,K,N,X,Y,Z S K=0 ; Format microseconds as 1 value per node F I=1:1 Q:'$D(@GBL@(I)) D .S X=@GBL@(I) F J=1:1 S Y=$P(X," ",J) Q:'$L(Y) D ..S K=K+1,@GBL@("L",K)=Y ..Q .Q ; Process to vertical list of bits - ; See also, https://www.fourmilab.ch/hotbits/how3.html N B,MS1,MS2,N S B=0,N=$O(@GBL@("L"," "),-1) S:N#2 N=N-1 S K=0 F I=1:2:N D .S MS1=@GBL@("L",I),MS2=@GBL@("L",I+1),B='B Q:MS1=MS2 .S Y=$S(MS1>MS2:B,1:'B) .S K=K+1,@GBL@("BIT",K)=Y .Q ; Flatten to rows of 80 bits per row S J=1,K=0,Y="" F I=1:1:$O(@GBL@("BIT"," "),-1) D .S Y=Y_@GBL@("BIT",I) Q:I#80 .S J=1,K=K+1,@GBL@("BIN",K)=Y,Y="" .Q ; BIN to DEC S K=0,(Y,Z)="" F I=1:1:$O(@GBL@("BIN"," "),-1) D .S BIN="",X=@GBL@("BIN",I) F J=1:1:$L(X) D ..S Z=Z_$E(X,J) ..Q:$L(Z)<4 ..S Z=$$B^SISBNA(Z,2) S Y=Y_$S(Z<10:Z,1:"x") S Z="" Q:J<$L(X) ..S K=K+1,@GBL@("DEC",K)=Y,Y="" ..Q .Q ; DEC to equal length rows of digits only N %,LEN S LEN=60 ;Edit value for desired length S K=0,Y="" F I=1:1:$O(@GBL@("DEC"," "),-1) D .S X=@GBL@("DEC",I) F J=1:1:$L(X) D ..S %=$E(X,J) Q:'(%?1N) ..S Y=Y_% Q:$L(Y)1) N DEL S DEL=$S(OS="NT":"\",OS="UNIX":"/",1:"") S OUTPATH=$G(OUTPATH,DEL_"tmp"),OUTFILE=$G(OUTFILE,"rndBin.txt") I $$GTF^%ZISH($NA(@GBL@("BIN",1)),4,OUTPATH,OUTFILE) Q:$Q "" Q:$Q "Data export failed!" Q