Chào buổi chiều, tôi xin chia sẻ kinh nghiệm tạo ứng dụng giám sát việc đóng chân 7 và 8 trên bộ chuyển đổi USB-COM thông thường của Trung Quốc (RTS - CTS). Và nếu một sự kiện như vậy xảy ra, anh ấy sẽ gửi email cho tôi.
Ban đầu, mục tiêu là chế tạo cảm biến lưu lượng nước. Việc phải làm gì với việc đóng cửa sau này nhìn chung không quan trọng, nhưng tôi muốn gửi tiểu bang đến bưu điện. Vì tôi đang học Java bằng JavaRush nên công cụ thích hợp đã được chọn – IntelliJ Idea. Tất nhiên, thư không phải là SMS, nhưng SMS yêu cầu làm việc với cổng com và ở đây chúng ta sẽ tìm hiểu một công cụ rất tốt cho việc này và khi tôi tìm ra modem 3G, tôi có thể thêm một ít thông tin, mặc dù đã có sẵn rất nhiều trên Internet. Vì vậy, chúng ta đừng tập trung vào phần cứng, hãy nhìn vào chính đầu nối
... Chân 5 nối đất, chân 7 là RTS - trong chương trình của chúng ta sẽ luôn có 1 chân treo trên đó (+ 9 V so với chân 5) và chân 8 là đầu vào - nó được điện trở 5 kilo-ohm kéo lên 0 V. Phải nói rằng khi chương trình của chúng ta không chạy, điện áp trên chân 7 sẽ là -9 V, điều này phải được tính đến khi bạn lấy cảm biến tràn thì có thể áp vào chân 8 nhưng có những thiết bị cháy do điện áp âm. Vì vậy, để kiểm tra xem chương trình của chúng tôi sẽ hoạt động như thế nào, sau khi khởi chạy nó, chúng tôi sẽ đóng liên hệ 7 đến liên hệ 8, chương trình của chúng tôi sẽ theo dõi sự kiện như vậy mỗi giây một lần và gửi một lá thư có nội dung “Puddle”, sau đó mở nó - và chương trình sẽ gửi một lá thư có nội dung “Puddle”. Không có vũng nước nào cả.” Vì vậy, để cài đặt JDK và IntelliJ Idea cũng như tìm hiểu một số kiến thức cơ bản về java, bạn có thể sử dụng các bài học đầu tiên của JavaRush.ru. Chúng ta sẽ bắt đầu bằng cách tạo một dự án mới. Cho mình đặt chỗ ngay nhé nếu bạn đã mở dự án rồi thì khi tạo dự án mới bạn sẽ được yêu cầu mở dự án đó trong cửa sổ mới - rất tiện lợi. (Tôi đã từng thử làm việc với Eclipse, nơi tất cả các dự án đều mở trong một cửa sổ). Tiếp theo, tôi đưa ra rất nhiều hình ảnh mà không có mô tả - và thế là mọi thứ đều rõ ràng.
Bắt đầu với bức ảnh tiếp theo, nó rất thú vị - tôi đã luôn nhìn thấy maven này, nhưng sợ phải làm gì đó với nó, nhưng sau đó tôi đã thử nó - và mọi thứ trở nên rất đơn giản - nếu bạn cần một thư viện, bạn chỉ cần nhập tên của nó, tìm phiên bản mới nhất và tải xuống. Nhìn. Chúng tôi tải xuống thư viện http://habrahabr.ru/post/133766/ jSSC Và thư viện javax:mail - theo tôi hiểu, nó đã bị xóa khỏi danh sách thư viện tiêu chuẩn, nhưng rất dễ tải xuống trong Maven.
Nhấn OK và các thư viện sẽ được thêm vào. Thì đấy :)
Nhập văn bản
tôi
Bây giờ tôi muốn có một ứng dụng. Ở đây, khi đang nghiên cứu tài liệu, tôi đã khóc - có thực sự cần thiết phải tạo một tệp kê khai, đăng ký một bản vá lớp... một điều khủng khiếp. Skipy mô tả tất cả điều này. Tôi gần như bỏ cuộc, nhưng trong ngăn kéo bàn bếp của tôi từ lâu đã không có thẻ đục lỗ, và chúng tôi nảy ra một ý tưởng, vì vậy tôi đã làm một kho lưu trữ lọ rất đơn giản - nhìn này.
Chọn hộp Build on Make - sau lần biên dịch tiếp theo trong ý tưởng, kết quả sẽ nằm trong thư mục out.
Mọi thứ đều hoàn hảo và độc lập đến mức trong mọi trường hợp, bên trong máy, nó được sao chép và khởi chạy từ bất cứ đâu.
Nhưng nếu bạn chỉ chạy nó, thì các chữ cái sẽ được gửi đi, nhưng sẽ không có bảng điều khiển và bạn chỉ có thể kết thúc tiến trình bằng cách tìm một mục như vậy trong trình quản lý tác vụ.
Chúng ta chuyển nó sang một thư mục khác, từ đó nó cũng khởi động và tạo một tập tin bat.
Khởi chạy tập tin batch
... Đây là bảng điều khiển và sử dụng Ctrl + C - một yêu cầu thoát.
Nhưng nếu bạn chạy jar hai lần, lần thứ hai sẽ không hoạt động - cổng com sẽ bận. Vì vậy, nên làm một ứng dụng duy nhất. Chúng tôi cài đặt Launch4j, khởi chạy nó, chọn tệp đầu ra - bất kỳ tên nào, nó phải là exe trong cửa sổ chính, sau đó là jar của chúng tôi, chọn loại bảng điều khiển, phiên bản tối thiểu 1.4.0 Chúng tôi cho biết rằng chúng tôi không cần nhiều bản sao
Nhấp
vào nút bằng bánh răng
Chúng tôi được hỏi nơi lưu trữ các tập tin tạm thời, chúng tôi trả lời
Good Lak - mọi thứ đã sẵn sàng. Hãy khởi chạy tệp thực thi.
Đúng, trong bộ điều phối nó vẫn sẽ được thực thi theo javaw.
Những bức thư đang đến
Những thứ như vậy, tôi thích Java. Tái bút. Công cụ cơ học tốt nhất để theo dõi rò rỉ là http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Đầu ra của bàn điều khiển làm chương trình bị treo sau một số dòng nhất định, vì vậy nếu bạn đột ngột lặp lại thuật toán này, đừng quên tắt đầu ra của bàn điều khiển.
![DB9F](https://cdn.javarush.com/images/article/6df7dcd6-b5da-4732-a233-a3dbce2918e0/256.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 1](https://cdn.javarush.com/images/article/6c28c92f-510a-43bf-b875-5c0ec9cb03da/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 2](https://cdn.javarush.com/images/article/ad038c56-5ab4-4104-b18a-0d37dc2f5c99/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 2](https://cdn.javarush.com/images/article/a190430c-b103-45d0-bd7c-507bbd9e9296/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 4](https://cdn.javarush.com/images/article/1df6a206-786d-4c0d-84ba-82197a2ba403/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 3](https://cdn.javarush.com/images/article/bd913fce-ac0e-414f-b05d-6bdc1ae11f8b/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 6](https://cdn.javarush.com/images/article/2f690730-a7fa-4668-a6ca-001476092794/256.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 4](https://cdn.javarush.com/images/article/cff824a4-45a4-40c1-b2c7-b9ac55939280/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 8](https://cdn.javarush.com/images/article/0b698376-2442-48db-a0fa-185c7bb79bef/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 5](https://cdn.javarush.com/images/article/e2e9b3c7-5449-4573-9f5d-6c90f6bfbccb/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 6](https://cdn.javarush.com/images/article/ee1e82e7-6531-45b3-812e-0aa7c99cd44a/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 11](https://cdn.javarush.com/images/article/ccd2f06e-241f-4b70-9891-d2493f6ab2df/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 7](https://cdn.javarush.com/images/article/47797952-7dd0-4253-88f8-ce797ed2649b/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 13](https://cdn.javarush.com/images/article/a5d36dee-ae41-4060-b3da-d3475fb48c9b/256.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 8](https://cdn.javarush.com/images/article/749cc3d7-a5fb-4a1d-9e59-7a6152e7cc57/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 9](https://cdn.javarush.com/images/article/c638d477-fbc0-404e-a2de-d883e9da0c97/512.jpeg)
comRun.java 1 package ru.example.comTest.Test1; 2 3 import jssc.*; 4 5 import java.io.UnsupportedEncodingException; 6 import java.util.Properties; 7 import javax.mail.*; 8 import javax.mail.internet.*; 9 10 /** 11 * Created by ipolma on 8/12/2014. 12 */ 13 14 public class comRun { 15 16 17 private static SerialPort serialPort; 18 19 public static void main(String[] args) { 20 21 22 String[] retPorts = SerialPortList.getPortNames(); 23 //for (String port: retPorts){System.out.println(port);} 24 25 serialPort = new SerialPort(retPorts[1]);//"COM4"); указываем второй порт 26 System.out.println(serialPort.getPortName()); 27 try { 28 //Открываем порт 29 if (serialPort.isOpened()) serialPort.closePort(); //Здесь бывает ситуация Busy, которую не обработаешь - только если ожидать 30 serialPort.openPort(); 31 //Выставляем параметры 32 serialPort.setParams(SerialPort.BAUDRATE_9600, 33 SerialPort.DATABITS_8, 34 SerialPort.STOPBITS_1, 35 SerialPort.PARITY_NONE); 36 //Включаем аппаратное управление потоком 37 serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | 38 SerialPort.FLOWCONTROL_RTSCTS_OUT); 39 40 int tempData0 = 0; 41 42 while(true){ 43 Thread.sleep(1000); 44 int[] data = serialPort.getLinesStatus();//readString(event.getEventValue()); 45 //7 и 8 контакты замыкаются - 1010 46 //разомкнуты - 0010 47 //7 и 6 контакты замыкаются - 0110 48 //data[0] - 12 В на 8 (CTS) 49 //data[1] - 12 В на 6 (DCE) 50 //serialPort.setDTR(status); //Меняется напряжение только на 4 контакте - но и это хорошо 51 //serialPort.setRTS(status); // На 7 не меняется- можно это использовать How выход +-7В. 52 53 if (data[0] == 1){ 54 tempData0 = 1; 55 sendEmail("Лужа"); 56 System.out.println("1"); 57 } 58 if (data[0] == 0 && tempData0 == 1){ 59 tempData0 =0; 60 System.out.println("0"); 61 sendEmail("Нет лужи"); 62 } 63 } 64 } 65 catch (SerialPortException ex) { 66 System.out.println(ex); 67 } 68 catch (InterruptedException ty){} 69 70 } 71 72 private static void sendEmail(String text){ 73 74 try { 75 // Создаем address отправителя и прлучателя 76 InternetAddress from = new InternetAddress("*****@yandex.ru", "From"); 77 InternetAddress to = new InternetAddress("****@****.ru", "To"); 78 // Далее создаем т.н. транспорт с определенными параметрами, который 79 // будет "заниматься" отправкой messages 80 Properties props = new Properties(); 81 // Тип протокола, address serverа и номер порта 82 props.put("mail.transport.protocol", "smtp"); 83 props.put("mail.smtp.host", "smtp.yandex.ru"); 84 props.put("mail.smtp.port", "25"); 85 Session session = Session.getDefaultInstance(props); 86 Transport transport = session.getTransport(); 87 // Теперь создаем сообщение 88 MimeMessage message = new MimeMessage(session); 89 message.setText(text, "utf-8"); 90 message.setFrom(from); 91 message.setRecipient(Message.RecipientType.TO, to); 92 message.setSubject("Тема", "utf-8"); 93 // При подключении указываем параметры для smtp serverа: логин и пароль 94 transport.connect("*****@yandex.ru", "**Password***"); 95 transport.sendMessage(message, new Address[]{to}); 96 transport.close(); 97 } catch (UnsupportedEncodingException ex) { 98 ex.printStackTrace(); 99 } catch (NoSuchProviderException ex) { 100 ex.printStackTrace(); 101 } catch (MessagingException ex) { 102 ex.printStackTrace(); 103 } 104 } 105 106 } 107
Đặt địa chỉ và mật khẩu hiện có (nhân tiện, thật thú vị khi trong trợ giúp trên Yandex về smtp nó viết về cổng 465, nhưng trên Internet tôi đã tìm thấy cổng 25 - và điều này hóa ra là chính xác ). Hãy bắt đầu thực hiện. Chúng tôi đóng các liên hệ 7 và 8, sau ba giây chúng tôi nhả 1 – các liên hệ đã đóng, chữ “Puddle” được gửi, 0 – các liên hệ đang mở – thư “No Puddle” được gửi. Đây là những gì có trong thư của
![Chúng tôi đóng liên lạc và nhận được một lá thư - 10](https://cdn.javarush.com/images/article/3d85c151-6c8e-460f-930c-e42ac86db52e/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 17](https://cdn.javarush.com/images/article/22db24ee-eb30-4427-b39c-ca93f90a849b/256.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 11](https://cdn.javarush.com/images/article/a04ea562-e129-4c3e-a676-bf9ad8277c43/256.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 19](https://cdn.javarush.com/images/article/b70ddc7c-f8af-4337-be00-d8f68b732700/256.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 12](https://cdn.javarush.com/images/article/93341a0c-6a77-4437-a107-57fe54fed28a/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 21](https://cdn.javarush.com/images/article/8e673df7-7df3-40fa-92a3-b56fb90f1edd/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 13](https://cdn.javarush.com/images/article/71ed632c-82ba-4531-b063-3674ff46705e/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 14](https://cdn.javarush.com/images/article/105d9d4f-37c9-400c-9e11-9755847df7a2/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 15](https://cdn.javarush.com/images/article/31e60b53-2a12-4aa4-a292-8014b14bea2b/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 16](https://cdn.javarush.com/images/article/e01cfba1-4824-4d15-87c6-2e17f946cab7/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 17](https://cdn.javarush.com/images/article/0fb678c3-07fd-4854-bf66-d11c49a1e60c/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 27](https://cdn.javarush.com/images/article/a76ec27a-23b3-4fce-8311-fe70374466b3/original.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 18](https://cdn.javarush.com/images/article/65e61c61-39dd-44ee-ad6e-c7d64000cfa8/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 29](https://cdn.javarush.com/images/article/a18073ce-c908-4b07-bea1-3fc903b73649/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 19](https://cdn.javarush.com/images/article/6bb4ba31-2e5e-4625-a7fb-845df6d9d863/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 31](https://cdn.javarush.com/images/article/1a2da269-650d-4fa7-909b-d202516f5a3e/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 20](https://cdn.javarush.com/images/article/13770a99-53c8-4734-8387-b27491f159bc/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 33](https://cdn.javarush.com/images/article/0658eb08-cd26-433f-89be-eacfdda82b9b/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 21](https://cdn.javarush.com/images/article/83627373-b790-4094-abd0-43c5d0582065/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 35](https://cdn.javarush.com/images/article/e12f7ebb-d100-4757-927b-cf552cc088aa/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 22](https://cdn.javarush.com/images/article/4e605af3-ac74-4626-9fc0-a1028ace4749/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 37](https://cdn.javarush.com/images/article/6ef52b2f-7bfd-470c-9851-d5c9f44ecd38/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 23](https://cdn.javarush.com/images/article/cd2f5173-8518-4e56-b489-3861994fda05/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 24](https://cdn.javarush.com/images/article/0e12c2aa-6aeb-4e0c-a3e5-876eb61a4d31/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 40](https://cdn.javarush.com/images/article/ff00a977-6e98-4c29-9a6c-d8199f217a69/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 25](https://cdn.javarush.com/images/article/39a75990-ef3e-4b53-a31f-8b8a7e25a0e3/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 26](https://cdn.javarush.com/images/article/439f7c02-8c50-4325-9d90-c1963658926d/512.jpeg)
![Chúng tôi đóng liên lạc và nhận được một lá thư - 43](https://cdn.javarush.com/images/article/73162db8-3e2e-49fb-83cd-2b4171e6c5ab/256.jpeg)
GO TO FULL VERSION