JavaRush /Blog Jawa /Random-JV /Kita nutup kontak lan nampa layang
Izhak
tingkat
Москва

Kita nutup kontak lan nampa layang

Diterbitake ing grup
Sugeng sonten, aku pengin nuduhake pengalaman nggawe aplikasi sing ngawasi penutupan pin 7 lan 8 ing adaptor USB-COM Cina biasa (RTS - CTS). Lan yen kedadeyan kaya ngono, dheweke ngirim email. Kaping pisanan, tujuane yaiku nggawe sensor aliran banyu. Apa sing kudu ditindakake kanthi penutupan mengko, umume, ora penting, nanging aku pengin ngirim negara menyang kantor pos. Awit aku sinau Java nggunakake JavaRush, alat sing cocog dipilih - IntelliJ Idea. Mesthi, mail dudu SMS, nanging SMS mbutuhake nggarap port com, lan ing kene kita bakal sinau alat sing apik banget kanggo iki, lan nalika aku ngerti modem 3G, aku bisa nambah informasi sethithik, sanajan wis ana. akeh ing Internet. Dadi, ayo ora fokus ing bagean hardware, ayo ndeleng konektor kasebut dhewe DB9F . Pin 5 lemah, pin 7 yaiku RTS - ing program kita mesthi ana 1 sing digantung (+ 9 V relatif karo pin 5), lan pin 8 iku input - ditarik munggah dening 5 kilo-ohm resistor kanggo 0 V. Sampeyan kudu ngandika yen program kita ora mlaku, voltase ing pin 7 bakal -9 V, iki kudu dijupuk menyang akun nalika sampeyan njupuk sensor kuthah, sampeyan bisa aplikasi kanggo pin 8, nanging ana piranti sing diobong saka voltase negatif. Dadi, kanggo mriksa kepriye program kasebut, sawise diluncurake, kita bakal nutup kontak 7 kanggo ngubungi 8, program kita bakal ngawasi acara kasebut sepisan sepisan lan ngirim layang kanthi teks "Puddle", banjur mbukak - lan program bakal ngirim layang karo teks "Puddle". Ora ana genangan." Dadi, kanggo nginstal JDK lan IntelliJ Idea lan sinau sawetara dhasar java, sampeyan bisa nggunakake pawulangan pisanan JavaRush.ru. Kita bakal miwiti nggawe proyek anyar. Ayo kula nggawe reservasi langsung yen sampeyan wis mbukak proyek, banjur nalika nggawe proyek anyar sampeyan bakal dijaluk mbukak ing jendela anyar - trep banget. (Aku tau nyoba nggarap eclipse, ing ngendi kabeh proyek mbukak ing siji jendhela). Sabanjure aku menehi akeh gambar tanpa katrangan - lan kabeh wis jelas. Kita nutup kontak lan nampa layang - 1 Kita nutup kontak lan nampa layang - 2 Kita nutup kontak lan nampa layang - 2 Kita nutup kontak lan nampa layang - 4 Kita nutup kontak lan nampa layang - 3 Kita nutup kontak lan nampa layang - 6 Kita nutup kontak lan nampa layang - 4 Kita nutup kontak lan nampa layang - 8 Kita nutup kontak lan nampa layang - 5 Miwiti karo gambar sabanjuré, iku menarik banget - Aku wis tansah ndeleng maven iki, nanging wedi kanggo nindakake soko karo, nanging banjur aku nyoba - lan kabeh dadi banget prasaja - yen perlu perpustakaan, sampeyan mung ketik jenenge, goleki versi paling anyar lan download. Delengen. Kita ngundhuh perpustakaan http://habrahabr.ru/post/133766/ jSSC Lan perpustakaan javax:mail - kaya aku ngerti, iki dibusak saka dhaftar standar perpustakaan, nanging gampang kanggo download ing Maven. Kita nutup kontak lan nampa layang - 6 Kita nutup kontak lan nampa layang - 11 Kita nutup kontak lan nampa layang - 7 Kita nutup kontak lan nampa layang - 13 Kita nutup kontak lan nampa layang - 8 Klik OK lan perpustakaan ditambahake. Voila :) Kita nutup kontak lan nampa layang - 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 Setel alamat lan sandhi sing wis ana (kanthi cara, menarik yen ing bantuan ing Yandex babagan smtp ditulis babagan port 465, nanging ing Internet aku nemokake port 25 - lan iki bener. ). Ayo miwiti eksekusi. Kita nutup kontak 7 lan 8, sawise telung detik kita ngeculake 1 - kontak ditutup, huruf "Puddle" dikirim, 0 - kontak mbukak - huruf "Ora Puddle" dikirim. Iki sing ana ing Kita nutup kontak lan nampa layang - 10 suratku Kita nutup kontak lan nampa layang - 17 Kita nutup kontak lan nampa layang - 11 Kita nutup kontak lan nampa layang - 19 Saiki aku pengin duwe aplikasi. Ing kene, nalika sinau materi, aku nangis - apa pancene kudu nggawe file nyata, ndhaptar patch kelas ... bab sing elek. Skipy nggambarake kabeh iki. Aku meh nyerah, nanging ing laci meja pawon, ora ana kertu pukulan, lan kita duwe ide, mula aku nggawe arsip jar kanthi gampang - katon. Kita nutup kontak lan nampa layang - 12 Kita nutup kontak lan nampa layang - 21 Kita nutup kontak lan nampa layang - 13 Priksa kothak Build on Make - sawise kompilasi sabanjure ing idea, asil bakal ana ing folder metu. Kita nutup kontak lan nampa layang - 14 Kabeh iku jar metu, lan dadi sawijining, ing kasus apa wae, ing mesin disalin lan dibukak saka ngendi wae. Kita nutup kontak lan nampa layang - 15 Nanging yen sampeyan mung mbukak, banjur huruf bakal dikirim, nanging ora bakal console, lan sampeyan bisa mateni proses mung dening nemokake entri kuwi ing task manager. Kita nutup kontak lan nampa layang - 16 Kita nransfer menyang folder liyane, saka ing kono uga diwiwiti, lan nggawe file bat. Kita nutup kontak lan nampa layang - 17 Kita nutup kontak lan nampa layang - 27 Bukak file kumpulan Kita nutup kontak lan nampa layang - 18 Kita nutup kontak lan nampa layang - 29 . Punika console, lan nggunakake Ctrl + C - panjalukan kanggo metu. Kita nutup kontak lan nampa layang - 19 Kita nutup kontak lan nampa layang - 31 Nanging yen sampeyan mbukak jar kaping pindho, kaping pindho ora bisa - port com bakal sibuk. Mulane, dianjurake kanggo nggawe aplikasi siji. Kita nginstal Launch4j, miwiti, pilih file output - jeneng apa wae, kudu exe ing jendela utama, banjur jar kita, pilih jinis console, versi minimal 1.4.0 Kita nuduhake yen kita ora perlu akeh salinan Kita nutup kontak lan nampa layang - 20 Kita nutup kontak lan nampa layang - 33 Kita nutup kontak lan nampa layang - 21 Kita nutup kontak lan nampa layang - 35 Klik Kita nutup kontak lan nampa layang - 22 Kita nutup kontak lan nampa layang - 37 ing tombol karo pindah Kita nutup kontak lan nampa layang - 23 We takon ngendi nyimpen file sauntara, kita njawab Kita nutup kontak lan nampa layang - 24 Kita nutup kontak lan nampa layang - 40 Good Lak - kabeh wis siyap. Ayo miwiti eksekusi. Kita nutup kontak lan nampa layang - 25 Bener, ing dispatcher isih bakal kaleksanan ing javaw Kita nutup kontak lan nampa layang - 26 Letters are coming Kita nutup kontak lan nampa layang - 43 Kaya-kaya, aku seneng Jawa. PS. Bab mekanik paling apik kanggo ngawasi bocor yaiku http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Output konsol nabrak program sawise sawetara baris, dadi yen sampeyan dumadakan mbaleni algoritma iki, aja lali mateni output konsol.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION