JavaRush /Java Blog /Random-ID /Kami menutup kontak dan menerima surat
Izhak
Level 22
Москва

Kami menutup kontak dan menerima surat

Dipublikasikan di grup Random-ID
Selamat siang, Saya ingin berbagi pengalaman saya membuat aplikasi yang memantau penutupan pin 7 dan 8 pada adaptor USB-COM China biasa (RTS - CTS). Dan jika kejadian seperti itu terjadi, dia mengirimi saya email. Awalnya tujuannya adalah membuat sensor aliran air. Apa yang harus dilakukan dengan penutupan nanti, pada umumnya, tidak penting, tetapi saya ingin mengirim negara bagian ke kantor pos. Karena saya belajar Java menggunakan JavaRush, alat yang sesuai dipilih – IntelliJ Idea. Tentu saja, email bukanlah SMS, tetapi SMS memerlukan port com, dan di sini kita akan mempelajari alat yang sangat bagus untuk ini, dan ketika saya mengetahui modem 3G, saya dapat menambahkan sedikit informasi, meskipun sudah ada a banyak di Internet. Jadi, jangan fokus pada bagian hardware, mari kita lihat konektornya sendiri DB9F .. Pin 5 adalah ground, pin 7 adalah RTS - dalam program kita akan selalu ada 1 yang tergantung di atasnya (+ 9 V relatif terhadap pin 5), dan pin 8 adalah input - ditarik oleh resistor 5 kilo-ohm menjadi 0 V. Harus dikatakan bahwa ketika program kita tidak berjalan, tegangan pada pin 7 akan menjadi -9 V, ini harus diperhitungkan saat Anda ambil sensor tumpahan, bisa diaplikasikan ke pin 8, tapi ada perangkat yang terbakar karena tegangan negatif. Jadi, untuk memeriksa bagaimana program kami akan bekerja, setelah meluncurkannya, kami akan menutup kontak 7 ke kontak 8, program kami akan memantau peristiwa seperti itu sekali dalam satu detik dan mengirim surat dengan teks "Genangan Air", lalu membukanya - dan program akan mengirimkan surat dengan teks “Genangan”. Tidak ada genangan air." Jadi, untuk menginstal JDK dan IntelliJ Idea serta mempelajari beberapa dasar java, Anda dapat menggunakan pelajaran pertama JavaRush.ru. Kami akan mulai dengan membuat proyek baru. Izinkan saya segera membuat reservasi bahwa jika Anda sudah membuka proyek, maka saat membuat proyek baru Anda akan diminta untuk membukanya di jendela baru - sangat nyaman. (Saya pernah mencoba bekerja dengan gerhana, di mana semua proyek terbuka dalam satu jendela). Selanjutnya saya memberikan banyak gambar tanpa deskripsi - dan semuanya jelas. Kami menutup kontak dan menerima surat - 1 Kami menutup kontak dan menerima surat - 2 Kami menutup kontak dan menerima surat - 2 Kami menutup kontak dan menerima surat - 4 Kami menutup kontak dan menerima surat - 3 Kami menutup kontak dan menerima surat - 6 Kami menutup kontak dan menerima surat - 4 Kami menutup kontak dan menerima surat - 8 Kami menutup kontak dan menerima surat - 5 Dimulai dengan gambar berikutnya, ini sangat menarik - Saya selalu melihat pakar ini, tetapi takut melakukan sesuatu dengannya, tetapi kemudian saya mencobanya - dan semuanya menjadi sangat sederhana - jika Anda memerlukan perpustakaan, Anda cukup masukkan namanya, cari versi terbaru dan download. Lihat. Kami mengunduh perpustakaan http://habrahabr.ru/post/133766/ jSSC Dan perpustakaan javax:mail - seperti yang saya pahami, itu telah dihapus dari daftar perpustakaan standar, tetapi mudah diunduh di Maven. Kami menutup kontak dan menerima surat - 6 Kami menutup kontak dan menerima surat - 11 Kami menutup kontak dan menerima surat - 7 Kami menutup kontak dan menerima surat - 13 Kami menutup kontak dan menerima surat - 8 Klik OK dan perpustakaan ditambahkan. Voila :) Kami menutup kontak dan menerima surat - 9 Ketik 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 sandi yang ada (omong-omong, menarik bahwa dalam bantuan di Yandex tentang smtp tertulis tentang port 465, tetapi di Internet saya menemukan port 25 - dan ini ternyata benar ). Mari kita mulai eksekusi. Kita tutup kontak 7 dan 8, setelah tiga detik kita lepaskan 1 – kontak tertutup, terkirim huruf “Genangan”, 0 – kontak terbuka – terkirim huruf “Tidak Ada Genangan”, Ini yang ada di email Kami menutup kontak dan menerima surat - 10 saya Kami menutup kontak dan menerima surat - 17 Kami menutup kontak dan menerima surat - 11 Kami menutup kontak dan menerima surat - 19 Sekarang saya ingin memiliki aplikasi. Di sini, ketika saya sedang mempelajari materi, saya menangis - apakah benar-benar perlu membuat file manifes, mendaftarkan patch kelas... hal yang buruk. Skipy menjelaskan semua ini. Saya hampir menyerah, tetapi di laci meja dapur saya sudah lama tidak ada kartu berlubang, dan kami punya ide, jadi saya membuat arsip toples dengan sangat sederhana - lihat. Kami menutup kontak dan menerima surat - 12 Kami menutup kontak dan menerima surat - 21 Kami menutup kontak dan menerima surat - 13 Centang kotak Build on Make - setelah kompilasi ide berikutnya, hasilnya akan ada di folder keluar. Kami menutup kontak dan menerima surat - 14 Segala sesuatunya bersifat jar out, dan sangat independen sehingga, bagaimanapun juga, di dalam mesin, semuanya disalin dan diluncurkan dari mana saja. Kami menutup kontak dan menerima surat - 15 Tetapi jika Anda hanya menjalankannya, maka surat-surat itu akan terkirim, tetapi tidak akan ada konsol, dan Anda dapat menghentikan prosesnya hanya dengan menemukan entri seperti itu di pengelola tugas. Kami menutup kontak dan menerima surat - 16 Kami mentransfernya ke folder lain, dari sana juga dimulai, dan membuat file bat. Kami menutup kontak dan menerima surat - 17 Kami menutup kontak dan menerima surat - 27 Luncurkan file batch Kami menutup kontak dan menerima surat - 18 Kami menutup kontak dan menerima surat - 29 . Ini konsolnya, dan menggunakan Ctrl + C - permintaan untuk keluar. Kami menutup kontak dan menerima surat - 19 Kami menutup kontak dan menerima surat - 31 Tetapi jika Anda menjalankan toples dua kali, yang kedua tidak akan berfungsi - port com akan sibuk. Oleh karena itu, disarankan untuk membuat satu aplikasi. Kami menginstal Launch4j, meluncurkannya, pilih file keluaran - nama apa pun, itu harus exe di jendela utama, lalu toples kami, pilih jenis konsol, versi minimum 1.4.0 Kami menunjukkan bahwa kami tidak memerlukan banyak salinan Kami menutup kontak dan menerima surat - 20 Kami menutup kontak dan menerima surat - 33 Kami menutup kontak dan menerima surat - 21 Kami menutup kontak dan menerima surat - 35 Klik Kami menutup kontak dan menerima surat - 22 Kami menutup kontak dan menerima surat - 37 pada tombol dengan roda gigi Kami menutup kontak dan menerima surat - 23 Kami ditanya di mana menyimpan file sementara, kami menjawab Kami menutup kontak dan menerima surat - 24 Kami menutup kontak dan menerima surat - 40 Baik Lak - semuanya sudah siap. Mari kita luncurkan file yang dapat dieksekusi. Kami menutup kontak dan menerima surat - 25 Benar, di operator itu masih akan dieksekusi di bawah javaw Kami menutup kontak dan menerima surat - 26 Surat datang Kami menutup kontak dan menerima surat - 43 Hal-hal seperti itu, saya suka Java. PS. Hal mekanis terbaik untuk memantau kebocoran adalah http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Output konsol membuat program crash setelah sejumlah baris tertentu, jadi jika Anda tiba-tiba mengulangi algoritma ini, jangan lupa untuk menonaktifkan output konsol.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION