JavaRush /Java 博客 /Random-ZH /我们关闭联系并收到一封信
Izhak
第 22 级
Москва

我们关闭联系并收到一封信

已在 Random-ZH 群组中发布
下午好,我想分享一下我创建一个应用程序的经验,该应用程序可监控常规中国 USB-COM 适配器 (RTS - CTS) 上引脚 7 和 8 的闭合情况。如果发生这样的事件,他会给我发一封电子邮件。 最初的目标是制造水流传感器。总的来说,稍后如何处理关闭并不重要,但我想将状态发送到邮局。由于我正在使用 JavaRush 学习 Java,因此选择了合适的工具 – IntelliJ Idea。当然,邮件不是短信,但短信需要使用com端口,在这里我们将学习一个非常好的工具,当我弄清楚3G调制解调器时,我可以添加一些信息,尽管已经有一个互联网上有很多。所以,让我们不关注硬件部分,让我们看看连接器本身 DB9F 。引脚 5 接地,引脚 7 是 RTS - 在我们的程序中,总会有 1 挂在其上(相对于引脚 5 为 + 9 V),并且引脚8 是输入 - 它通过 5 千欧电阻上拉至 0 V。必须说的是,当我们的程序不运行时,引脚 7 上的电压将为 -9 V,当您使用时必须考虑到这一点。使用溢出传感器,您可以将其连接到引脚 8,但有些设备会因负电压而烧毁。因此,为了检查我们的程序将如何工作,启动后,我们将关闭联系人 7 到联系人 8,我们的程序将每秒监视一次此类事件并发送一封带有文本“Puddle”的信件,然后打开它 - 并且程序将发送一封带有“水坑”文本的信件。没有水坑。” 因此,要安装 JDK 和 IntelliJ Idea 并学习一些 java 基础知识,您可以使用 JavaRush.ru 的第一课。我们将从创建一个新项目开始。让我立即预约,如果您已经打开了一个项目,那么在创建新项目时,您将被要求在新窗口中打开它 - 非常方便。(我曾经尝试使用 eclipse,所有项目都在一个窗口中打开)。接下来我给出了很多没有描述的图片——所以一切都很清楚。 我们关闭联系并收到一封信 - 1 我们关闭联系并收到一封信 - 2 我们关闭联系并收到一封信 - 2 我们关闭联系并收到一封信 - 4 我们关闭联系并收到一封信 - 3 我们关闭联系并收到一封信 - 6 我们关闭联系并收到一封信 - 4 我们关闭联系并收到一封信 - 8 我们关闭联系并收到一封信 - 5 从下一张图片开始,非常有趣 - 我一直看到这个专家,但不敢用它做点什么,但后来我尝试了 - 一切都变得非常简单 - 如果你需要一个库,你只需输入其名称,查找最新版本并下载。看。我们下载了库 http://habrahabr.ru/post/133766/ jSSC 和 javax:mail 库 - 据我了解,它已从标准库列表中删除,但很容易在 Maven 中下载。 我们关闭联系并收到一封信 - 6 我们关闭联系并收到一封信 - 11 我们关闭联系并收到一封信 - 7 我们关闭联系并收到一封信 - 13 我们关闭联系并收到一封信 - 8 单击“确定”即可添加库。瞧 :) 我们关闭联系并收到一封信 - 9 输入文本 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 设置现有地址和密码(顺便说一句,有趣的是,在 Yandex 关于 smtp 的帮助中,它写的是端口 465,但在互联网上我发现了端口 25 - 结果证明这是正确的)。让我们开始执行吧。我们关闭触点 7 和 8,三秒后我们释放 1 – 触点关闭,发送信件“Puddle”,0 – 触点打开 – 发送信件“No Puddle”。这是我的邮件中的 我们关闭联系并收到一封信 - 10 内容 我们关闭联系并收到一封信 - 17 我们关闭联系并收到一封信 - 11 我们关闭联系并收到一封信 - 19 现在我想要一个应用程序。在这里,当我学习这些材料时,我哭了 - 真的有必要创建一个清单文件,注册一个类补丁......这是一件可怕的事情。斯基皮描述了这一切。我几乎要放弃了,但是我的厨房桌子抽屉里很久以前就没有打孔卡了,我们有了一个想法,所以我很简单地做了一个罐子档案——看。 我们关闭联系并收到一封信 - 12 我们关闭联系并收到一封信 - 21 我们关闭联系并收到一封信 - 13 勾选Build on Make框——下次在idea中编译后,结果将在out文件夹中。 我们关闭联系并收到一封信 - 14 一切都是 jar 出来的,并且是如此独立,以至于在任何情况下,在机器内它都可以从任何地方复制和启动。 我们关闭联系并收到一封信 - 15 但如果你只是运行它,那么就会发送信件,但不会有控制台,你只能通过在任务管理器中找到这样的条目来杀死该进程。 我们关闭联系并收到一封信 - 16 我们将它转​​移到另一个文件夹,它也从那里启动,并制作一个bat文件。 我们关闭联系并收到一封信 - 17 我们关闭联系并收到一封信 - 27 启动批处理 文件 我们关闭联系并收到一封信 - 18 我们关闭联系并收到一封信 - 29 。这是控制台,并使用Ctrl + C - 请求退出。 我们关闭联系并收到一封信 - 19 我们关闭联系并收到一封信 - 31 但是如果你运行 jar 两次,第二次将不起作用 - com 端口将繁忙。因此,建议进行单一申请。我们安装 Launch4j,启动它,选择输出文件 - 任何名称,它应该是主窗口中的 exe,然后是我们的 jar,选择控制台类型,最低版本 1.4.0 我们表明我们不需要很多 我们关闭联系并收到一封信 - 20 我们关闭联系并收到一封信 - 33 我们关闭联系并收到一封信 - 21 我们关闭联系并收到一封信 - 35 副本 我们关闭联系并收到一封信 - 22 我们关闭联系并收到一封信 - 37 单击带齿轮的按钮 我们关闭联系并收到一封信 - 23 我们被问到在哪里存储临时文件,我们回答 我们关闭联系并收到一封信 - 24 我们关闭联系并收到一封信 - 40 Good Lak - 一切都准备好了。让我们启动可执行文件。 我们关闭联系并收到一封信 - 25 确实,在调度程序中它仍然会在 javaw 下执行 我们关闭联系并收到一封信 - 26 字母即将到来 我们关闭联系并收到一封信 - 43 这样的事情,我喜欢 Java。附言。监测泄漏的最佳机械装置是http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS。控制台输出在一定行数后会使程序崩溃,因此如果您突然重复此算法,请不要忘记禁用控制台输出。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION