JavaRush /Java Blog /Random-TL /Nagsasara kami ng mga contact at nakatanggap ng sulat
Izhak
Antas
Москва

Nagsasara kami ng mga contact at nakatanggap ng sulat

Nai-publish sa grupo
Magandang hapon, nais kong ibahagi ang aking karanasan sa paglikha ng isang application na sumusubaybay sa pagsasara ng mga pin 7 at 8 sa isang regular na Chinese USB-COM adapter (RTS - CTS). At kung mangyari ang ganoong pangyayari, pinadalhan niya ako ng email. Sa una, ang layunin ay gumawa ng sensor ng daloy ng tubig. Ang gagawin sa pagsasara mamaya ay, sa pangkalahatan, hindi mahalaga, ngunit gusto kong ipadala ang estado sa post office. Dahil nag-aaral ako ng Java gamit ang JavaRush, napili ang naaangkop na tool - IntelliJ Idea. Siyempre, ang mail ay hindi SMS, ngunit ang SMS ay nangangailangan ng pagtatrabaho sa isang com port, at dito matututunan natin ang isang napakahusay na tool para dito, at kapag nalaman ko ang 3G modem, maaari akong magdagdag ng kaunting impormasyon, kahit na mayroon nang isang marami nito sa Internet. Kaya, huwag tayong tumuon sa bahagi ng hardware, tingnan natin ang connector mismo DB9F . Pin 5 ay ground, pin 7 ay RTS - sa aming programa ay palaging may 1 na nakabitin dito (+ 9 V na may kaugnayan sa pin 5), at pin 8 ang input - hinila ito pataas ng 5 kilo-ohm risistor sa 0 V. Dapat sabihin na kapag hindi tumatakbo ang aming programa, ang boltahe sa pin 7 ay magiging -9 V, dapat itong isaalang-alang kapag ikaw kumuha ng spill sensor, maaari mo itong ilapat sa pin 8, ngunit may mga device na nasusunog mula sa mga negatibong boltahe. Kaya, upang suriin kung paano gagana ang aming programa, pagkatapos ilunsad ito, isasara namin ang contact 7 upang makipag-ugnay sa 8, susubaybayan ng aming programa ang naturang kaganapan minsan sa isang segundo at magpadala ng isang liham na may tekstong "Puddle", at pagkatapos ay buksan ito - at magpapadala ang programa ng liham na may text na "Puddle". Walang puddle." Kaya, upang mai-install ang JDK at IntelliJ Idea at matutunan ang ilang pangunahing kaalaman sa java, maaari mong gamitin ang mga unang aralin ng JavaRush.ru. Magsisimula tayo sa paggawa ng bagong proyekto. Hayaan akong magpareserba kaagad na kung mayroon ka nang bukas na proyekto, pagkatapos ay kapag gumagawa ng isang bagong proyekto ay hihilingin sa iyo na buksan ito sa isang bagong window - napaka-maginhawa. (Minsan kong sinubukang magtrabaho sa eclipse, kung saan ang lahat ng mga proyekto ay bubukas sa isang window). Susunod na nagbibigay ako ng maraming mga larawan nang walang mga paglalarawan - at sa gayon ang lahat ay malinaw. Isinasara namin ang mga contact at nakatanggap ng sulat - 1 Isinasara namin ang mga contact at nakatanggap ng sulat - 2 Isinasara namin ang mga contact at nakatanggap ng sulat - 2 Isinasara namin ang mga contact at nakatanggap ng sulat - 4 Isinasara namin ang mga contact at nakatanggap ng sulat - 3 Isinasara namin ang mga contact at nakatanggap ng sulat - 6 Isinasara namin ang mga contact at nakatanggap ng sulat - 4 Isinasara namin ang mga contact at nakatanggap ng liham - 8 Isinasara namin ang mga contact at nakatanggap ng sulat - 5 Simula sa susunod na larawan, ito ay napaka-interesante - palagi kong nakikita ang maven na ito, ngunit natatakot akong gumawa ng isang bagay dito, ngunit pagkatapos ay sinubukan ko ito - at ang lahat ay naging napaka-simple - kung kailangan mo ng isang library, ikaw lang ilagay ang pangalan nito, hanapin ang pinakabagong bersyon at i-download. Tingnan mo. Nagda-download kami ng library http://habrahabr.ru/post/133766/ jSSC At ang javax:mail library - sa pagkakaintindi ko, inalis ito sa karaniwang listahan ng mga library, ngunit madaling i-download sa Maven. Isinasara namin ang mga contact at nakatanggap ng sulat - 6 Isinasara namin ang mga contact at nakatanggap ng liham - 11 Isinasara namin ang mga contact at nakatanggap ng sulat - 7 Isinasara namin ang mga contact at nakatanggap ng sulat - 13 Isinasara namin ang mga contact at nakatanggap ng liham - 8 I-click ang OK at idinagdag ang mga aklatan. Voila :) Isinasara namin ang mga contact at nakatanggap ng liham - 9 I-type ang teksto 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 Itakda ang umiiral na mga address at password (sa pamamagitan ng paraan, ito ay kagiliw-giliw na sa tulong sa Yandex tungkol sa smtp ito ay nakasulat tungkol sa port 465, ngunit sa Internet natagpuan ko ang port 25 - at ito ay naging tama ). Simulan na natin ang execution. Isinasara namin ang mga contact 7 at 8, pagkatapos ng tatlong segundo ay naglalabas kami ng 1 - ang mga contact ay sarado, ang titik na "Puddle" ay ipinadala, 0 - ang mga contact ay nakabukas - ang titik na "No Puddle" ay ipinadala. Ito ang nasa aking Isinasara namin ang mga contact at nakatanggap ng liham - 10 mail Isinasara namin ang mga contact at nakatanggap ng sulat - 17 Isinasara namin ang mga contact at nakatanggap ng liham - 11 Isinasara namin ang mga contact at nakatanggap ng sulat - 19 Ngayon gusto kong magkaroon ng isang aplikasyon. Dito, habang pinag-aaralan ko ang materyal, umiyak ako - kailangan ba talagang lumikha ng isang manifest file, magrehistro ng isang patch ng klase ... isang kahila-hilakbot na bagay. Inilalarawan ni Skipy ang lahat ng ito. Muntik na akong sumuko, ngunit sa aking mga drawer ng mesa sa kusina ay walang mga punch card matagal na ang nakalipas, at nagkaroon kami ng ideya, kaya gumawa ako ng archive ng garapon nang napakasimple - tingnan mo. Isinasara namin ang mga contact at nakatanggap ng liham - 12 Isinasara namin ang mga contact at nakatanggap ng sulat - 21 Isinasara namin ang mga contact at nakatanggap ng sulat - 13 Lagyan ng check ang Build on Make box - pagkatapos ng susunod na compilation sa ideya, ang resulta ay nasa out folder. Isinasara namin ang mga contact at nakatanggap ng sulat - 14 Ang lahat ay jar out, at napaka independiyente na, sa anumang kaso, sa loob ng makina ito ay kinopya at inilunsad mula sa kahit saan. Isinasara namin ang mga contact at nakatanggap ng sulat - 15 Ngunit kung patakbuhin mo lang ito, pagkatapos ay ipapadala ang mga titik, ngunit walang console, at maaari mong patayin ang proseso sa pamamagitan lamang ng paghahanap ng naturang entry sa task manager. Isinasara namin ang mga contact at nakatanggap ng sulat - 16 Inilipat namin ito sa isa pang folder, mula doon magsisimula din ito, at gumawa ng bat file. Isinasara namin ang mga contact at nakatanggap ng sulat - 17 Isinasara namin ang mga contact at nakatanggap ng sulat - 27 Ilunsad ang batch file Isinasara namin ang mga contact at nakatanggap ng sulat - 18 Isinasara namin ang mga contact at nakatanggap ng sulat - 29 . Narito ang console, at gamit ang Ctrl + C - isang kahilingang lumabas. Isinasara namin ang mga contact at nakatanggap ng sulat - 19 Isinasara namin ang mga contact at nakatanggap ng sulat - 31 Ngunit kung patakbuhin mo ang garapon ng dalawang beses, ang pangalawang pagkakataon ay hindi gagana - ang com port ay magiging abala. Samakatuwid, ipinapayong gumawa ng isang solong aplikasyon. I-install namin ang Launch4j, ilunsad ito, piliin ang output file - anumang pangalan, dapat itong exe sa pangunahing window, pagkatapos ay ang aming garapon, piliin ang uri ng console, minimum na bersyon 1.4.0 Ipinapahiwatig namin na hindi namin kailangan ng maraming mga kopya Mag- Isinasara namin ang mga contact at nakatanggap ng sulat - 20 Isinasara namin ang mga contact at nakatanggap ng sulat - 33 Isinasara namin ang mga contact at nakatanggap ng sulat - 21 Isinasara namin ang mga contact at nakatanggap ng sulat - 35 click Isinasara namin ang mga contact at nakatanggap ng sulat - 22 Isinasara namin ang mga contact at nakatanggap ng sulat - 37 sa button na may gear Isinasara namin ang mga contact at nakatanggap ng sulat - 23 Tinanong kami kung saan nag-iimbak ng mga pansamantalang file, sinasagot namin ang Isinasara namin ang mga contact at nakatanggap ng sulat - 24 Isinasara namin ang mga contact at nakatanggap ng isang sulat - 40 Good Lak - handa na ang lahat. Ilunsad natin ang executable. Isinasara namin ang mga contact at nakatanggap ng sulat - 25 Totoo, sa dispatcher ito ay isasagawa pa rin sa ilalim ng javaw Isinasara namin ang mga contact at nakatanggap ng liham - 26 Letters are coming Isinasara namin ang mga contact at nakatanggap ng sulat - 43 Mga ganyan, nagustuhan ko ang Java. PS. Ang pinakamahusay na mekanikal na bagay para sa pagsubaybay sa pagtagas ay http://www.vse-sam.ru/10249-mexanicheskaya-sistema-dlya-kontrolya-i-predotvrashheniya-protechki-vody.html PPS. Ang output ng console ay nag-crash sa programa pagkatapos ng isang tiyak na bilang ng mga linya, kaya kung bigla mong ulitin ang algorithm na ito, huwag kalimutang i-disable ang output ng console.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION