JavaRush /Blog Java /Random-PL /Zamykamy kontakty i otrzymujemy list
Izhak
Poziom 22
Москва

Zamykamy kontakty i otrzymujemy list

Opublikowano w grupie Random-PL
Dzień dobry, chciałbym podzielić się swoim doświadczeniem w tworzeniu aplikacji monitorującej zwarcie pinów 7 i 8 na zwykłej chińskiej przejściówce USB-COM (RTS - CTS). A jeśli takie zdarzenie nastąpi, wysyła mi e-mail. Początkowo celem było wykonanie czujnika przepływu wody. Co zrobić z zamknięciem później, w zasadzie jest to nieistotne, ale chciałem wysłać stan na pocztę. Ponieważ uczę się Javy przy pomocy JavaRush, wybrano odpowiednie narzędzie – IntelliJ Idea. Oczywiście poczta to nie SMS, ale SMS wymaga pracy z portem com i tutaj nauczymy się do tego bardzo dobrego narzędzia, a kiedy wymyślę modem 3G, mogę dodać trochę informacji, chociaż jest już dużo tego w internecie. Zatem nie skupiajmy się na części sprzętowej, spójrzmy na samo złącze.Pin DB9F 5 to masa, pin 7 to RTS - w naszym programie wisi na nim zawsze 1 (+9 V względem pinu 5), a pin 8 to wejście - jest podciągnięte przez rezystor 5 kiloomów do 0 V. Trzeba powiedzieć, że gdy nasz program nie jest uruchomiony, napięcie na pinie 7 będzie wynosić -9 V, należy to wziąć pod uwagę przy weź czujnik wycieku, możesz go podłączyć do pinu 8, ale są urządzenia, które palą się od napięć ujemnych. Czyli żeby sprawdzić jak będzie działać nasz program, po jego uruchomieniu zamkniemy kontakt 7 z kontaktem 8, nasz program będzie co sekundę monitorował takie zdarzenie i wysyłał list z tekstem „Kałuża”, po czym go otwierał – i program wyśle ​​list o treści „Kałuża”. Nie ma kałuży.” Aby więc zainstalować JDK i IntelliJ Idea i nauczyć się podstaw Java, możesz skorzystać z pierwszych lekcji JavaRush.ru. Zaczniemy od stworzenia nowego projektu. Od razu zastrzegam, że jeśli masz już otwarty projekt, to przy tworzeniu nowego projektu zostaniesz poproszony o otwarcie go w nowym oknie – to bardzo wygodne. (Kiedyś próbowałem pracować z Eclipse, gdzie wszystkie projekty otwierają się w jednym oknie). Następnie daję dużo zdjęć bez opisów - i tak wszystko jest jasne. Zamykamy kontakty i otrzymujemy list - 1 Zamykamy kontakty i otrzymujemy list - 2 Zamykamy kontakty i otrzymujemy list - 2 Zamykamy kontakty i otrzymujemy list - 4 Zamykamy kontakty i otrzymujemy list - 3 Zamykamy kontakty i otrzymujemy list - 6 Zamykamy kontakty i otrzymujemy list - 4 Zamykamy kontakty i otrzymujemy list - 8 Zamykamy kontakty i otrzymujemy list - 5 Zaczynając od następnego obrazka, jest to bardzo interesujące - zawsze widziałem tego mavena, ale bałem się coś z tym zrobić, ale potem spróbowałem - i wszystko okazało się bardzo proste - jeśli potrzebujesz biblioteki, po prostu wpisz jego nazwę, poszukaj najnowszej wersji i pobierz. Patrzeć. Pobieramy bibliotekę http://habrahabr.ru/post/133766/ jSSC Oraz bibliotekę javax:mail - jak rozumiem, została usunięta ze standardowej listy bibliotek, ale można ją łatwo pobrać w Maven. Zamykamy kontakty i otrzymujemy list - 6 Zamykamy kontakty i otrzymujemy list - 11 Zamykamy kontakty i otrzymujemy list - 7 Zamykamy kontakty i otrzymujemy list - 13 Zamykamy kontakty i otrzymujemy list - 8 Kliknij OK, a biblioteki zostaną dodane. Voila :) Zamykamy kontakty i otrzymujemy list - 9 Wpisz tekst 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 не меняется- можно это использовать Jak выход +-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 // Создаем adresа отправителя и прлучателя 76 InternetAddress from = new InternetAddress("*****@yandex.ru", "From"); 77 InternetAddress to = new InternetAddress("****@****.ru", "To"); 78 // Далее создаем т.н. транспорт с определенными параметрами, который 79 // будет "заниматься" отправкой wiadomości 80 Properties props = new Properties(); 81 // Тип протокола, adres serwerа и номер порта 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 serwerа: логин и пароль 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 Ustaw istniejące adresy i hasła (nawiasem mówiąc, ciekawe, że w pomocy Yandexa o smtp jest napisane o porcie 465, ale w Internecie znalazłem port 25 - i to okazało się poprawne ). Rozpocznijmy egzekucję. Zamykamy styki 7 i 8, po trzech sekundach puszczamy 1 – styki są zamknięte, wysyłana jest litera „Kałuża”, 0 – styki otwarte – wysyłana jest litera „Bez kałuży”. Oto co mam w Zamykamy kontakty i otrzymujemy list - 10 poczcie Zamykamy kontakty i otrzymujemy list - 17 Zamykamy kontakty i otrzymujemy list - 11 Zamykamy kontakty i otrzymujemy list - 19 Teraz chcę mieć aplikację. Tutaj, studiując materiał, płakałam – czy naprawdę trzeba tworzyć plik manifestu, rejestrować łatkę klasową… straszna rzecz. Skipy opisuje to wszystko. Prawie się poddałam, ale w szufladach mojego biurka w kuchni już dawno nie było kart dziurkowanych, a wpadliśmy na pomysł, więc zrobiłam archiwum ze słoików w bardzo prosty sposób – spójrzcie. Zamykamy kontakty i otrzymujemy list - 12 Zamykamy kontakty i otrzymujemy list - 21 Zamykamy kontakty i otrzymujemy list - 13 Zaznacz pole Build on Make - po kolejnej kompilacji z pomysłem wynik znajdzie się w folderze out. Zamykamy kontakty i otrzymujemy list - 14 Wszystko jest w słoiku i jest tak niezależne, że w każdym razie w obrębie maszyny jest kopiowane i uruchamiane z dowolnego miejsca. Zamykamy kontakty i otrzymujemy list - 15 Ale jeśli po prostu go uruchomisz, listy zostaną wysłane, ale nie będzie konsoli i możesz zabić proces tylko poprzez znalezienie takiego wpisu w menedżerze zadań. Zamykamy kontakty i otrzymujemy list - 16 Przenosimy go do innego folderu, stamtąd również się uruchamia i tworzymy plik bat.Uruchamiamy plik Zamykamy kontakty i otrzymujemy list - 17 Zamykamy kontakty i otrzymujemy list - 27 wsadowy.Oto Zamykamy kontakty i otrzymujemy list - 18 Zamykamy kontakty i otrzymujemy list - 29 konsola i za pomocą Ctrl + C - żądanie wyjścia. Zamykamy kontakty i otrzymujemy list - 19 Zamykamy kontakty i otrzymujemy list - 31 Ale jeśli uruchomisz jar dwa razy, drugi raz nie zadziała - port com będzie zajęty. Dlatego wskazane jest złożenie jednego wniosku. Instalujemy Launch4j, uruchamiamy go, wybieramy plik wyjściowy - nazwa dowolna, w głównym oknie ma być exe, następnie nasz jar, wybieramy typ konsoli, wersja minimalna 1.4.0. Wskazujemy, że nie potrzebujemy wielu kopii. Zamykamy kontakty i otrzymujemy list - 20 Zamykamy kontakty i otrzymujemy list - 33 Zamykamy kontakty i otrzymujemy list - 21 Zamykamy kontakty i otrzymujemy list - 35 Kliknij Zamykamy kontakty i otrzymujemy list - 22 Zamykamy kontakty i otrzymujemy list - 37 na przycisk z zębatką Zamykamy kontakty i otrzymujemy list - 23 Na pytanie, gdzie przechowywać pliki tymczasowe, odpowiadamy Zamykamy kontakty i otrzymujemy list - 24 Zamykamy kontakty i otrzymujemy list - 40 Dobry Lak – wszystko gotowe. Uruchommy plik wykonywalny. Zamykamy kontakty i otrzymujemy list - 25 To prawda, że ​​w dyspozytorze będzie to nadal wykonywane w javaw. Zamykamy kontakty i otrzymujemy list - 26 Nadchodzą listy. Zamykamy kontakty i otrzymujemy list - 43 Takie rzeczy, lubiłem Javę. PS. Najlepszą mechaniczną rzeczą do monitorowania wycieków jest http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Dane wyjściowe konsoli powodują awarię programu po określonej liczbie wierszy, więc jeśli nagle powtórzysz ten algorytm, nie zapomnij wyłączyć wyjścia konsoli.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION