JavaRush /Java Blog /Random-TW /我們關閉聯繫並收到一封信
Izhak
等級 22
Москва

我們關閉聯繫並收到一封信

在 Random-TW 群組發布
下午好,我想分享我創建應用程式的經驗,該應用程式可監控常規中國 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