JavaRush /Java Blog /Random-JA /連絡先を密にし、手紙を受け取ります
Izhak
レベル 22
Москва

連絡先を密にし、手紙を受け取ります

Random-JA グループに公開済み
こんにちは。通常の中国製 USB-COM アダプタ (RTS - CTS) のピン 7 と 8 の閉鎖を監視するアプリケーションを作成した経験を共有したいと思います。そして、そのような出来事が起こった場合、彼は私にメールを送ってくれます。 当初の目標は水流センサーを作ることでした。後で閉鎖をどうするかは一般的に重要ではありませんが、状態を郵便局に送りたかったのです。私は JavaRush を使用して Java を学習しているため、適切なツールである IntelliJ Idea を選択しました。もちろん、メールは SMS ではありませんが、SMS は COM ポートを使用する必要があります。ここでは、このための非常に優れたツールを学びます。3G モデムを理解したら、少し情報を追加できます。インターネット上にたくさんあります。したがって、ハードウェア部分に焦点を当てるのではなく、コネクタ自体を見てみましょう DB9F 。ピン 5 はグランド、ピン 7 は RTS です - 私たちのプログラムでは、常に 1 つがそれにぶら下がっています (ピン 5 に対して + 9 V)。 8 は入力です。5 キロオームの抵抗によって 0 V にプルアップされます。プログラムが実行されていないときは、ピン 7 の電圧は -9 V になるので、これを考慮する必要があります。流出センサーをピン 8 に適用することもできますが、負の電圧で発火するデバイスがあります。したがって、プログラムがどのように機能するかを確認するために、起動後に接点 7 から接点 8 を閉じます。プログラムはそのようなイベントを 1 秒に 1 回監視し、テキスト「水たまり」を含むレターを送信してから、それを開きます。プログラムは「水たまり」というテキストを含む手紙を送信します。水たまりはありません。」したがって、JDK と IntelliJ Idea をインストールして Java の基本を学ぶには、JavaRush.ru の最初のレッスンを使用できます。新しいプロジェクトを作成することから始めます。すぐに予約させていただきますが、すでにプロジェクトを開いている場合は、新しいプロジェクトを作成するときに、新しいウィンドウで開くように求められるため、非常に便利です。(私はかつて、すべてのプロジェクトを 1 つのウィンドウで開く Eclipse で作業してみました)。次に、説明なしでたくさんの写真を示します - したがって、すべてが明確です。 連絡先を閉じて手紙を受け取ります - 1 連絡先を閉じて手紙を受け取ります - 2 連絡先を閉じて手紙を受け取ります - 2 連絡先を閉じて手紙を受け取ります - 4 連絡先を閉じて手紙を受け取ります - 3 連絡先を閉じて手紙を受け取ります - 6 連絡先を閉じて手紙を受け取ります - 4 連絡先を閉じて手紙を受け取ります - 8 連絡先を閉じて手紙を受け取ります - 5 次の図から始めます。これは非常に興味深いものです。私はいつもこの Maven を見てきましたが、これで何かをするのが怖かったのですが、試してみました。そして、すべてが非常に簡単であることがわかりました。ライブラリが必要な場合は、名前を入力し、最新バージョンを探してダウンロードします。見て。ライブラリ http://habrahabr.ru/post/133766/ jSSC をダウンロードします。 そして javax:mail ライブラリ - 私の理解では、これはライブラリの標準リストから削除されましたが、Maven で簡単にダウンロードできます。 連絡先を閉じて手紙を受け取ります - 6 連絡先を閉じ、手紙を受け取ります - 11 連絡先を閉じ、手紙を受け取ります - 7 連絡先を閉じ、手紙を受け取ります - 13 連絡先を閉じて手紙を受け取ります - 8 「OK」をクリックすると、ライブラリが追加されます。出来上がり:) 連絡先を閉じ、手紙を受け取ります - 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 既存のアドレスとパスワードを設定します (ところで、smtp に関する Yandex のヘルプではポート 465 について書かれているのは興味深いですが、インターネットではポート 25 を見つけました - そしてこれが正しいことが判明しました) )。実行を開始しましょう。 連絡先を閉じ、手紙を受け取ります - 10 接点 7 と 8 を閉じ、3 秒後に手を放します。 1 – 接点が閉じられ、「水たまり」という文字が送信されます。 0 – 接点が開いています – 「水たまりなし」という文字が送信されます。これが私のメール の内容です。 連絡先を閉じ、手紙を受け取ります - 17 連絡先を閉じ、手紙を受け取ります - 11 私たちは連絡先を閉じ、手紙を受け取ります - 19 今度はアプリケーションを作成したいと思います。ここで、資料を勉強しているときに、マニフェスト ファイルを作成したり、クラス パッチを登録したりする必要があるのか​​と泣いてしまいました...ひどいことです。Skipy がこれらすべてを説明します。ほとんど諦めかけましたが、キッチンの机の引き出しにはずっと前からパンチカードはありませんでした。そしてアイデアがあったので、非常に簡単に瓶のアーカイブを作成しました。 連絡先を閉じ、手紙を受け取ります - 12 連絡先を閉じ、手紙を受け取ります - 21 連絡先を閉じ、手紙を受け取ります - 13 [Build on Make] チェックボックスをオンにします。アイデアでの次回のコンパイルの後、結果は out フォルダーに保存されます。 連絡先を閉じ、手紙を受け取ります - 14 すべてがばらばらで、非常に独立しているため、いずれにせよ、マシン内ではどこからでもコピーして起動できます。 連絡先を閉じ、手紙を受け取ります - 15 ただし、実行するだけの場合、レターは送信されますが、コンソールは存在せず、タスクマネージャーでそのようなエントリを見つけることによってのみプロセスを強制終了できます。 連絡先を閉じ、手紙を受け取ります - 16 それを別のフォルダーに転送し、そこからまた起動し、バッチ ファイルを作成します。 連絡先を閉じ、手紙を受け取ります - 17 連絡先を閉じ、手紙を受け取ります - 27 バッチ ファイルを起動します 連絡先を閉じ、手紙を受け取ります - 18 連絡先を閉じ、手紙を受け取ります - 29 。これがコンソールで、Ctrl + C を使用して終了する要求です。 私たちは連絡先を閉じ、手紙を受け取ります - 19 連絡先を閉じ、手紙を受け取ります - 31 ただし、jar を 2 回実行すると、2 回目は機能しません。COM ポートがビジー状態になります。したがって、単一の申請を行うことをお勧めします。Launch4j をインストールして起動し、出力ファイルを選択します。名前は任意で、メイン ウィンドウでは exe である必要があります。次に、jar を選択し、コンソールの種類を選択します。最小バージョンは 1.4.0 多数のコピーは必要ないことを示し ます 私たちは連絡先を閉じ、手紙を受け取ります - 20 連絡先を閉じ、手紙を受け取ります - 33 連絡先を閉じ、手紙を受け取ります - 21 連絡先を閉じ、手紙を受け取ります - 35連絡先を閉じ、手紙を受け取ります - 22 連絡先を閉じ、手紙を受け取ります - 37歯車の付いたボタン 一時ファイルをどこに保存するかを尋ねられるので、 「Good Lak」 連絡先を閉じ、手紙を受け取ります - 23 と答えます - すべての準備ができています。 連絡先を閉じ、手紙を受け取ります - 24 連絡先を閉じ、手紙を受け取ります - 40実行ファイルを起動しましょう。 連絡先を閉じ、手紙を受け取ります - 25 確かに、ディスパッチャーでは javaw の下で実行されます。 連絡先を閉じ、手紙を受け取ります - 26 手紙が来ます 連絡先を閉じ、手紙を受け取ります - 43 。 そういうもので、私は Java が好きでした。PS. 漏れを監視するのに最適な機械式のものは 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