JavaRush /Java-Blog /Random-DE /Wir schließen Kontakte und erhalten einen Brief
Izhak
Level 22
Москва

Wir schließen Kontakte und erhalten einen Brief

Veröffentlicht in der Gruppe Random-DE
Guten Tag, ich möchte meine Erfahrungen mit der Erstellung einer Anwendung teilen, die das Schließen der Pins 7 und 8 an einem normalen chinesischen USB-COM-Adapter (RTS - CTS) überwacht. Und wenn so etwas passiert, schickt er mir eine E-Mail. Ursprünglich bestand das Ziel darin, einen Wasserdurchflusssensor herzustellen. Was später mit der Schließung geschehen soll, ist im Großen und Ganzen unwichtig, aber ich wollte den Staat auf die Post schicken. Da ich Java mit JavaRush lerne, wurde das passende Tool ausgewählt – IntelliJ Idea. Natürlich ist E-Mail keine SMS, aber SMS erfordert die Arbeit mit einem COM-Port, und hier lernen wir ein sehr gutes Tool dafür kennen, und wenn ich das 3G-Modem herausgefunden habe, kann ich ein paar Informationen hinzufügen, obwohl es bereits eines gibt Vieles davon im Internet. Konzentrieren wir uns also nicht auf den Hardware-Teil, sondern schauen wir uns den Stecker selbst an DB9F . Pin 5 ist Masse, Pin 7 ist RTS – in unserem Programm hängt immer 1 daran (+ 9 V relativ zu Pin 5) und Pin 8 ist der Eingang – er wird durch einen 5-Kilo-Ohm-Widerstand auf 0 V hochgezogen. Es muss gesagt werden, dass die Spannung an Pin 7 -9 V beträgt, wenn unser Programm nicht läuft. Dies muss bei der Eingabe berücksichtigt werden Nehmen Sie einen Überlaufsensor, Sie können ihn an Pin 8 anschließen, aber es gibt Geräte, die durch negative Spannungen brennen. Um zu überprüfen, wie unser Programm funktioniert, schließen wir nach dem Start Kontakt 7 bis Kontakt 8, unser Programm überwacht einmal pro Sekunde ein solches Ereignis, sendet einen Brief mit dem Text „Puddle“ und öffnet ihn dann – und Das Programm sendet einen Brief mit dem Text „Pfütze“. Es gibt keine Pfütze.“ Um also JDK und IntelliJ Idea zu installieren und einige Java-Grundlagen zu erlernen, können Sie die ersten Lektionen von JavaRush.ru nutzen. Wir beginnen mit der Erstellung eines neuen Projekts. Lassen Sie mich gleich eine Reservierung vornehmen: Wenn Sie bereits ein Projekt geöffnet haben, werden Sie beim Erstellen eines neuen Projekts aufgefordert, es in einem neuen Fenster zu öffnen – sehr praktisch. (Ich habe einmal versucht, mit Eclipse zu arbeiten, wo alle Projekte in einem Fenster geöffnet werden). Als nächstes gebe ich viele Bilder ohne Beschreibungen - und so ist alles klar. Wir schließen die Kontakte und erhalten einen Brief - 1 Wir schließen die Kontakte und erhalten einen Brief - 2 Wir schließen die Kontakte und erhalten einen Brief - 2 Wir schließen die Kontakte und erhalten einen Brief - 4 Wir schließen die Kontakte und erhalten einen Brief - 3 Wir schließen die Kontakte und erhalten einen Brief - 6 Wir schließen die Kontakte und erhalten einen Brief - 4 Wir schließen die Kontakte und erhalten einen Brief - 8 Wir schließen die Kontakte und erhalten einen Brief - 5 Beginnend mit dem nächsten Bild ist es sehr interessant – ich habe diesen Maven immer gesehen, hatte aber Angst, etwas damit anzufangen, aber dann habe ich es versucht – und alles stellte sich als sehr einfach heraus – wenn Sie eine Bibliothek brauchen, dann einfach Geben Sie den Namen ein, suchen Sie nach der neuesten Version und laden Sie sie herunter. Sehen. Wir laden die Bibliothek http://habrahabr.ru/post/133766/ jSSC und die javax:mail-Bibliothek herunter – soweit ich weiß, wurde sie aus der Standardliste der Bibliotheken entfernt, kann aber in Maven einfach heruntergeladen werden. Wir schließen die Kontakte und erhalten einen Brief - 6 Wir schließen die Kontakte und erhalten einen Brief - 11 Wir schließen die Kontakte und erhalten einen Brief - 7 Wir schließen die Kontakte und erhalten einen Brief - 13 Wir schließen die Kontakte und erhalten einen Brief - 8 Klicken Sie auf OK und die Bibliotheken werden hinzugefügt. Voila :) Wir schließen die Kontakte und erhalten einen Brief - 9 Geben Sie den Text ein. 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 не меняется- можно это использовать Wie выход +-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 // Создаем Adresseа отправителя и прлучателя 76 InternetAddress from = new InternetAddress("*****@yandex.ru", "From"); 77 InternetAddress to = new InternetAddress("****@****.ru", "To"); 78 // Далее создаем т.н. транспорт с определенными параметрами, который 79 // будет "заниматься" отправкой Mitteilungen 80 Properties props = new Properties(); 81 // Тип протокола, Adresse 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 Legen Sie die vorhandenen Adressen und Passwörter fest (übrigens ist es interessant, dass in der Hilfe zu Yandex zu SMTP über Port 465 geschrieben steht, aber im Internet habe ich Port 25 gefunden - und das hat sich als richtig herausgestellt ). Beginnen wir mit der Ausführung. Wir schließen die Kontakte 7 und 8, nach drei Sekunden lassen wir 1 los – die Kontakte sind geschlossen, der Brief „Puddle“ wird gesendet, 0 – die Kontakte sind offen – der Brief „No Puddle“ wird gesendet. Das steht in meiner Wir schließen die Kontakte und erhalten einen Brief - 10 Mail Wir schließen die Kontakte und erhalten einen Brief - 17 Wir schließen die Kontakte und erhalten einen Brief - 11 Wir schließen die Kontakte und erhalten einen Brief - 19 Jetzt möchte ich eine Bewerbung haben. Während ich das Material studierte, weinte ich – ist es wirklich notwendig, eine Manifestdatei zu erstellen, einen Klassen-Patch zu registrieren ... eine schreckliche Sache. Skipy beschreibt das alles. Ich hätte fast aufgegeben, aber in den Schubladen meines Küchenschreibtisches waren längst keine Lochkarten mehr, und wir hatten eine Idee, also habe ich ganz einfach ein Glasarchiv erstellt – schauen Sie. Wir schließen die Kontakte und erhalten einen Brief - 12 Wir schließen die Kontakte und erhalten einen Brief - 21 Wir schließen die Kontakte und erhalten einen Brief - 13 Aktivieren Sie das Kontrollkästchen „Build on Make“ – nach der nächsten Kompilierung in der Idee befindet sich das Ergebnis im Out-Ordner. Wir schließen die Kontakte und erhalten einen Brief - 14 Alles ist glasklar und so unabhängig, dass es auf jeden Fall innerhalb der Maschine von überall kopiert und gestartet werden kann. Wir schließen die Kontakte und erhalten einen Brief - 15 Wenn Sie es jedoch einfach ausführen, werden die Briefe gesendet, es gibt jedoch keine Konsole, und Sie können den Vorgang nur abbrechen, indem Sie einen solchen Eintrag im Task-Manager finden. Wir schließen die Kontakte und erhalten einen Brief - 16 Wir übertragen es in einen anderen Ordner, von dort aus startet es auch und erstellt eine Bat-Datei. Wir schließen die Kontakte und erhalten einen Brief - 17 Wir schließen die Kontakte und erhalten einen Brief - 27 Starten Sie die Batch- Datei Wir schließen die Kontakte und erhalten einen Brief - 18 Wir schließen die Kontakte und erhalten einen Brief - 29 . Hier ist die Konsole und mit Strg + C eine Aufforderung zum Beenden. Wir schließen die Kontakte und erhalten einen Brief - 19 Wir schließen die Kontakte und erhalten einen Brief - 31 Wenn Sie das JAR jedoch zweimal ausführen, funktioniert das zweite Mal nicht – der COM-Port ist belegt. Daher empfiehlt es sich, einen einmaligen Antrag zu stellen. Wir installieren Launch4j, starten es, wählen die Ausgabedatei aus – beliebiger Name, es sollte exe im Hauptfenster sein, dann unser JAR, wählen den Konsolentyp, Mindestversion 1.4.0. Wir geben an, dass wir nicht viele Kopien benötigen. Klicken Wir schließen die Kontakte und erhalten einen Brief - 20 Wir schließen die Kontakte und erhalten einen Brief - 33 Wir schließen die Kontakte und erhalten einen Brief - 21 Wir schließen die Kontakte und erhalten einen Brief - 35 Sie Wir schließen die Kontakte und erhalten einen Brief - 22 Wir schließen die Kontakte und erhalten einen Brief - 37 auf Knopf mit dem Zahnrad Wir schließen die Kontakte und erhalten einen Brief - 23 Wir werden gefragt, wo temporäre Dateien gespeichert werden, wir antworten Wir schließen die Kontakte und erhalten einen Brief - 24 Wir schließen die Kontakte und erhalten einen Brief - 40 Good Lak – alles ist bereit. Lassen Sie uns die ausführbare Datei starten. Wir schließen die Kontakte und erhalten einen Brief - 25 Stimmt, im Dispatcher wird es immer noch unter javaw ausgeführt. Wir schließen die Kontakte und erhalten einen Brief - 26 Briefe kommen Wir schließen die Kontakte und erhalten einen Brief - 43 . Solche Dinge mochte ich in Java. PS. Das beste mechanische Mittel zur Überwachung von Lecks ist http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Die Konsolenausgabe stürzt das Programm nach einer bestimmten Anzahl von Zeilen ab. Wenn Sie diesen Algorithmus also plötzlich wiederholen, vergessen Sie nicht, die Konsolenausgabe zu deaktivieren.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION