JavaRush /จาวาบล็อก /Random-TH /เราปิดการติดต่อและรับจดหมาย
Izhak
ระดับ
Москва

เราปิดการติดต่อและรับจดหมาย

เผยแพร่ในกลุ่ม
สวัสดีตอนบ่ายฉันอยากจะแบ่งปันประสบการณ์ของฉันในการสร้างแอปพลิเคชันที่ตรวจสอบการปิดพิน 7 และ 8 บนอะแดปเตอร์ USB-COM จีนทั่วไป (RTS - CTS) และหากเกิดเหตุการณ์ดังกล่าวเขาจะส่งอีเมลถึงฉัน ในตอนแรกเป้าหมายคือการสร้างเซ็นเซอร์วัดการไหลของน้ำ โดยทั่วไปแล้วจะทำอย่างไรกับการปิดในภายหลังนั้นไม่สำคัญ แต่ฉันต้องการส่งรัฐไปที่ที่ทำการไปรษณีย์ เนื่องจากฉันกำลังเรียนรู้ Java โดยใช้ JavaRush เครื่องมือที่เหมาะสมจึงถูกเลือก – IntelliJ Idea แน่นอนว่าเมลไม่ใช่ SMS แต่ SMS ต้องทำงานกับพอร์ต com และที่นี่เราจะเรียนรู้เครื่องมือที่ดีมากสำหรับสิ่งนี้ และเมื่อฉันเข้าใจโมเด็ม 3G แล้ว ฉันสามารถเพิ่มข้อมูลเล็กน้อยได้แม้ว่าจะมีอยู่แล้ว มากมายบนอินเทอร์เน็ต ดังนั้นอย่าเน้นที่ส่วนฮาร์ดแวร์ลองดูที่ตัวเชื่อมต่อกันดีกว่า DB9F พิน 5 เป็นกราวด์ พิน 7 คือ RTS - ในโปรแกรมของเราจะมี 1 อันแขวนอยู่บนนั้นเสมอ (+ 9 V สัมพันธ์กับพิน 5) และพิน 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 คลิกตกลงและไลบรารีจะถูกเพิ่ม Voila :) เราปิดผู้ติดต่อและรับจดหมาย - 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 ตอนนี้ฉันต้องการมีใบสมัคร ในขณะที่ฉันกำลังศึกษาเนื้อหาอยู่ ฉันก็ร้องไห้ - จำเป็นจริงๆ เหรอที่จะต้องสร้างไฟล์ Manifest ลงทะเบียนแพตช์คลาส... เป็นสิ่งที่แย่มาก Skipy อธิบายทั้งหมดนี้ ฉันเกือบจะยอมแพ้ แต่ในลิ้นชักโต๊ะในห้องครัวของฉันไม่มีบัตรเจาะเมื่อนานมาแล้ว และเรามีความคิดดังนั้นฉันจึงสร้างไฟล์ jar ที่เรียบง่ายมาก - ดูสิ เราปิดผู้ติดต่อและรับจดหมาย - 12 เราปิดผู้ติดต่อและรับจดหมาย - 21 เราปิดผู้ติดต่อและรับจดหมาย - 13 ทำเครื่องหมายที่ช่อง Build on Make - หลังจากการคอมไพล์แนวคิดครั้งถัดไป ผลลัพธ์จะอยู่ในโฟลเดอร์ออก เราปิดผู้ติดต่อและรับจดหมาย - 14 ทุกอย่างเป็นระเบียบเรียบร้อย และเป็นอิสระมากจนไม่ว่าในกรณีใดก็ตาม ภายในเครื่องก็สามารถคัดลอกและเปิดใช้งานได้จากทุกที่ เราปิดผู้ติดต่อและรับจดหมาย - 15 แต่ถ้าคุณเพิ่งรันจดหมายจะถูกส่งไป แต่จะไม่มีคอนโซลและคุณสามารถฆ่ากระบวนการได้โดยค้นหารายการดังกล่าวในตัวจัดการงานเท่านั้น เราปิดผู้ติดต่อและรับจดหมาย - 16 เราถ่ายโอนไปยังโฟลเดอร์อื่นจากนั้นมันก็เริ่มต้นและสร้างไฟล์ค้างคาว เราปิดผู้ติดต่อและรับจดหมาย - 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 ดีหลัก - ทุกอย่างพร้อม มาเริ่มปฏิบัติการกันดีกว่า เราปิดผู้ติดต่อและรับจดหมาย - 25 จริงอยู่ ในโปรแกรมเลือกจ่ายงานนั้นจะยังคงดำเนินการภายใต้ javaw เราปิดผู้ติดต่อและรับจดหมาย - 26 Letters กำลังมา เราปิดผู้ติดต่อและรับจดหมาย - 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