📄 biosig.c
字号:
}void leu64a(uint64_t i, uint8_t* r) { i = l_endian_u64(i); memcpy(&i,r,sizeof(i));}void lei64a( int64_t i, uint8_t* r) { i = l_endian_i64(i); memcpy(&i,r,sizeof(i));}void lef32a( float i, uint8_t* r) { uint32_t i32 = l_endian_u32(*(uint32_t*)(&i)); memcpy(&i32,r,sizeof(i32));}void lef64a( double i, uint8_t* r) { uint64_t i64 = l_endian_u64(*(uint64_t*)(&i)); memcpy(&i64,r,sizeof(i64));}void beu16a(uint16_t i, uint8_t* r) { i = b_endian_u16(i); memcpy(&i,r,sizeof(i));};void bei16a( int16_t i, uint8_t* r) { i = b_endian_i16(i); memcpy(&i,r,sizeof(i));}void beu32a(uint32_t i, uint8_t* r) { i = b_endian_u32(i); memcpy(&i,r,sizeof(i));}void bei32a( int32_t i, uint8_t* r) { i = b_endian_i32(i); memcpy(&i,r,sizeof(i));}void beu64a(uint64_t i, uint8_t* r) { i = b_endian_u64(i); memcpy(&i,r,sizeof(i));}void bei64a( int64_t i, uint8_t* r) { i = b_endian_i64(i); memcpy(&i,r,sizeof(i));}void bef32a( float i, uint8_t* r) { uint32_t i32 = b_endian_u32(*(uint32_t*)(&i)); memcpy(&i32,r,sizeof(i32));}void bef64a( double i, uint8_t* r) { uint64_t i64 = b_endian_u64(*(uint64_t*)(&i)); memcpy(&i64,r,sizeof(i64));}#endifvoid* mfer_swap8b(uint8_t *buf, int8_t len, char FLAG_SWAP) { if (VERBOSE_LEVEL==9) fprintf(stdout,"swap=%i %i %i \nlen=%i %2x%2x%2x%2x%2x%2x%2x%2x\n",FLAG_SWAP, __BYTE_ORDER, __LITTLE_ENDIAN, len, buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7]); typedef uint64_t iType; #if __BYTE_ORDER == __BIG_ENDIAN if (FLAG_SWAP) { for (unsigned k=len; k < sizeof(iType); buf[k++]=0); *(iType*)buf = bswap_64(*(iType*)buf); } else *(iType*)buf >>= (sizeof(iType)-len)*8;#elif __BYTE_ORDER == __LITTLE_ENDIAN if (FLAG_SWAP) *(iType*)buf = bswap_64(*(iType*)buf) >> (sizeof(iType)-len)*8; else for (unsigned k=len; k < sizeof(iType); buf[k++]=0);#endif if (VERBOSE_LEVEL==9) fprintf(stdout,"%2x%2x%2x%2x%2x%2x%2x%2x %Li %f\n",buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],*(uint64_t*)buf,*(double*)buf); return(buf); }/* -------------------------------- * float to ascii[8] conversion * -------------------------------- */int ftoa8(char* buf, double num){ // used for converting scaling factors Dig/Phys/Min/Max into EDF header // Important note: buf may need more than len+1 bytes. make sure there is enough memory allocated. double f1,f2; sprintf(buf,"%f",num); f1 = atof(buf); buf[8] = 0; // truncate f2 = atof(buf); return (fabs((f1-f2)/(f1+f2)) > 1e-6); }/* physical units are defined in prEN ISO 11073-10101 (Nov 2003) Health Informatics - Point-of-care medical device communications - Part 10101:Nomenclature (ISO/DIS 11073-10101:2003) Table A.6.1: Table of Decimal Factors CEN/TC251/PT40 2001 File Exchange Format for Vital Signs - Annex A Table A.4.1: Table of Decimal Factors const double scale[32] =*/const struct PhysDimIdx { const uint16_t idx; const char* PhysDimDesc; } _physdim[] = { { 0 , "?" }, { 512 , "-" }, { 544 , "%" }, { 576 , "ppht" }, { 608 , "ppm" }, { 640 , "" }, { 672 , "ppb" }, { 704 , "ppt" }, { 736 , "degree" }, { 768 , "rad" }, { 800 , "g g-1" }, { 832 , "g kg-1" }, { 864 , "mol mol-1" }, { 896 , "l l-1" }, { 928 , "m m-3 " }, { 960 , "m cm-3" }, { 6240 , "vol %" }, { 992 , "pH" }, { 1024 , "drop" }, { 1056 , "rbc" }, { 1088 , "beat" }, { 1120 , "breath" }, { 1152 , "cell" }, { 1184 , "cough" }, { 1216 , "sigh" }, { 1248 , "%PCV" }, { 1280 , "m" }, { 1312 , "yd" }, { 1344 , "ft" }, { 1376 , "in" }, { 1408 , "lm-2" }, { 1440 , "m-1" }, { 1472 , "m2" }, { 1504 , "in2" }, { 1536 , "m-2" }, { 1568 , "m3" }, { 1600 , "l" }, { 1632 , "l breath-1" }, { 6112 , "l beat-1" }, { 1664 , "m-3" }, { 1696 , "l-1" }, { 1728 , "g" }, { 1760 , "lb" }, { 1792 , "oz" }, { 1824 , "g-1" }, { 1856 , "g m" }, { 1888 , "g m m-2 " }, { 1920 , "kg m2" }, { 1952 , "kg m-2" }, { 1984 , "g m-3 " }, { 2016 , "g cm-3" }, { 2048 , "g l-1" }, { 2080 , "g cl-3" }, { 2112 , "g dl-3" }, { 2144 , "g ml-3" }, { 2176 , "s" }, { 2208 , "min" }, { 2240 , "h" }, { 2272 , "d" }, { 2304 , "weeks" }, { 2336 , "mth" }, { 2368 , "y" }, { 2400 , "TOD" }, { 2432 , "DATE" }, { 2464 , "s-1" }, { 2496 , "Hz" }, { 2528 , "min-1" }, { 2560 , "h-1" }, { 2592 , "d-1" }, { 2624 , "week-1" }, { 2656 , "mth-1" }, { 2688 , "y-1" }, { 2720 , "bpm" }, { 2752 , "puls min-1" }, { 2784 , "resp min-1" }, { 2816 , "m s-1" }, { 2848 , "l min-1 m-2" }, { 2880 , "m2 s-1" }, { 2912 , "m3 s-1" }, { 2944 , "m3 min-1" }, { 2976 , "m3 h-1" }, { 3008 , "m3 d-1" }, { 3040 , "l s-1" }, { 3072 , "l min-1" }, { 3104 , "l h-1" }, { 3136 , "l d-1" }, { 3168 , "l kg-1" }, { 3200 , "m3 d-1" }, { 3232 , "m Pa-1s-1" }, { 3264 , "l min-1 mmHG-1" }, { 3296 , "g s-1" }, { 3328 , "g m-1" }, { 3360 , "g h-1" }, { 3392 , "g d-1" }, { 3424 , "g kg-1 s-1" }, { 3456 , "g kg-1 m-1" }, { 3488 , "g kg-1 h-1" }, { 3520 , "g kg-1 d-1" }, { 3552 , "g l-1 s-1" }, { 3584 , "g l-1 m-1" }, { 3616 , "g l-1 h-1" }, { 3648 , "g l-1 d-1" }, { 3680 , "g m-1 s-1" }, { 3712 , "gm s-1" }, { 3744 , "Ns" }, { 3776 , "N" }, { 3808 , "dyn" }, { 3840 , "Pa" }, { 3872 , "mmHg" }, { 3904 , "cm H2O" }, { 3936 , "bar" }, { 3968 , "J" }, { 4000 , "eV" }, { 4032 , "W" }, { 4064 , "Pa s m-3" }, { 4096 , "Pa s l-1" }, { 4128 , "dyn s cm-5" }, { 5888 , "l (cmH2O)-1" }, { 6272 , "l (mmHg)-1" }, { 6304 , "l Pa-1" }, { 6144 , "cmH2O l-1" }, { 6336 , "mmHg l-1" }, { 6368 , "Pa l-1" }, { 4160 , "A" }, { 4192 , "C" }, { 6080 , "Ah" }, { 4224 , "A m-1" }, { 4256 , "V" }, { 4288 , "Ohm" }, { 4320 , "Wm" }, { 4352 , "F" }, { 4384 , "K" }, { 6048 , "\xB0\x43" }, //癈 { 4416 , "\xB0\x46" }, //癋 { 4448 , "K W-1" }, { 4480 , "cd" }, { 4512 , "osmole" }, { 4544 , "mol" }, { 4576 , "eq" }, { 4608 , "osmol l-1" }, { 4640 , "mol cm-3" }, { 4672 , "mol m-3" }, { 4704 , "mol l-1" }, { 4736 , "mol ml-1" }, { 4768 , "eq cm-3" }, { 4800 , "eq m-3" }, { 4832 , "eq l-1" }, { 4864 , "eq ml-1" }, { 4896 , "osmol kg-1" }, { 4928 , "mol kg-1" }, { 4960 , "mol s-1" }, { 4992 , "mol min-1" }, { 5024 , "mol h-1" }, { 5056 , "mol d-1" }, { 5088 , "eq s-1" }, { 5120 , "eq min-1" }, { 5152 , "eq h-1" }, { 5184 , "eq d-1" }, { 5216 , "mol kg-1 s-1" }, { 5248 , "mol kg-1 min-1" }, { 5280 , "mol kg-1 h-1" }, { 5312 , "mol kg-1 d-1" }, { 5344 , "eq kg-1 s-1" }, { 5376 , "eq kg-1 min-1" }, { 5408 , "eq kg-1 h-1" }, { 5440 , "eq kg-1 d-1" }, { 5472 , "i.u." }, { 5504 , "i.u. cm-3" }, { 5536 , "i.u. m-3" }, { 5568 , "i.u. l-1" }, { 5600 , "i.u. ml-1" }, { 5632 , "i.u. s-1" }, { 5664 , "i.u. min-1" }, { 5696 , "i.u. h-1" }, { 5728 , "i.u. d-1" }, { 5760 , "i.u. kg-1 s-1" }, { 5792 , "i.u. kg-1 min-1" }, { 5824 , "i.u. kg-1 h-1" }, { 5856 , "i.u. kg-1 d-1" }, { 5920 , "cmH2O l-1s-1" }, { 5952 , "l2s-1" }, { 5984 , "cmH2O %-1" }, { 6176 , "mmHg %-1" }, { 6208 , "Pa %-1" }, { 6432 , "dB" }, { 6016 , "dyne s m-2 cm-5" }, {65344 , "mol l-1 mm"}, // "light path length","milli(Mol/Liter)*millimeter" {65376 , "r.p.m"}, // "rotations per minute" {65408 , "B"}, // "Bel", "relative power decibel" {65440 , "dyne s m2 cm-5" }, {65472 , "l m-2" }, {65504 , "T" }, {0xffff , "end-of-table" },}; const char* PhysDimFactor[] = { "","da","h","k","M","G","T","P", // 0..7 "E","Z","Y","#","#","#","#","#", // 8..15 "d","c","m","u","n","p","f","a", // 16..23 "z","y","#","#","#","#","#","#", // 24..31 "\xB5" //hack for "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -