点击此处下载通讯协议pdf版本


通讯流程如下图所示:


客户端(设备端)给服务器发送的数据除心电数据、服务器返回给客户端的波形标志是二进制流以外其它都为JSON格式。 服务器发送给客户端的数据可以是字符串JSON格式也可以是二进制数据。 第一步:客户端给服务器发送"请求头" 请求头:REQ_INFO_LENGTH(4Bytes)+Request_Information_JSON_Format REQ_INFO_LENGTH(4Bytes):JSON信息的字节长度。 Request_Information_JSON_Format:请求头信息体,JSON格式: { "flag":"header", //字符串,请求头标志 "res":8/16, //整数,数据位分辨率,8位或16位有符号整数 "spr":250, //整数,采样率samplerate,范围250Hz到2000Hz "unit":200, //整数,1mV电压的量化数,例如:200表示1mV用200表示 "leads":0, //整数,导联名:0-I,1-II,2-V1,3-V2,4-V4,5-V4,6-V5,7-V5 "spc":60000, //整数,数据采样点数(samplecount),最大与最小采样点数绝 //对计算结果的精确度与复杂度,点数要求请参看服务器网站说明 "rsp":0, //整数,服务器回复信息的形式,0-JSON文本,1-二进制紧凑数据 "code":"xxx", //字符串,服务码,从官网购买服务码 } 服务器收到客户端发来的请求头后会对servicecode验证、对心电格式进行检查 然后发送反馈给客户端 第二步:服务器给客户端发送请求反馈。 服务器给客户端返回的请求反馈有JSON格式和二进制格式,由请求头中的rsp字段决定。 JSON格式: ACK_INFO_LENGTH(4Bytes)+ACK_Information_JSON_Format ACK_INFO_LENGTH(4Bytes):JSON信息的字节长度。 ACK_Information_JSON_Format:反馈信息体,JSON格式: { "flag":"ack", //字符串,ACK标志 "ver":1, //整数,服务器版本信息,具体请参看服务器网站 "err":0, //整数,0有错,其它表示有错 "reason":[1,2,3,4,5..], //整数数组,失败原因:err=0时没有该字段 //错误代码如下: // 1:servicecode无效 // 2:余额不足 // 3:数据分辨率不支持 // 4:采样率不支持 // 5:量化单位不支持 // 6:保留 // 7:导联名称不支持 // 8:采样时长不支持 // 9:返回数据格式不支持 } 二进制紧凑格式: ACK_INFO_LENGTH(4Bytes)+ACK_Information_BIN_Format ACK_INFO_LENGTH(4Bytes):反馈信息体字节长度(不包括本4字节)。 ACK_Information_BIN_Format:二进制信息体: ACK_FLAG(1B):0x01 //ACK标志 Ver(1B):0x01 //服务器版本信息,具体请参看服务器网站 Err(1B):0x00 //0有错,其它表示有错 Reason(nB):x0,x1,x2...xn //字节数组,失败原因 客户端收到ACK之后需要判断err,如果err为0客户端就可以发送数据给服务器了,如果err为非零,服务器就会立刻断开TCP连接,reason中表明的失败原因 第三步:客户端给服务器发送二进制心电数据 二进制心电数据流nBytes,数据流字节长度为:res*spc即resolution*samplecount,分辨率*采样率,低字节在前 服务器收到数据之后进行分析,然后发送分析结果给客户端 第四步:服务器给客户端发送分析结果 服务器给客户端返回的数据有JSON格式和二进制格式,由请求头中的rsp字段决定。 JSON格式: RESULT_INFO_LENGTH(4Bytes)+Result_Information_ ACK_INFO_LENGTH(4Bytes):JSON信息的字节长度。 Result_Information:信息体,JSON格式: { "flag":"result", //字符串,RESULT标志 "wave_param":{ //参数的医学意义请参看服务器网站说明 "HBR":75, //整数,心率,每分钟心跳次数 "RRInt":0.9, //小数,单位s "PD":0.02, //小数,单位s "P1D":0.02, //小数,单位s "P2D":0.02, //小数,单位s "PRInt":0.3, //小数,单位s "QTcInt":0.5, //小数,单位s "QRSD":0.2, //小数,单位s "QD":0.02, //小数,单位s "RD":0.01, //小数,单位s "SD":0.02, //小数,单位s "PA":0.12, //小数,单位mv "P1A":0.12, //小数,单位mv "P2A":0.12, //小数,单位mv "QA":-0.12, //小数,单位mv "RA":0.12, //小数,单位mv "SA":-0.12, //小数,单位mv "STJA":-0.3, //小数,单位mv "STMA":-0.2, //小数,单位mv "STEA":-0.1, //小数,单位mv "TA":0.2 //小数,单位mv }, "diag":[1,5,34,..], //整数数组,诊断结果代码,代码意义请后面章节 } 二进制紧凑格式: RESULT_INFO_LENGTH(4Bytes)+Result_Information_Binary_format RESULT_INFO_LENGTH(4Bytes): 信息体的字节长度 Result_Information_Binary_format: 二进制信息体: RESULT_FLAG(1B):0x03 //RESULT标志 WAVE_PARAM_COUNT(1B):0x0b //wave_param中参数个数 DIAG_COUNT(1B):0x04 //diag疾病诊断结果代码个数 RSV(1B): //保留字节 //==========wave_param结构体,每个参数4字节: HBR(4B): //整数,心率,每分钟心跳次数 RRInt(4B): //小数,单位s PD(4B): //小数,单位s P1D(4B): //小数,单位s P2D(4B): //小数,单位s PRInt(4B): //小数,单位s QTcInt(4B): //小数,单位s QRSD(4B): //小数,单位s QD(4B): //小数,单位s RD(4B): //小数,单位s SD(4B): //小数,单位s PA(4B): //小数,单位mv P1A(4B): //小数,单位mv P2A(4B): //小数,单位mv QA(4B): //小数,单位mv RA(4B): //小数,单位mv SA(4B): //小数,单位mv STJA(4B): //小数,单位mv STMA(4B): //小数,单位mv STEA(4B): //小数,单位mv TA(4B): //小数,单位mv //===========结束========wave_param结构体 Diag(nB):1,3,4,34,… //字节数组,诊断结果代码数组,每个字节代表一个诊断代码 第五步:两种选择 1. 结束服务,断开连接 2. 客户端请求发送波形标识(signal_flag),C->S;服务器收到此请求后会发送波形标识数组给客户端 发送波形标识(signal_flag)的请求: REQ_INFO_LENGTH(4Bytes)+Request_Information_JSON_Format REQ_INFO_LENGTH:JSON信息体字节长度 Request_Information_JSON_Format:请求信息体,JSON格式: { "flag":"signal_flag" //字符串,请求头标志 } 第六步: 如果是客户端请求发送波形标识(signal_flag),服务器发送二进制的波形标识数组给客户端,然后断开连接结束服务 SIGNALFLAG_INFO_LENGTH(4Bytes)+SignalFlag_Information_Binary_format SIGNALFLAG_FLAG(1B):0x05 //signal flag标志 RSV(3B): //保留字节 signal_flag结构体数组: {Position(4B),Flag(4B)},{Position(4B),Flag(4B)}…
Flag对应的信号标识:
代码 标识 含义
0 RFLAG_NORMAL, 普通信号
1 RFLAG_Ps, P波开始点
2 RFLAG_P1, 双波P波时P1波波峰或波谷
3 RFLAG_P, P波主波波峰或波谷
4 RFLAG_Pv, 双波P波时P1,P2交界处
5 RFLAG_P2, 双波P波时P2波波峰或波谷
6 RFLAG_Pe, P波结束点
7 RFLAG_Qs, Q波起点
8 RFLAG_Q, Q波
9 RFLAG_Rs, R波起始点
10 RFLAG_R, R波
11 RFLAG_Re, R波结束点
12 RFLAG_FR, 宽大R波
13 RFLAG_NR, 倒置R波
14 RFLAG_FR_ON_T, 宽大R波与T波重叠(R on T)
15 RFLAG_NR_ON_T, 倒置R波与T波重叠(R on T)
16 RFLAG_S, S波
17 RFLAG_Se, S波结束点
18 RFLAG_Ts, T波起点
19 RFLAG_T, T波
20 RFLAG_Te, T波结束点
21 RFLAG_INIT, 算法初始化阶段
22 RFLAG_START, 算法开始阶段
23 RSV 保留
24 RFLAG_NOISE, 噪声
25 RFLAG_INTERF, 干扰
26 RSV 保留
27 RSV 保留
28 RSV 保留