1. Trang chủ
  2. » Giáo án - Bài giảng

XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC

102 37 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Mục tiêu của đồ án này là thiết kế mạch thu thập dữ liệu cho trạm quan trắc và ứng dụng INTERNET để gửi dữ liệu cảm biến từ mạch thu thập dữ liệu lên môi trường INTERNET bằng giao thức TCPIP thông qua việc xây dựng máy chủ nhận dữ liệu từ mạch gửi lên bằng ngôn ngữ JAVA và lưu dữ liệu vào hệ quản trị cơ sở dữ liệu MYSQL. Xây dựng website bằng ngôn ngữ JAVA giúp người dùng và quản trị dễ dàng xem biểu đồ dữ liệu cảm biến thay đổi từ xa. Máy chủ và website được cài đặt trên máy tính đặt tại”CÔNG TY CỔ PHẦN SÁNG TẠO BÁCH KHOA”. Dữ liệu hoạt động sẽ được so sánh và rút ra kết luận cũng như xây dựng các chức năng mới cho máy chủ và website. Mở ra hướng đọc dữ liệu và điều khiển thiết bị từ xa, phân quyền người dùng có tính ứng dụng cao trong thời đại ngày nay

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN VẬT LÝ KỸ THUẬT ************* ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC Ngành Vật Lý Kỹ Thuật Chuyên ngành Vật liệu điện tử Công nghệ nano Giảng viên hướng dẫn (Kí ghi rõ họ tên) HÀ NỘI - 7/2020 Lời cảm ơn ! BÁCH KHOA - năm chặng đường! Cám ơn Bách Khoa! năm, có lẽ chả đáng so với đời có lẽ tất tuổi xuân tơi Khơng muốn biết Bách Khoa cho bao nhiêu, lấy gì, biết tuổi trẻ có Bách Khoa khơng qn điều Bách Khoa tuyệt vời nào, nơi luyện người đầy lực, nơi nơi tạo số đẹp mà tạo người giỏi thực Các thầy cô tạo môi trường khắc nghiệt Việt nam để tạo người ưu tú Ngồi tơi xin gửi lời cảm ơn chân thành đến thầy hướng dẫn, người thầy tận tình giúp đỡ, trực tiếp bảo, hướng dẫn suốt thời gian thực tập đồ án tốt nghiệp Trong suốt thời gian này, tiếp thu khơng kiến thức chun ngành mà cịn nhiều kinh nghiệm thực tiễn nghiên cứu khoa học, đời sống xã hội, kiến thức cần thiết trang bị cho tơi q trình học tập làm việc sau Tôi xin chân thành cảm ơn thầy cô giáo Viện Vật lý kỹ thuật tạo điều kiện giúp đỡ động viên để tơi hồn thành đồ án Tóm tắt nội dung đồ án Mục tiêu đồ án thiết kế mạch thu thập liệu cho trạm quan trắc ứng dụng INTERNET để gửi liệu cảm biến từ mạch thu thập liệu lên môi trường INTERNET giao thức TCP/IP thông qua việc xây dựng máy chủ nhận liệu từ mạch gửi lên ngôn ngữ JAVA lưu liệu vào hệ quản trị sở liệu MYSQL Xây dựng website ngôn ngữ JAVA giúp người dùng quản trị dễ dàng xem biểu đồ liệu cảm biến thay đổi từ xa Máy chủ website cài đặt máy tính đặt tại”CƠNG TY CỔ PHẦN SÁNG TẠO BÁCH KHOA” Dữ liệu hoạt động so sánh rút kết luận xây dựng chức cho máy chủ website Mở hướng đọc liệu điều khiển thiết bị từ xa, phân quyền người dùng có tính ứng dụng cao thời đại ngày Sinh viên thực (Kí ghi rõ họ tên) DANH MỤC CHƯƠNG TỔNG QUAN 1.1 Ngôn ngữ JAVA 1.1.1 Khái niệm 1.1.2 Ứng dụng ngơn ngữ lập trình JAVA 1.1.3 Phân tầng môi trường hoạt động JAVA 1.1.4 Phần mềm lập trình 1.1.4.1 Phần mềm lập trình cho máy chủ 1.1.4.2 Phần mềm lập trình cho website 1.2 Giao thức TCP / IP 1.2.1 Tầng vật lý [1] 1.2.2 Tầng mạng (INTERNET) 1.2.3 Tầng giao vận (Transport) 1.2.4 Tầng ứng dụng (Application) 1.3 Khái niệm Socket 1.3.1 Chức Socket 1.3.2 Cách hoạt động Socket 1.3.2.1 Quá trình khởi tạo Socket connection từ client tới server .6 1.3.2.2 Vòng đời Socket 1.3.3 1.4 Phân Loại Socket Hệ quản trị sở liệu MYSQL 1.4.1 Hiệu cao 1.4.2 Tính sẵn sàng cao 1.4.3 Bảo vệ liệu mạnh mẽ 1.4.4 Một số câu lệnh SQL thông dụng dùng dự án 1.4.4.1 SELECT 1.4.4.2 WHERE 1.4.4.3 ORDER BY 1.4.4.4 UPDATE CHƯƠNG THIẾT BỊ THU THẬP DỮ LIỆU VÀ GỬI DỮ LIỆU LÊN MÁY CHỦ DANH MỤC 2.2 Thông số chi tiết mạch thu thập liệu quan trắc 2.3 Sơ đồ khối mạch thu thập liệu từ cảm biến 10 2.3.1 Khối MCU STM32L071CZT6[10] 10 2.3.2 Khối SIM 11 2.3.2.1 2.3.3 SIM5320E 11 Khối RTC3231 12 2.4 Thiết kế mạch nguyên lý 12 2.5 Mạch in 13 2.6 Hoàn thiện mạch thu thập liệu 14 2.6.1 Hình ảnh mạch sau hàn linh kiện 14 2.6.2 Nạp chương trình cho vi điều khiển STM32L071CZT6 15 2.7 Phần mềm cài đặt cho SIM 5320E 16 2.8 Chương trình điều khiển gửi liệu lên máy chủ 16 CHƯƠNG LẬP TRÌNH MÁY CHỦ 17 3.1 Lệnh gửi liệu từ thiết bị tới máy chủ 17 3.1.1 3.2 Phân chia cấu trúc máy chủ 20 Lệnh xử lý từ máy chủ, bóc tách liệu 22 3.2.1 Kiểm tra độ dài liệu gửi lên 22 3.2.2 Tách liệu cảm biến theo ngày, tháng, năm 23 3.3 Kết nối MYSQL lưu trữ liệu 24 3.3.1 Framework Hibernate 24 3.3.2 Tạo bảng liệu MYSQL 24 3.3.2.1 Trường liệu bảng User 24 3.3.2.2 Trường liệu bảng Role 25 3.3.2.3 Trường liệu bảng Datafollowtime 25 3.3.2.4 Trường liệu bảng Datafollowday 25 DANH MỤC 3.3.2.5 Trường liệu bảng Datafollowmonth 26 3.3.2.6 Trường liệu bảng Datafollowyear 26 4.1 Lập trình giao diện website (Font-end) 28 4.1.1 HTML 28 4.1.2 CSS 28 4.1.3 JAVASCRIPT 28 4.2 Lập trình xử lý LOGIC SERVER (BACKEND) 30 4.2.1 Công nghệ JSP – Servlet 30 4.2.1.1 JSP 30 4.2.1.2 Servlet 31 4.2.1.3 Môi trường làm việc Servlet 31 4.2.2 Mơ hình MVC 32 4.3 Xử lý đăng nhập 34 4.4 Xử lý lấy liệu hệ quản trị sở liệu vẽ đồ thị website .35 CHƯƠNG KẾT QUẢ VÀ THẢO LUẬN 36 5.1 Thiết kế chế tạo phần cứng lựa chọn cảm biến 36 5.2 Thiết kế lập trình chương trình máy chủ 37 5.3 Thiết kế lập trình website 38 5.4 Kết luận 39 5.4.1 Thiết bị thu thập liệu từ cảm biến gửi lên máy chủ 39 5.4.2 Lập trình máy chủ 39 5.4.3 Lập trình website 39 5.5 Hướng phát triển 40 5.5.1 Máy chủ 40 5.5.2 Website 40 5.5.3 Hệ quản trị sở liệu 40 5.5.4 Ứng dụng điện thoại thông minh 40 TÀI LIỆU THAM KHẢO 41 DANH MỤC HÌNH ẢNH Hình 1: Phân tầng ngơn ngữ lập trình JAVA hoạt động Hình 2: Phần mềm Netbeans sử dụng tạo máy chủ Hình 3: Phần mềm Inteliji viết website Hình 4: Mơ hình phân tầng TCP/IP Hình 6: biểu đồ liên kết liệu bảng user với bảng role hệ quản trị sở liệu MYSQL Hình 7: Sơ đồ khối mạch thu thập liệu từ cảm biến 10 Hình 8: Mạch nguyên lý khối nguồn 12 Hình 9: Mạch nguyên lý thời gian thực RTC3231 13 Hình 10: Mạch in 13 Hình 11: Mạch in 14 Hình 12: mạch thu thập liệu sau hoàn thành 14 Hình 13: mạch thu thập liệu sau hoàn thành 15 Hình 14: Giao diện phần mềm nạp kết nối thành công 15 Hình 16: Sơ đồ thuật tốn lấy liệu gửi lên máy chủ 16 Hình 17: Mơ hình phân tầng hoạt động máy chủ 20 Hình 18: Các tầng liệu phần mềm viết máy chủ Netbeans 21 Hình 19: Sơ đồ thuật tốn bóc tách liệu gửi lên máy chủ 22 Hình 20: Sơ đồ thuật tốn tính tốn lưu liệu cảm biến theo thời gian, ngày, tháng, năm xuống hệ quản trị sở liệu MYSQL 23 Hình 21: Framework hibernate hỗ trợ kết nối hệ quản trị sở liệu MYSQL .24 Hình 22: Cấu trúc bảng liệu dự án hệ quản trị sở liệu MYSQL .24 Hình 23: Trường liệu bảng user với hệ quản trị sở liệu MYSQL 25 Hình 24: Trường liệu bảng role với hệ quản trị sở liệu MYSQL .25 Hình 25: Trường liệu bảng datafollowtime với hệ quản trị sở liệu MYSQL 25 Hình 26: Trường liệu bảng datafollowday với hệ quản trị sở liệu MYSQL 26 Hình 27: Trường liệu bảng datafollowmonth với hệ quản trị sở liệu MYSQL 26 Hình 28: Trường liệu bảng datafollowyear với hệ quản trị sở liệu MYSQL 27 Hình 29: Giao diện trang chủ người dùng 29 Hình 30: Giao diện trang chủ quản trị viên 29 Hình 31: Giao diện trang đăng nhập 30 Hình 32: Mơ hình MVC 32 Hình 33 : Phân chia tầng cho lập trình xử lý LOGIC SERVER (BACK – END) .33 Hình 34: Sơ đồ giải thuật xử lý đăng nhập phân quyền người dùng quản trị người dùng 34 Hình 35: Sơ đồ giải thuật xử lý lấy liệu cảm biến từ hệ quản trị sở liệu MYSQL lên website theo người dùng 35 Hình 36: Bộ thiết bị cảm biến gió 36 Hình 37: Hệ quản trị sở liệu MYSQL liệu lưu MYSQL .37 Hình 38: Biểu đồ hiển thị liệu gửi lên máy chủ thông qua website 38 DANH MỤC CÁC BẢNG Bảng 1: Cấu trúc lệnh gửi liệu lên máy chủ 17 Bảng 2: Chi tiết nội dung thông tin thiết bị gửi lên máy chủ 20 Bảng 3: Chi tiết nội dung thông tin trạng thái thiết bị thiết bị gửi lên máy chủ 20 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP CHƯƠNG TỔNG QUAN 1.1 Ngôn ngữ JAVA 1.1.1 Khái niệm Ngôn ngữ JAVA ngôn ngữ lập trình hướng tới đối tượng Ngơn ngữ JAVA cho phép chương trình chạy nhiều tảng khác Windows, UNIX, Linux mà không cần phải biên dịch lại chương trình dựa vào phương châm”VIẾT MỘT LẦN, CHẠY KHẮP MỌI NƠI”( WRITE ONCE, RUN ANYWHERE) 1.1.2 Ứng dụng ngơn ngữ lập trình JAVA Hiện nay, Ngơn ngữ lập trình JAVA sử dụng với số mục đích sau:  Tạo website có nội dung động với độ tối ưu cao (JAVA - WEB)  Xây dựng ứng dụng tảng máy tính (JAVA - SWING)  Phát triển ứng dụng cho thiết bị điện tử thông minh… 1.1.3 Phân tầng môi trường hoạt động JAVA Hình 1: Phân tầng ngơn ngữ lập trình JAVA hoạt động 1.1.4 Phần mềm lập trình 1.1.4.1 Phần mềm lập trình cho máy chủ NetBeans IDE cơng cụ hỗ trợ lập trình viết mã code miễn phí, sử dụng chủ yếu cho lập trình viên phát triển Java cơng cụ hoạt động tốt với nhiều tảng hệ điều hành khác Linux, Windows, MacOS, mã nguồn mở cung cấp tính cần thiết tạo ứng dụng thiết bị di động, desktop Hình 2: Phần mềm Netbeans sử dụng tạo máy chủ + "sensor2convert = ?, sensor3convert = ?, sensor4convert = ?, " + "timemonth = ?, timeyear = ?, idmachine = ? WHERE iddatafollowyear = ?"; ps = conn.prepareStatement(query); ps.setTimestamp(1, dataFollowAllOfItToSaveJDBC.getTimedata()); ps.setFloat(2, dataFollowAllOfItToSaveJDBC.getSensor1()); ps.setFloat(3, dataFollowAllOfItToSaveJDBC.getSensor2()); ps.setFloat(4, dataFollowAllOfItToSaveJDBC.getSensor3()); ps.setFloat(5, dataFollowAllOfItToSaveJDBC.getSensor4()); ps.setFloat(6, dataFollowAllOfItToSaveJDBC.getVoltage()); ps.setFloat(7, dataFollowAllOfItToSaveJDBC.getSensor1Convert()); ps.setFloat(8, dataFollowAllOfItToSaveJDBC.getSensor2Convert()); ps.setFloat(9, dataFollowAllOfItToSaveJDBC.getSensor3Convert()); ps.setFloat(10, dataFollowAllOfItToSaveJDBC.getSensor4Convert()); ps.setString(11, dataFollowAllOfItToSaveJDBC.getTimemonth()); ps.setString(12, dataFollowAllOfItToSaveJDBC.getTimeyear()); ps.setInt(13, dataFollowAllOfItToSaveJDBC.getIDMachine()); ps.setInt(14, ID); ps.execute(); ps.close(); break; } } } catch (SQLException ex) { Logger.getLogger(AbstractDaoImpl.class.getName()).log(Level.SEVERE, null, ex); } finally { if (conn != null) { try { conn.close(); } catch (SQLException ex) { Logger.getLogger(AbstractDaoImpl.class.getName()).log(Level.SEVERE, ex); null, } } } } } 2.5 package JDBC 2.5.1 MYSQLCONECTION.java package JDBC; import com.mysql.jdbc.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MysqlConnection { public static Connection getConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/doansensor?useSSL=false", "root", "1234"); } catch (Exception ex) { ex.printStackTrace(); } return conn; } } 2.6 package Common 2.6.1 SingletonUtil.java package sensorCommon; public class Utils { public static float changeDataConvert( float sensor){ float sensorConvert; sensorConvert = (float) (1.875*sensor); return sensorConvert; } } Mã nguồn ( code ) cho Website 3.1 Websensor – Web 3.1.1 web.jsp Trang chủ Trang ChủMenu Dịch vụ chúng tôi Tư vấn miễn phí : 082.991.9898

Hỗ trợ kỹ thuật : 24 / 7 Trung tâm bảo hành 0243.990.0389 Về chúng tôi Có kinh nghiệm 10 năm linh vực nông nghiệp điện tử
  • CÔNG TY CỔ PHẦN SÁNG TẠO BÁCH KHOA

    Có kinh nghiệm 10 năm linh vực nông nghiệp

Đội ngũ chúng tôi Minh Quang

Sinh Viên

Quang Minh

Student

Gửi tin nhắn 3.1.2 admin.jsp 3.1.3 Login.jsp Login Page ${messageResponse} Login 3.2 Websensor – Logic 3.2.1 login.java @WebServlet(urlPatterns = {"/login.html","/logout.html"}) public class LoginController extends HttpServlet { private final Logger log = Logger.getLogger(this.getClass()); ResourceBundle bundle = ResourceBundle.getBundle("ResourcesBundle"); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if (action.equals(WebConstant.LOGIN)) { RequestDispatcher rd = request.getRequestDispatcher("/views/web/login.jsp"); rd.forward(request, response); } else if(action.equals(WebConstant.LOGOUT)) { SessionUtil.getInstance().remove(request, WebConstant.LOGIN_NAME); response.sendRedirect("/home.html"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserCommand command = FormUtil.populate(UserCommand.class, request); UserDTO pojo = command.getPojo(); if (pojo != null) { CheckLogin login = SingletonServiceUtil.getUserServiceInstance().checkLogin(pojo.getUsername(), pojo.getPassword()); if (login.isUserExist()) { SessionUtil.getInstance().putValue(request, WebConstant.LOGIN_NAME, pojo.getUsername()); if (login.getRoleName().equals(WebConstant.ROLE_ADMIN)) { response.sendRedirect("/admin-home.html"); } else if (login.getRoleName().equals(WebConstant.ROLE_USER)) { response.sendRedirect("/home.html"); } } else { request.setAttribute(WebConstant.ALERT, WebConstant.TYPE_ERROR); request.setAttribute(WebConstant.MESSAGE_RESPONSE, bundle.getString("label.name.password.wrong")); RequestDispatcher rd = request.getRequestDispatcher("/views/web/login.jsp"); rd.forward(request, response); } } } } 3.2.2 ChartController.java @WebServlet(urlPatterns = {"/admin-columnchart-time.html", "/admin-columnchart-day.html", "/admin-columnchart-week.html", "/admin-columnchart-month.html", "/admin-columnchart-year.html" , "/admin-barchart-time.html", "/admin-barchart-day.html", "/admin-barchartweek.html", "/admin-barchart-month.html", "/admin-barchart-year.html" }) public class ChartController extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int actionChart = 0, parameterColum = 0, parameterBar = 0; String action = request.getParameter("urlType"); if(action != null){ actionChart = Integer.parseInt(action); switch (actionChart){ case 11: RequestDispatcher rd11 = request.getRequestDispatcher("/views/admin/chart/columnchart/columncharttime.jsp"); rd11.forward(request, response); break; case 12: RequestDispatcher rd12 = request.getRequestDispatcher("/views/admin/chart/columnchart/columnchartday.jsp"); rd12.forward(request, response); break; case 13: RequestDispatcher rd13 = request.getRequestDispatcher("/views/admin/chart/columnchart/columnchartweek.jsp"); rd13.forward(request, response); break; case 14: RequestDispatcher rd14 = request.getRequestDispatcher("/views/admin/chart/columnchart/columnchartmonth.jsp"); rd14.forward(request, response); break; case 15: RequestDispatcher rd15 = request.getRequestDispatcher("/views/admin/chart/columnchart/columnchartyear.jsp"); rd15.forward(request, response); break; case 21: RequestDispatcher rd21 = request.getRequestDispatcher("/views/admin/chart/barchart/barchartday.jsp"); rd21.forward(request, response); break; case 22: RequestDispatcher rd22 = request.getRequestDispatcher("/views/admin/chart/barchart/barchartweek.jsp"); rd22.forward(request, response); break; case 23: RequestDispatcher rd23 = request.getRequestDispatcher("/views/admin/chart/barchart/barchartmonth.jsp"); rd23.forward(request, response); break; case 24: RequestDispatcher rd24 = request.getRequestDispatcher("/views/admin/chart/barchart/barchartyear.jsp"); rd24.forward(request, response); break; } } String parameterC = request.getParameter("parameterColumn"); LocalDateTime now = LocalDateTime.now(); if(parameterC != null){ parameterColum = Integer.parseInt(parameterC); List list = new ArrayList(); Gson gson=new Gson(); OutputStream outputStream= response.getOutputStream(); DataSensorService dataSensorServiceSensor = new DataSensorServiceImpl(); switch (parameterColum){ case 111: list = (List) dataSensorServiceSensor.checkTime(1,1); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 112: list = (List) dataSensorServiceSensor.checkTime(1,2); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 113: list = (List) dataSensorServiceSensor.checkTime(1,3); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 114: list = (List) dataSensorServiceSensor.checkTime(1,4); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 121: list = (List) dataSensorServiceSensor.checkTime(2,1); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 122: list = (List) dataSensorServiceSensor.checkTime(2,2); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 123: list = (List) dataSensorServiceSensor.checkTime(2,3); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 124: list = (List) dataSensorServiceSensor.checkTime(2,4); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 131: list = (List) dataSensorServiceSensor.checkTime(3,1); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 132: list = (List) dataSensorServiceSensor.checkTime(3,2); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 133: list = (List) dataSensorServiceSensor.checkTime(3,3); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 134: list = (List) dataSensorServiceSensor.checkTime(3,4); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 141: list = (List) dataSensorServiceSensor.checkTime(4,1); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 142: list = (List) dataSensorServiceSensor.checkTime(4,2); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 143: list = (List) dataSensorServiceSensor.checkTime(4,3); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; case 144: list = (List) dataSensorServiceSensor.checkTime(4,4); response.setContentType("application/json"); outputStream.write(gson.toJson(list).getBytes()); outputStream.flush(); break; } } } } 3.2.3 UserController.java @WebServlet(urlPatterns = {"/admin-user-list.html", "/ajax-admin-user-edit.html", "/adminuser-import.html","/admin-user-import-validate.html"}) public class UserController extends HttpServlet { ResourceBundle bundle = ResourceBundle.getBundle("ResourcesBundle"); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserCommand command = FormUtil.populate(UserCommand.class, request); UserDTO pojo = command.getPojo(); if (command.getUrlType() != null && command.getUrlType().equals(WebConstant.URL_LIST)) { Map mapProperty = new HashMap(); RequestUtil.initSearchBean(request, command); Object[] objects = SingletonServiceUtil.getUserServiceInstance().findByProperty(mapProperty, command.getSortExpression(), command.getSortDirection(), command.getFirstItem(), command.getMaxPageItems()); command.setListResult((List) objects[1]); command.setTotalItems(Integer.parseInt(objects[0].toString())); request.setAttribute(WebConstant.LIST_ITEMS, command); RequestDispatcher rd = request.getRequestDispatcher("/views/admin/user/list.jsp"); rd.forward(request, response); } } } ... Từ 1 2-3 0VDC • Điện áp đầu vào DI Mức cao: từ 1 2-2 4VDC Mức thấp: từ 0-1 VDC • Dịng vào AI Từ 0-2 0mA 4-2 0mA • Đầu vào đọc xung Áp vào: - Mức cao 1 2-2 4VDC - Mức thấp 0-1 VDC Đáp ứng tần số: Từ 0-1 (KHz)... pin lượng mặt trời) • 01 Anten GSM • 01 COM Debug • 02 Led báo trạng thái, led-green báo nguồn(Power), led-red báo trạng thái kết nối mạng: 1giây sáng/1 giây tắt kết nối, giây sáng/1 giây tắt... Khoảng cách kết nối 0-8 00m, kết nối tốt 0-5 00m Chuẩn giao tiếp Modbus RTU, tốc độ 1200, 2400, 4800, 9600,19200(bps) • Cổng VBAT Giải điện áp đo 0-3 0VDC • Antena GSM giải tần 85 0-1 900MHZ • SIM thẻ

Ngày đăng: 18/12/2021, 03:04

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    Ngành Vật Lý Kỹ Thuật

    BÁCH KHOA - 5 năm một chặng đường!

    DANH MỤC HÌNH ẢNH

    1.1.2 Ứng dụng của ngôn ngữ lập trình JAVA

    1.1.3 Phân tầng môi trường hoạt động của JAVA

    1.1.4 Phần mềm lập trình

    1.1.4.1 Phần mềm lập trình cho máy chủ

    1.1.4.2 Phần mềm lập trình cho website

    1.2 Giao thức TCP / IP

    1.2.3 Tầng giao vận (Transport)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w