前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >远程医疗以及数据传输

远程医疗以及数据传输

作者头像
联远智维
发布2022-01-20 13:54:50
8320
发布2022-01-20 13:54:50
举报
文章被收录于专栏:联远智维

2020年伊始,新冠病毒席卷全国,对人们的生活造成了严重的影响,成为了人们最受关注的话题。新冠病毒起源于武汉华南海鲜市场,在发现该冠状病毒具有传染性后,武汉作为国内第一个采取了应对措施的城市,然而由于该病毒具有高传染性、潜伏期长并且潜伏期可传染等特点,依然使得武汉成为了重灾区,具有大量的人员被该病毒感染。

此次疫情发生后,一方有难,八方支援,全国各地纷纷向武汉派出了支援队伍,为此次控制疫情作出相应的贡献,然而很不幸的是,由于该病毒具有较强的传染性,部分医护人员被感染,据报道称截止目前为止,已有逾3000名医护人员感染新冠状病毒。

如何对医护人员的安全进行保障?作为科技工作者,我们能做什么?

远程医疗作为新兴的技术,是对现有技术的整合,在国外具有40余年的发展历程(在我国刚刚起步),其主要的目的为提高诊断与医疗水平、降低医疗开支、满足广大人民群众保健需求的一项全新的医疗服务。

在线监测系统的基本框架

1

目前,远程医疗技术已经从最初的电视监护、电话远程诊断发展到利用高速网络进行数字、图像、语音的综合传输,并且实现了实时的语音和高清晰图像的交流,为现代医学的应用提供了更广阔的发展空间。本科做过机械设备实时监测相关的内容,其中,毕业设计的题目为《基于XML的远程设备监测诊断系统数据标准化模型设计》,文中对旋转机械设备进行分析(掌握设备常见的故障类型),通过传感器采集潜在故障区域的时域信号,并对相应的数据进行分析与处理,确定设备的运行状态,于此同时,采用XML文件对机械设备运行状态进行表述,建立了C/S数据传输网络构架,实现了XML文件的远程传输,基本的框架如下图所示:

远程医疗与系统状态监测具有部分相同点,系统搭建的具体过程如下图所示,其中,Client/Server模式远程在线监测与诊断系统由数据采集,数据分析处理、数据远程传输以及Client等多部分构成,主要的过程为:1、对病人(远程设备)进行分析,提取能表征人体是否健康的特征——体温(机械设备的振动信号);2、采用传感器(温度、加速度、压力、声音以及图像等)进行数据采集;3、基于现有数据对该病人(远程设备)进行诊治,得出是否患病的结论;4、确定需要传输的数据内容(比方说远程医生在诊断的时候,需要知道的数据包括时间、地点、体温等),传输给远端客户机;5、客户端对该数据进行显示。

XML文件远程传输

2

XML是一种标记语言,他是在HTML文件的基础上发展起来的,改善了HTML的一部分缺点,是一种开放的、自我描述的方式定义数据结构。XML是一种结构与数据相分离的一种文件,可以把结构和数据分离开来,可以表述病人(机械设备)的信息及状态,实现数据的存储、查看与处理的一种新方法。

传统的Client/Server结构体系一般包含数据库服务器、客户端两层数据传输结构,由客户端发起请求,服务器对客户端传输过来的请求进行分析、处理,具有较高的安全性以及数据传输效率;于此同时,Client/Server可以实现数据双向通信,具有较高的可扩展性以及可维护性。

远程在线监测:Client和Server之间传输XML文件的程序调试结果

基于Browser/Server的远程监测诊断

3

基于Browser/Server的远程在线监测与诊断系统跟传统的Client/Server模式和概念有所不同的是:

1、基于Browser/Server的远程在线监测与诊断系统不需要安装客户端软件,在客户端只需要有标准的浏览器,如Internet Explorer即可进行数据的传输,从而实现远程旋转机械的故障诊断与状态监测;

2、基于Browser/Server的远程在线监测与诊断系统就好像是多层的客户端/服务器模式,简化成三成结构,大大的简化了计算机的负载,减轻了系统维护的成本与工作量,可以为企业提高经济效益;

3、基于Browser/Server的远程在线监测与诊断系统可以采用Web技术,因此,我们只需开发、维护服务器端应用程序,对客户端的开发可以不用进行,这种方法大大减少了我们这个系统的管理、维护工作,降低了用户的总体成本;

4、客户端都是通过Web浏览器传输过来的服务器端的数据,因此,在不同的机器上界面一样,也就是说我们通过基于Browser/Server的远程在线监测与诊断模式实现了统一用户界面,方便不同系统间的信息交流。

5、所有的计算机上都有Web浏览器,因此,我们还可以通过这种数据传输模式实现跨平台操作。

6、由于Client端是标准的浏览器,用户操作实现了标准化,因此操作变得非常简单,进行数据的远距离传输。并且我们可以通过这种模式来利用互联网上信息资源,进而提高故障诊断的精确度。为现场的技术人员提供更加可靠地诊断。

7、并且Browser/Server模式还可以与多种网络服务,如E-mail、FTP进行组合使用。

XML文件传输程序

4

代码语言:javascript
复制
文件传输程序
客户端
package sterning;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class ClientTest {
private ClientSocket cs = null;
private String ip = "10.108.236.115";//服务器IP
private int port = 8821;
private String sendMessage = "Windwos";
public ClientTest() {
try {
if (createConnection()) {
sendMessage();
getMessage();
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
private boolean createConnection() {
cs= new ClientSocket(ip, port);
try {
cs.CreateConnection();
System.out.print("连接服务器成功!" + "\n");
return true;
} catch (Exception e) {
System.out.print("连接服务器失败!" + "\n");
return false;
}
}
private void sendMessage() {
if (cs == null)
return;
try {
cs.sendMessage(sendMessage);
} catch (Exception e) {
System.out.print("发送消息失败!" + "\n");
}
}
private void getMessage() {
if (cs == null)
return;
DataInputStream inputStream = null;
try {
inputStream = cs.getMessageStream();
} catch (Exception e) {
System.out.print("接收消息缓存错误\n");
return;
}
try {
//本地保存路径,文件名自动从服务器端继承来。
String savePath = "E:\\";
int bufferSize = 8192;
byte[] buf = new byte[bufferSize];
int passedlen = 0;
long len=0;            
savePath += inputStream.readUTF();
DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(savePath))));
len = inputStream.readLong();   
System.out.println("文件的长度为:" + len + "\n");
System.out.println("开始接收文件!" + "\n");                    
while (true) {
int read = 0;
if (inputStream != null) {
read = inputStream.read(buf);
}
passedlen += read;
if (read == -1) {
break;
}
System.out.println("文件接收了" +  (passedlen * 100/ len) + "%\n");
fileOut.write(buf, 0, read);
}
System.out.println("接收完成,文件存为" + savePath + "\n");
fileOut.close();
} catch (Exception e) {
System.out.println("接收消息错误" + "\n");
return;
}
}
public static void main(String arg[]) {
new ClientTest();
}
}
建立ClientSocket辅助类
package sterning;
import java.net.*;
import java.io.*;
public class ClientSocket {
private String ip;
private int port;
private Socket socket = null;
DataOutputStream out = null;
DataInputStream getMessageStream = null;
public ClientSocket(String ip, int port) {
this.ip = ip;
this.port = port;
}
public void CreateConnection() throws Exception {
try {
socket = new Socket(ip, port);
} catch (Exception e) {
e.printStackTrace();
if (socket != null)
socket.close();
throw e;
} finally {
}
}
public void sendMessage(String sendMessage) throws Exception {
try {
out = new DataOutputStream(socket.getOutputStream());
if (sendMessage.equals("Windows")) {
out.writeByte(0x1);
out.flush();
return;
}
if (sendMessage.equals("Unix")) {
out.writeByte(0x2);
out.flush();
return;
}
if (sendMessage.equals("Linux")) {
out.writeByte(0x3);
out.flush();
} else {
out.writeUTF(sendMessage);
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
if (out != null)
out.close();
throw e;
} finally {
}
}
public DataInputStream getMessageStream() throws Exception {
try {
getMessageStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
return getMessageStream;
} catch (Exception e) {
e.printStackTrace();
if (getMessageStream != null)
getMessageStream.close();
throw e;
} finally {
}
}
public void shutDownConnection() {
try {
if (out != null)
out.close();
if (getMessageStream != null)
getMessageStream.close();
if (socket != null)
socket.close();
} catch (Exception e) {
}
}
}
服务器程序
package sterning;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest {
int port = 8821;
void start() {
Socket s = null;
try {
ServerSocket ss = new ServerSocket(port);
while (true) {
String filePath = "E:\\lib.xml";
File fi = new File(filePath);
System.out.println("文件长度:" + (int) fi.length());
s = ss.accept();
System.out.println("建立socket链接");
DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream()));
dis.readByte();
DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));
DataOutputStream ps = new DataOutputStream(s.getOutputStream());                
ps.writeUTF(fi.getName());
ps.flush();
ps.writeLong((long) fi.length());
ps.flush();
int bufferSize = 8192;
byte[] buf = new byte[bufferSize];
while (true) {
int read = 0;
if (fis != null) {
read = fis.read(buf);
}
if (read == -1) {
break;
}
ps.write(buf, 0, read);
}
ps.flush();
fis.close();
s.close();
System.out.println("文件传输完成");
}
} catch (Exception e)
{e.printStackTrace();
}
}
public static void main(String arg[]) {
new ServerTest().start();
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 轻量化结构分析与设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库专家服务
数据库专家服务(Database Expert Service,DBexpert)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化问题。腾讯云数据库专家服务团队均有10年以上的 DBA 经验,拥有亿级用户产品的数据库管理经验,以及丰富的服务经验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档