JavaRush /Blog Java /Random-FR /Nous fermons les contacts et recevons une lettre
Izhak
Niveau 22
Москва

Nous fermons les contacts et recevons une lettre

Publié dans le groupe Random-FR
Bonjour, je voudrais partager mon expérience de création d'une application qui surveille la fermeture des broches 7 et 8 sur un adaptateur USB-COM chinois classique (RTS - CTS). Et si un tel événement se produit, il m'envoie un email. Initialement, l'objectif était de réaliser un capteur de débit d'eau. Que faire de la fermeture plus tard n'a, dans l'ensemble, pas d'importance, mais je voulais envoyer l'État à la poste. Depuis que j'apprends Java à l'aide de JavaRush, l'outil approprié a été choisi : IntelliJ Idea. Bien sûr, le courrier n'est pas des SMS, mais les SMS nécessitent de travailler avec un port COM, et ici nous apprendrons un très bon outil pour cela, et quand j'aurai compris le modem 3G, je pourrai ajouter un peu d'informations, bien qu'il existe déjà un beaucoup de choses sur Internet. Alors, ne nous concentrons pas sur la partie matérielle, regardons le connecteur lui-même DB9F ... La broche 5 est la masse, la broche 7 est RTS - dans notre programme, il y en aura toujours 1 accroché (+ 9 V par rapport à la broche 5), et la broche 8 est l'entrée - elle est tirée par une résistance de 5 kilo-ohms jusqu'à 0 V. Il faut dire que lorsque notre programme ne fonctionne pas, la tension sur la broche 7 sera de -9 V, cela doit être pris en compte lorsque vous prenez un capteur de déversement, vous pouvez l'appliquer à la broche 8, mais il existe des appareils qui brûlent à partir de tensions négatives. Ainsi, pour vérifier le fonctionnement de notre programme, après l'avoir lancé, nous fermerons le contact 7 au contact 8, notre programme surveillera un tel événement une fois par seconde et enverra une lettre avec le texte « Flaque d'eau », puis l'ouvrira - et le programme enverra une lettre avec le texte "Puddle". Il n'y a pas de flaque d'eau." Ainsi, pour installer JDK et IntelliJ Idea et apprendre quelques bases de Java, vous pouvez utiliser les premières leçons de JavaRush.ru. Nous allons commencer par créer un nouveau projet. Permettez-moi de faire une réservation tout de suite : si vous avez déjà un projet ouvert, lors de la création d'un nouveau projet, il vous sera demandé de l'ouvrir dans une nouvelle fenêtre - très pratique. (J'ai essayé une fois de travailler avec Eclipse, où tous les projets s'ouvrent dans une seule fenêtre). Ensuite, je donne beaucoup de photos sans descriptions - et donc tout est clair. Nous fermons les contacts et recevons une lettre - 1 Nous fermons les contacts et recevons une lettre - 2 Nous fermons les contacts et recevons une lettre - 2 Nous fermons les contacts et recevons une lettre - 4 Nous fermons les contacts et recevons une lettre - 3 Nous fermons les contacts et recevons une lettre - 6 Nous fermons les contacts et recevons une lettre - 4 Nous fermons les contacts et recevons une lettre - 8 Nous fermons les contacts et recevons une lettre - 5 En commençant par l'image suivante, c'est très intéressant - j'ai toujours vu ce maven, mais j'avais peur de faire quelque chose avec, mais ensuite je l'ai essayé - et tout s'est avéré très simple - si vous avez besoin d'une bibliothèque, il vous suffit entrez son nom, recherchez la dernière version et téléchargez-la. Regarder. Nous téléchargeons la bibliothèque http://habrahabr.ru/post/133766/ jSSC Et la bibliothèque javax:mail - si je comprends bien, elle a été supprimée de la liste standard des bibliothèques, mais elle est facile à télécharger dans Maven. Nous fermons les contacts et recevons une lettre - 6 Nous fermons les contacts et recevons une lettre - 11 Nous fermons les contacts et recevons une lettre - 7 Nous fermons les contacts et recevons une lettre - 13 Nous fermons les contacts et recevons une lettre - 8 Cliquez sur OK et les bibliothèques sont ajoutées. Voila :) Nous fermons les contacts et recevons une lettre - 9 Tapez le texte 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 Définissez les adresses et les mots de passe existants (au fait, il est intéressant que dans l'aide de Yandex sur smtp, il soit écrit sur le port 465, mais sur Internet, j'ai trouvé le port 25 - et cela s'est avéré être correct ). Commençons l'exécution. On ferme les contacts 7 et 8, au bout de trois secondes on relâche 1 – les contacts sont fermés, la lettre « Puddle » est envoyée, 0 – les contacts sont ouverts – la lettre « No Puddle » est envoyée. Voici ce qu'il y a dans mon Nous fermons les contacts et recevons une lettre - 10 courrier Nous fermons les contacts et recevons une lettre - 17 Nous fermons les contacts et recevons une lettre - 11 Nous fermons les contacts et recevons une lettre - 19 Maintenant, je veux avoir une candidature. Ici, pendant que j'étudiais le matériel, j'ai pleuré : est-il vraiment nécessaire de créer un fichier manifeste, d'enregistrer un patch de classe... une chose terrible. Skipy décrit tout cela. J'ai failli abandonner, mais il y a longtemps, il n'y avait pas de cartes perforées dans les tiroirs de mon bureau de cuisine, et nous avons eu une idée, alors j'ai créé une archive en pot très simplement - regardez. Nous fermons les contacts et recevons une lettre - 12 Nous fermons les contacts et recevons une lettre - 21 Nous fermons les contacts et recevons une lettre - 13 Cochez la case Build on Make - après la prochaine compilation dans idea, le résultat sera dans le dossier out. Nous fermons les contacts et recevons une lettre - 14 Tout est bouleversé et si indépendant que, de toute façon, à l'intérieur de la machine, il est copié et lancé de n'importe où. Nous fermons les contacts et recevons une lettre - 15 Mais si vous l'exécutez simplement, les lettres seront envoyées, mais il n'y aura pas de console et vous ne pourrez arrêter le processus qu'en trouvant une telle entrée dans le gestionnaire de tâches. Nous fermons les contacts et recevons une lettre - 16 Nous le transférons dans un autre dossier, à partir de là, il démarre également et crée un fichier bat. Nous fermons les contacts et recevons une lettre - 17 Nous fermons les contacts et recevons une lettre - 27 Lancer le fichier batch Nous fermons les contacts et recevons une lettre - 18 Nous fermons les contacts et recevons une lettre - 29 . Voici la console, et en utilisant Ctrl + C - une demande de sortie. Nous fermons les contacts et recevons une lettre - 19 Nous fermons les contacts et recevons une lettre - 31 Mais si vous exécutez le pot deux fois, la deuxième fois ne fonctionnera pas - le port COM sera occupé. Il est donc conseillé de faire une seule demande. Nous installons Launch4j, le lançons, sélectionnons le fichier de sortie - n'importe quel nom, il doit être exe dans la fenêtre principale, puis notre jar, sélectionnons le type de console, version minimale 1.4.0 Nous indiquons que nous n'avons pas besoin de beaucoup de copies Cliquez Nous fermons les contacts et recevons une lettre - 20 Nous fermons les contacts et recevons une lettre - 33 Nous fermons les contacts et recevons une lettre - 21 Nous fermons les contacts et recevons une lettre - 35 sur Nous fermons les contacts et recevons une lettre - 22 Nous fermons les contacts et recevons une lettre - 37 le bouton avec l'équipement Nous fermons les contacts et recevons une lettre - 23 On nous demande où stocker les fichiers temporaires, nous répondons Nous fermons les contacts et recevons une lettre - 24 Nous fermons les contacts et recevons une lettre - 40 Good Lak - tout est prêt. Lançons l'exécutable. Nous fermons les contacts et recevons une lettre - 25 C'est vrai, dans le répartiteur, il sera toujours exécuté sous javaw. Nous fermons les contacts et recevons une lettre - 26 Les lettres arrivent Nous fermons les contacts et recevons une lettre - 43 De telles choses, j'ai aimé Java. PS. La meilleure chose mécanique pour surveiller les fuites est le http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. La sortie console fait planter le programme après un certain nombre de lignes, donc si vous répétez soudainement cet algorithme, n'oubliez pas de désactiver la sortie console.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION