Về mặt ứng dụng thực tiễn hệ thống đƣợc ứng dụng vào lĩnh vực ý tế đó là hệ thống giám sát bệnh nhân từ xa qua mạng internet. Trong các bệnh viện lớn có rất nhiều bệnh nhân mà bác sỹ không thể có mặt thường xuyên tại các phòng bệnh nhân được thì việc thiết kế hệ thống giám sát bệnh nhân qua mạng internet với mục đích giúp cho việc giám sát và theo dõi tình trạng của bệnh nhân từ xa tốt hơn. Ngoài ra hệ thống giúp cho các bệnh nhân vùng sâu vùng xa, dân tộc thiểu số ít ngƣời việc đi lại khó khăn các bác sỹ không thể thường xuyên có mặt trực tiếp để thăm khám bệnh được thì việc khám bệnh từ xa qua mạng internet là cần thiết.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - HỒ MẬU VIỆT THIẾT KẾ HỆ THỐNG ĐO NHIỆT ĐỘ VÀ XÁC ĐỊNH VỊ TRÍ BỆNH NHÂN QUA MẠNG INTERNET LUẬN VĂN THẠC SĨ KỸ THUẬT NGÀNH KỸ THUẬT Y SINH GIÁO VIÊN HƢỚNG DẪN: PGS.TS NGUYỄN TIẾN DŨNG Hà Nội – Năm 2014 LỜI CAM ĐOAN Tơi xin cam đoan luận văn tơi nghiên cứu Hệ thống phần cứng chƣơng trình phần mềm thiết kế xây dựng Các thơng tin số liệu luận văn hồn tồn trung thực, xác có nguồn gốc rõ ràng Trong q trình nghiên cứu tơi có tham khảo mốt số tài liệu, báo có danh mục tài liệu tham khảo đƣợc liệt kê cuối luận văn Học viên Hồ Mậu Việt MỤC LỤC LỜI CAM ĐOAN MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU MỞ ĐẦU CHƢƠNG 1: TỔNG QUAN 10 1.1 Mở đầu 10 1.2 Ý tƣởng thiết kế 10 1.3 Mục tiêu đề tài 11 1.4 Yêu cầu hệ thống 11 1.5 Giải pháp thiết kế 12 CHƢƠNG 2: CÔNG NGHỆ ĐỊNH VỊ GPS 14 2.1 Giới thiệu hệ thống định vị toàn cầu GPS 15 2.2 Phân loại hệ thống định vị 16 2.3 Cấu trúc hệ thống định vị toàn cầu 16 2.4 Hoạt động GPS 18 2.5 Độ xác GPS 18 2.6 Hệ thống vệ tinh GPS 19 2.7 Tín hiệu GPS 19 2.8 Nguồn lỗi tín hiệu GPS 20 2.9 Nhận xét khả ứng dụng GPS 21 CHƢƠNG 3: KIT VI ĐIỀU KHIỂN ARDUINO 22 3.1 Giới thiệu kít vi điều khiển Arduino 22 3.2 Phân loại kit Arduino 24 3.2.1 Arduino Uno 24 3.2.2 Arduino Mega 2560 26 3.2.3 Arduino Fio 29 3.3 Lập trình Arduino 31 3.3.1 Giới thiệu mơi trƣờng lập trình 31 3.3.2 Giao diện phần mềm lập trình Arduino 33 3.3.3 Nạp chƣơng trình chạy ứng dụng 34 3.4 Cấu trúc chƣơng trình lập trình Arduino 35 CHƢƠNG 4: THIẾT BỊ ĐỊNH VI GPS SIM548 36 4.1 Lý lựa chọn module SIM548 36 4.2 Đặc điểm chung SIM548 37 4.3 Cấu trúc phần cứng module SIM548 38 4.4 Phần cứng ứng dụng GSM SIM548 40 4.4.1 Chức chân cho GSM 40 4.4.2 Bật ứng dụng GSM module SIM 548 44 4.4.3 Tắt ứng dụng GSM module SIM548 45 4.5 Truyền thông nối tiếp SIM548 47 4.6 Kết nối với SIM card 48 4.7 Trạng thái chân STATUS 49 4.8 Phần cứng ứng dụng GPS module SIM548 50 4.8.1 Chức chân dùng cho ứng dụng GPS 50 4.8.2 Bật ứng dụng GPS 51 4.8.3 Mạch kết nối cho chân VRTC 51 4.8.4 Mạch kết nối cho chân RESET 51 4.8.5 Chuẩn giao tiếp nối tiếp ứng dụng GPS 52 4.9 Ứng dụng GPS module SIM548 52 4.9.1 GPS Hệ thống định vị toàn cầu 52 4.9.2 Kỹ thuật DGPS 54 4.10 Chuẩn giao tiếp NMEA 55 4.10.1 Dữ liệu đầu 55 4.10.2 Dữ liệu đầu vào 57 CHƢƠNG 5: THIẾT KẾ HỆ THỐNG ĐO NHIỆT ĐỘ VÀ XÁC ĐỊNH VỊ TRÍ BỆNH NHÂN 61 5.1 Giới thiệu 61 5.1 Sơ đồ khôi hệ thống 61 5.1.1 Arduino Mega 2560 62 5.1.2 Khối giao chức GSM GPS 63 5.1.3 Khối giao tiếp GPS GSM 64 5.1.4 Module SIM 66 5.1.5 Cảm biến nhiệt độ 66 5.2 Sơ đồ nguyên lý tổng thể hệ thống 68 5.3 Lƣu đồ thuật toán điều khiển hệ thống 69 5.4 Thiết kế hệ thống phần mềm giám sát 70 5.4.1 Yêu cầu mục đích hệ thống phần mềm 70 5.4.2 Câu trúc sơ đồ giải thuật 71 5.5 Xây dựng phần mềm server quản lý dùng giao thức TCP/IP 73 5.5.1 Ứng dụng giao thức TCP/IP việc liên kết ngƣời dùng qua mạng 73 5.6 Giải pháp ứng dụng module Sim548 việc kết nối server 74 5.6.1 Đối với server 74 5.6.2 Yêu cầu phần mềm Server 74 5.7 Giải pháp GPRS 75 5.8 Phần mềm thiết kế webserver Netbeans 75 5.9 Thiết kế phần mềm hiển thị cho máy Client 77 5.10 Mở cổng modem cho máy chủ webserver 78 5.11 Kết đạt đƣợc 79 5.12 Đánh giá kết 84 5.13 Kết luận 85 TÀI LIỆU THAM KHẢO 86 PHỤ LỤC 87 DANH MỤC HÌNH ẢNH Hình 2.1: Hệ thống vệ tinh cho GPS 15 Hình 3.1: Hình ảnh kit vi điều khiểnt Arduino 22 Hình 3.2: Cấu trúc phần cứng Arduino Uno 24 Hình 3.3: Arduino Mega 2560 26 Hình 3.4: Arduino Mega Fio 29 Hình 3.5: Link download phần mềm Arduino 32 Hình 3.6: Giao diện lập trình Arduino 32 Hình 3.7: Giao diện lập trình Arduino 33 Hình 3.8: Lấy ví dụ có sẵn Arduino 34 Hình 3.9: Nạp chƣơng trình cho Arduino 34 Hình 4.1: Hình ảnh module Sim548 37 Hình 4.2: Các thiết bị kèm module SIM548 38 Hình 4.3: Sơ đồ khối SIM548 39 Hìnhn 4.4: Dùng chân PWMRKEY để bật ứng dụng GSM 44 Hình 4.5: Dùng chân PWRKEY để tắt ứng dụng GSM 46 Hình 4.6: Chuẩn giao tiếp nối tiếp SIM548 47 Hình 4.7: Kết nối SIM card chân 48 Hình 4.8: Kết nối với chân NETLIGHT 49 Hình 4.9: Bật ứng dụng GPS 51 Hình 4.10 Kết nối với chân VRTC 51 Hình 4.11: Kết nối với chân RESET 52 Hình 4.12: Vệ tinh GPS 53 Hình 5.1: Sơ đồ khối hệ thống 61 Hình 5.2: Khối xử lý trung tâm 62 Hình 5.3: Sơ đồ cấu trúc khối giao tiếp vô tuyến 64 Hình 5.4: Anten thu phát GPRS 64 Hình 5.5: Anten thu phát GPS 65 Hình 5.6: Sim kết nối mạng GSM/ GPRS 66 Hình 5.7: Hình ảnh cấu tạo cảm biến nhiệt độ 67 Hình 5.8: Sơ đồ mạch nguyên lý hệ thống 68 Hình 5.9: Lƣu đồ thuật toán điều khiển hệ thống 69 Hình 5.10: Sơ đồ phần mềm theo lớp 71 Hình 5.11: Sơ đồ giải thuật 72 Hình 5.12: Giao diện phần mềm lập trình Java Netbeans 76 Hình 5.13: Giao diện phần mềm webserver 76 Hình 5.14: Giao diện phần mềm Visua Studio 2012 77 Hình 5.15: Giao diện phần mềm hiển thị cho máy Client 78 Hình: 5.16: Mở port modem 79 Hình 5.17: Thiết lập thơng số cho port 79 Hình 5.18: Các thiết bị hệ thống 80 Hình 5.19: Hệ thống ghép nối hoàn chỉnh 80 Hình 5.20: Hệ thống hồn cuối 81 Hình 5.201: Thơng tin tọa độ vị trí bệnh nhân 82 Hình 5.22: Thơng tin nhiệt độ 82 Hình 5.23: Kết chạy phần mềm webserver 83 Hình 5.24: Kết chạy phần mềm thị 83 Hình 5.25: Thơng tin vị trí nhiệt độ đo đƣợc từ bệnh nhân 84 DANH MỤC BẢNG BIỂU Bảng 4.1 Chức chân GSM 40 Bảng 4.2 Miêu tả chức chân 41 Bảng 4.4 Chức chân SIM 49 Bảng 4.5 Trạng thái chân STATUS 49 Bảng 4.6 Chức chân GPS 50 Bảng 4.7 Dạng ký hiệu thông tin định vị 55 Bảng 4.8 Thông tin chuỗi bảng tin nhận đƣợc 56 Bảng 4.9 Thông báo trạng thái kết nối 56 Bảng 4.10 Cấu hình module 57 Bảng 4.11 Tham số cấu hình module 57 Bảng 4.12 Thơng số cáu hình PORT A 58 Bảng 4.13 Thông tin khởi tạo ứng dụng GPS 58 Bảng 4.14 Thông tin cấu hình nối tiếp 59 Bảng 4.15 Thông tin định dạng đầu 59 Bảng 4.16 Thông tin khởi tạo thời gian 60 DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Tên tiếng anh Tên tiếng việt GPS Global position systems Hệ thống định vị toàn cầu GSM Global System for MobileC Hệ thống thơng tin di động tồn cầu ommunications GPRS General Packet Radio Servi Dịch vụ vơ tuyến gói chung ces Dịch vụ tin nhắn ngắn SMS Short Message Service WAP Wireless Application Protoc Giao thức ứng dụng mạng đơn giản ol SIM Subscriber Identity Module Thẻ chứa thông tin định dạng TCP/UDP Transmission Control Proto Giao thức điều khiển truyền dẫn/Giao col/User Datagram Protocol thức liệu gói ngƣời sửdụng IP Internet Protocol Giao thức dùng cho mạng Internet AT Attention Command Tập lệnh AT CR CARRIAGE RETURN Lệnh Enter LF Line Feed Lùi vào đầu dòng TE Terminal Equipment Thiết bị đầu cuối MT Mobile Terminal Thiết bị đầu cuối mạng IDE Integrated Development Môi trƣờng biên dịch Environment USB Universal Serial Bus chuẩn truyền liệu cho bus ngoại vi IDE Integrated Development Môi trƣờng biên dịch Environment TX Transmitter Chân truyền liệu RX Receiver Chân nhận liệu SPI chuẩn đồng nối tiếp truyền liệu Serial Peripheral Interface chế độ song công toàn phần MOSI dành cho việc truyền liệu từ thiết bị Master Out Slave In chủ động đến thiết bị bị động MISO dành cho việc truyền liệu từ thiết Master In Slave Out bị bị động đến thiết bị chủ động SCLK ành cho việc truyền tín hiệu đồng hồ Serial Clock tăctơ dành cho thiết bị bị động CS Chip Select chọn vi mạch, chọn bên bị động UART Universal Asynchronous thức truyền thông không đồng serial Reveiver and Transmitter VLR Visited Location Register Bộ đăng kí định vị tạm trú HLR Home Location Register Bộ đăng kí định vị thƣờng trú //=========================================== void init_gprs() { Serial.println("AT+CGATT=1\r"); Serial1.print("AT+CGATT=1\r"); delay(100); Serial.println("AT+CGDCONT=1,\"IP\",\"v-internet\"\r"); Serial1.print("AT+CGDCONT=1,\"IP\",\"v-internet\"\r"); delay(100); Serial.println("AT+CIPHEAD=1\r"); Serial1.print("AT+CIPHEAD=1\r"); delay(100); Serial.println("AT+CIPSPRT=1\r"); Serial1.print("AT+CIPSPRT=1\r"); delay(100); Serial.print("AT+CDNSORIP=1\r"); Serial1.print("AT+CDNSORIP=1\r"); delay(100); Serial.println("AT+CIPSTART=\"TCP\",\"homauviet.noip.info\",\"1400\"\r"); //Serial1.print("AT+CIPSTART=\"TCP\",\"www.google.com\",\"80\"\r"); Serial1.print("AT+CIPSTART=\"TCP\",\"homauviet.noip.info\",\"1400\"\r"); } //=========================================== void serialEvent1() { if(Serial1.available()) { inChar1 = (char)Serial1.read(); switch(inChar1) 92 { case '\n': Enable_rcv1=true; inputString1=""; break; case '\r': Enable_rcv1=false; if(inputString1.length()>0) stringComplete1 = true; break; default: if(Enable_rcv1) inputString1 += inChar1; break; } } } Chƣơng trình máy chủ sever package servergmap; import java.io.*; import java.net.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.DefaultListModel; import java.sql public class Form extends javax.swing.JFrame { url = "jdbc:odbc:Driver={Microsoft Access Driver " + "(*.mdb, *.accdb)};DBQ=C:\\DatabaseGmap\\Gmap.accdb"; static Connection con; DefaultListModel list; String kinhdo="10548.4823",vido="2135.0521"; 93 public Form() { initComponents(); list = new DefaultListModel(); } private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jList1 = new javax.swing.JList(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); Connect = new javax.swing.JButton(); Exit = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOS E); setTitle("GPS Server"); jScrollPane1.setViewportView(jList1); jTextField1.setEditable(false); jTextField1.setText("1400"); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel2.setText("Port:"); jTextField2.setEditable(false); jTextField2.setText("IP Server"); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText("IP server:"); jTextField3.setEditable(false); jTextField3.setText("Close"); 94 jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("Status:"); Connect.setText("Start"); Connect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ConnectActionPerformed(evt); } }); Exit.setText("Exit"); Exit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ExitActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) addGroup(layout.createSequentialGroup() addContainerGap() addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment TRAILING, false) addComponent(Connect, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE)) 95 .addGap(18, 18, 18) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment TRAILING) addGroup(layout.createSequentialGroup() addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING) addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATE D) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING, false) addComponent(jTextField2) addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) addComponent(jTextField3))) addComponent(Exit, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)) 96 .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) addGroup(layout.createSequentialGroup() addContainerGap() addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING, false) addGroup(layout.createSequentialGroup() addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING) addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) addGap(18, 18, 18) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING, false) addComponent(jTextField2) 97 .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) addGap(18, 18, 18) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING, false) addComponent(jTextField3) addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))) addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) addGap(18, 18, 18) addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment LEADING, false) addComponent(Connect, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) addComponent(Exit, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// private void ExitActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); 98 } private void ConnectActionPerformed(java.awt.event.ActionEvent evt) { chuyendoi(vido,kinhdo); String url = "http://vallentinsource.com/globalip.php"; try { BufferedReader br = new BufferedReader(new InputStreamReader(new URL(url).openStream())); String ip = br.readLine(); jTextField2.setText(ip); } catch (IOException ex) { Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex); } list.addElement(">> Start!"); jList1.setModel(list); Connect.setEnabled(false); jTextField3.setText("Open"); Connect = new Connect(); con.start(); } public static void main(String args[]) try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } 99 } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Form.class.getName()).log(java.util.loggi ng.Level.SEVERE, null, ex); } java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new Form().setVisible(true); } } } private javax.swing.JButton Connect; private javax.swing.JButton Exit; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JList jList1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; // End of variables declaration class doComms implements Runnable { private Socket s; String input = ""; 100 PrintWriter out; BufferedReader in; public doComms(Socket s) { this.s = s; } @Override public void run() { try { out = new PrintWriter(s.getOutputStream(),true); in = new BufferedReader(new InputStreamReader(s.getInputStream())); input = in.readLine(); System.err.println(input); if(input!=null) { if(input.startsWith("ID")) { String ID = input.substring(input.indexOf(":")+1, input.indexOf("/")); String pass = input.substring(input.indexOf("/")+1); if((ID.equals("hmv"))&&(pass.equals("ictu"))) { list.addElement(">> " + input); jList1.setModel(list); out.println("OK"); } else { out.println("ERR"); 101 } } if(input.startsWith("GPS")) { String vidotemp = input.substring(input.indexOf(":")+1, input.indexOf("/")); String kinhdotemp = input.substring(input.indexOf("/")+1); chuyendoi(vidotemp,kinhdotemp); } if(input.equals("ACK")) { out.println("GPS:"+vido+"/"+kinhdo); } } s.close(); } catch (IOException ex) { Logger.getLogger(ServerGmap.class.getName()).log(Level.SEVERE, null, ex); } } } private void chuyendoi(String vd, String kd) { String vidonguyen = vd.substring(0, vd.indexOf(".")-2); float vidothapphan = (float)(Float.valueOf(vd.substring(vd.indexOf(".")-2)).floatValue()/60); vido = (float)(Integer.valueOf(vidonguyen).intValue()+vidothapphan)+""; String kinhdonguyen = kd.substring(0, kd.indexOf(".")-2); 102 float kinhdothapphan = (float)(Float.valueOf(kd.substring(kd.indexOf(".")-2)).floatValue()/60); kinhdo = (float)(Integer.valueOf(kinhdonguyen).intValue()+kinhdothapphan)+""; System.out.println("Vĩ độ: "+vido+" Kinh độ: "+kinhdo); } private class Connect extends Thread{ @Override public void run() { try{ int port = Integer.valueOf(jTextField1.getText()).intValue(); ServerSocket ss = new ServerSocket(port); Socket s; while(true) { s = ss.accept(); doComms conn_c = new doComms(s); Thread t = new Thread(conn_c); t.start(); } } catch (IOException ex) { Logger.getLogger(ServerGmap.class.getName()).log(Level.SEVERE, null, ex); } } } } 103 .3 Chƣơng trình cài máy Client namespace Gmap.Properties { using System; [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.T ools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.P erformance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } [global::System.ComponentModel.EditorBrowsableAttribute(global::System.Comp onentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Gmap.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } 104 return resourceMan; } } [global::System.ComponentModel.EditorBrowsableAttribute(global::System.Comp onentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static System.Drawing.Bitmap Down { get { object obj = ResourceManager.GetObject("Down", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } internal static System.Drawing.Bitmap Left { get { object obj = ResourceManager.GetObject("Left", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } internal static System.Drawing.Bitmap Mortgage_Center_Button { get { object obj = ResourceManager.GetObject("Mortgage Center Button", resourceCulture); 105 return ((System.Drawing.Bitmap)(obj)); } } internal static System.Drawing.Bitmap Right { get { object obj = ResourceManager.GetObject("Right", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } internal static System.Drawing.Bitmap Up { get { object obj = ResourceManager.GetObject("Up", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } internal static System.Drawing.Bitmap Zoom_In { get { object obj = ResourceManager.GetObject("Zoom-In", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } internal static System.Drawing.Bitmap Zoom_Out { get { object obj = ResourceManager.GetObject("Zoom-Out", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } } 106 ... tƣởng thiết kế Hệ thống đo nhiệt độ xác định vị trí bệnh nhân qua mạng internet xuất phát từ ý tƣởng thiết kế hệ thống giám sát bệnh nhân điều trị bệnh viện thăm khám bệnh từ xa qua mạng Hệ thống. .. cầu sau: 11 Hệ thống kết nối đƣợc với mạng Ethernet Hệ thống xác định đƣợc vị trí bệnh nhân Hệ thống đo đƣợc nhiệt độ bệnh nhân Hệ thống tích hợp thêm chức khác nhƣ camera, đo huyết áp,... camera để quan sát hình ảnh, chng báo động cần thiết nhiên thời 10 gian có hạn nên em thiết kệ thí điểm hệ thống xác định hai thơng số xác định vị trí đo nhiệt độ bệnh nhân Với hệ thống bệnh nhân