JavaRush /Blog Java /Random-MS /Kami menutup kenalan dan menerima surat
Izhak
Tahap
Москва

Kami menutup kenalan dan menerima surat

Diterbitkan dalam kumpulan
Selamat tengah hari, saya ingin berkongsi pengalaman saya mencipta aplikasi yang memantau penutupan pin 7 dan 8 pada penyesuai USB-COM Cina biasa (RTS - CTS). Dan jika kejadian seperti itu berlaku, dia menghantar e-mel kepada saya. Pada mulanya, matlamatnya adalah untuk membuat sensor aliran air. Apa yang perlu dilakukan dengan penutupan nanti, pada umumnya, tidak penting, tetapi saya mahu menghantar negeri ke pejabat pos. Memandangkan saya belajar Java menggunakan JavaRush, alat yang sesuai telah dipilih - IntelliJ Idea. Sudah tentu, mel bukan SMS, tetapi SMS memerlukan bekerja dengan port com, dan di sini kita akan mempelajari alat yang sangat baik untuk ini, dan apabila saya mengetahui modem 3G, saya boleh menambah sedikit maklumat, walaupun sudah ada banyak di Internet. Oleh itu, jangan fokus pada bahagian perkakasan, mari lihat penyambung itu sendiri DB9F . Pin 5 dibumikan, pin 7 ialah RTS - dalam program kami akan sentiasa ada 1 tergantung padanya (+ 9 V berbanding dengan pin 5), dan pin 8 ialah input - ia ditarik oleh perintang 5 kilo-ohm kepada 0 V. Ia mesti dikatakan bahawa apabila program kami tidak berjalan, voltan pada pin 7 akan menjadi -9 V, ini mesti diambil kira apabila anda ambil sensor tumpahan, anda boleh menggunakannya pada pin 8, tetapi terdapat peranti yang terbakar dari voltan negatif. Jadi, untuk menyemak bagaimana program kami akan berfungsi, selepas melancarkannya, kami akan menutup kenalan 7 untuk menghubungi 8, program kami akan memantau acara sedemikian sekali sesaat dan menghantar surat dengan teks "Lopak", dan kemudian membukanya - dan program akan menghantar surat dengan teks "Lopak". Tiada lopak." Jadi, untuk memasang JDK dan IntelliJ Idea dan mempelajari beberapa asas java, anda boleh menggunakan pelajaran pertama JavaRush.ru. Kami akan mulakan dengan membuat projek baharu. Izinkan saya membuat tempahan dengan segera bahawa jika anda sudah mempunyai projek terbuka, maka apabila membuat projek baharu anda akan diminta untuk membukanya dalam tetingkap baharu - sangat mudah. (Saya pernah cuba bekerja dengan eclipse, di mana semua projek dibuka dalam satu tetingkap). Seterusnya saya memberikan banyak gambar tanpa penerangan - jadi semuanya jelas. Kami menutup kenalan dan menerima surat - 1 Kami menutup kenalan dan menerima surat - 2 Kami menutup kenalan dan menerima surat - 2 Kami menutup kenalan dan menerima surat - 4 Kami menutup kenalan dan menerima surat - 3 Kami menutup kenalan dan menerima surat - 6 Kami menutup kenalan dan menerima surat - 4 Kami menutup kenalan dan menerima surat - 8 Kami menutup kenalan dan menerima surat - 5 Bermula dengan gambar seterusnya, ia sangat menarik - Saya selalu melihat ahli ini, tetapi takut untuk melakukan sesuatu dengannya, tetapi kemudian saya mencubanya - dan semuanya ternyata sangat mudah - jika anda memerlukan perpustakaan, anda hanya masukkan namanya, cari versi terkini dan muat turun. Tengok. Kami memuat turun perpustakaan http://habrahabr.ru/post/133766/ jSSC Dan perpustakaan javax:mel - seperti yang saya faham, ia telah dialih keluar daripada senarai perpustakaan standard, tetapi ia mudah dimuat turun di Maven. Kami menutup kenalan dan menerima surat - 6 Kami menutup kenalan dan menerima surat - 11 Kami menutup kenalan dan menerima surat - 7 Kami menutup kenalan dan menerima surat - 13 Kami menutup kenalan dan menerima surat - 8 Klik OK dan perpustakaan ditambah. Voila :) Kami menutup kenalan dan menerima surat - 9 Taip teks 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 Tetapkan alamat dan kata laluan sedia ada (dengan cara itu, menarik bahawa dalam bantuan di Yandex mengenai smtp ia ditulis mengenai port 465, tetapi di Internet saya dapati port 25 - dan ini ternyata betul ). Mari kita mulakan pelaksanaan. Kami menutup kenalan 7 dan 8, selepas tiga saat kami melepaskan 1 - kenalan ditutup, huruf "Lopak" dihantar, 0 - kenalan dibuka - surat "Tiada Lopak" dihantar. Ini adalah apa yang ada dalam mel Kami menutup kenalan dan menerima surat - 10 saya Kami menutup kenalan dan menerima surat - 17 Kami menutup kenalan dan menerima surat - 11 Kami menutup kenalan dan menerima surat - 19 Sekarang saya ingin mempunyai permohonan. Di sini, semasa saya mengkaji bahan itu, saya menangis - adakah ia benar-benar perlu untuk membuat fail manifes, mendaftar patch kelas ... perkara yang mengerikan. Skipy menerangkan semua ini. Saya hampir berputus asa, tetapi dalam laci meja dapur saya tidak ada kad tebuk lama dahulu, dan kami mempunyai idea, jadi saya membuat arkib balang dengan sangat mudah - lihat. Kami menutup kenalan dan menerima surat - 12 Kami menutup kenalan dan menerima surat - 21 Kami menutup kenalan dan menerima surat - 13 Semak kotak Bina pada Buat - selepas kompilasi seterusnya dalam idea, hasilnya akan berada dalam folder keluar. Kami menutup kenalan dan menerima surat - 14 Segala-galanya adalah keluar, dan sangat bebas sehingga, dalam apa jua keadaan, di dalam mesin ia disalin dan dilancarkan dari mana-mana sahaja. Kami menutup kenalan dan menerima surat - 15 Tetapi jika anda hanya menjalankannya, maka surat akan dihantar, tetapi tidak akan ada konsol, dan anda boleh membunuh proses hanya dengan mencari entri sedemikian dalam pengurus tugas. Kami menutup kenalan dan menerima surat - 16 Kami memindahkannya ke folder lain, dari sana ia juga bermula, dan membuat fail kelawar. Kami menutup kenalan dan menerima surat - 17 Kami menutup kenalan dan menerima surat - 27 Lancarkan fail kelompok Kami menutup kenalan dan menerima surat - 18 Kami menutup kenalan dan menerima surat - 29 . Berikut ialah konsol, dan menggunakan Ctrl + C - permintaan untuk keluar. Kami menutup kenalan dan menerima surat - 19 Kami menutup kenalan dan menerima surat - 31 Tetapi jika anda menjalankan balang dua kali, kali kedua tidak akan berfungsi - port com akan sibuk. Oleh itu, adalah dinasihatkan untuk membuat satu permohonan. Kami memasang Launch4j, melancarkannya, pilih fail output - apa-apa nama, ia harus exe dalam tetingkap utama, kemudian balang kami, pilih jenis konsol, versi minimum 1.4.0 Kami menunjukkan bahawa kami tidak memerlukan banyak salinan Kami menutup kenalan dan menerima surat - 20 Kami menutup kenalan dan menerima surat - 33 Kami menutup kenalan dan menerima surat - 21 Kami menutup kenalan dan menerima surat - 35 Klik Kami menutup kenalan dan menerima surat - 22 Kami menutup kenalan dan menerima surat - 37 pada butang dengan gear Kami menutup kenalan dan menerima surat - 23 Kami ditanya di mana menyimpan fail sementara, kami menjawab Kami menutup kenalan dan menerima surat - 24 Kami menutup kenalan dan menerima surat - 40 Baik Lak - semuanya sudah siap. Mari kita lancarkan boleh laku. Kami menutup kenalan dan menerima surat - 25 Benar, dalam penghantar ia masih akan dilaksanakan di bawah javaw Kami menutup kenalan dan menerima surat - 26 Letters are coming Kami menutup kenalan dan menerima surat - 43 Perkara sedemikian, saya suka Java. PS. Perkara mekanikal terbaik untuk memantau kebocoran ialah http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Output konsol ranap program selepas beberapa baris, jadi jika anda tiba-tiba mengulangi algoritma ini, jangan lupa untuk melumpuhkan output konsol.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION