Guest User

Untitled

a guest
Oct 17th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.02 KB | None | 0 0
  1. package newbieilmu.rawatinap;
  2.  
  3. import javax.swing.*;
  4. import javax.comm.*;
  5. import java.net.*;
  6. import java.io.*;
  7. import java.util.*;
  8. import java.util.regex.Pattern;
  9. import java.sql.*;
  10. import java.awt.*;
  11. import java.awt.event.*;
  12.  
  13.  
  14.  
  15. import com.jtattoo.plaf.mcwin.McWinLookAndFeel;
  16.  
  17. public class Broadcast extends JFrame implements ActionListener{
  18.  
  19. Koneksi objKoneksi = new Koneksi();
  20. Connection con ;
  21. Statement state;
  22. ResultSet rs;
  23. String sql;
  24.  
  25. private Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  26.  
  27. //private JLabel lblPasien = new JLabel("Nama");
  28. //private JTextField txtPasien = new JTextField("");
  29. private JLabel lblNoTelp = new JLabel("To");
  30. private JTextField txtNoTelp = new JTextField("");
  31. private JLabel lbltxAPesan = new JLabel("Message text");
  32. private JTextArea txAPesan = new JTextArea("");
  33. private JButton btnKirim = new JButton("Kirim",new ImageIcon("src/newbieilmu/rawatinap/image/kirim.jpeg"));
  34. private JButton btnKeluar = new JButton("Keluar",new ImageIcon("src/newbieilmu/rawatinap/image/close.jpeg"));
  35. private JButton btnBersih = new JButton("Bersih",new ImageIcon("src/newbieilmu/rawatinap/image/clear.jpg"));
  36.  
  37. public Broadcast(){
  38. super("Broadcast");
  39. setLocation(d.height/2-getHeight()/2,d.width/2-getWidth()/2);
  40. setIconImage(getToolkit().getImage("src/newbieilmu/rawatinap/image/kurir.jpeg"));
  41. setSize(500,300);
  42. setVisible(true);
  43. getContentPane().setLayout(null);
  44.  
  45. //getContentPane().add(lblPasien);
  46. //getContentPane().add(txtPasien);
  47. getContentPane().add(lblNoTelp);
  48. getContentPane().add(txtNoTelp);
  49. getContentPane().add(lbltxAPesan);
  50. getContentPane().add(txAPesan);
  51. getContentPane().add(btnKirim);
  52. getContentPane().add(btnKeluar);
  53. getContentPane().add(btnBersih);
  54.  
  55. //lblPasien.setBounds(10,10, 120,20);
  56. //txtPasien.setBounds(120, 10, 200,20);
  57. lblNoTelp.setBounds(10,40, 120,20);
  58. txtNoTelp.setBounds(120, 40, 200,20);
  59. lbltxAPesan.setBounds(10,80, 120,20);
  60. txAPesan.setBounds(120, 80, 300, 100);
  61. btnKirim.setBounds(120, 200, 120,25);
  62. btnKeluar.setBounds(260, 200, 120,25);
  63. btnBersih.setBounds(120, 230, 120,25);
  64.  
  65. //txtPasien.addActionListener(this);
  66. txtNoTelp.addActionListener(this);
  67. btnKirim.addActionListener(this);
  68. btnKeluar.addActionListener(this);
  69. btnBersih.addActionListener(this);
  70.  
  71. }
  72.  
  73. InputStream input;
  74. OutputStream output;
  75. private void kirimAT(String atCmd, int delay) {
  76. Boolean tungguDelay = new Boolean(true);
  77. boolean getDelay = false;
  78. // Membuat antrian proses
  79. synchronized (tungguDelay) {
  80. try
  81. {
  82. // Menulis AT Commmand
  83. output.write( (atCmd).getBytes());
  84. output.flush();// Hapus OutputStream
  85. } //Akhir Try
  86. catch (IOException e) {
  87. System.out.println (e.getMessage());
  88. }
  89. try
  90. {
  91. tungguDelay.wait(delay);
  92. } // Akhir try
  93. catch (InterruptedException ie)
  94. {
  95. System.out.println (ie.getMessage());
  96. getDelay = true;
  97. } // Akhir catch
  98. } // Akhir syncronized
  99. }
  100.  
  101.  
  102.  
  103. private static StringBuffer pesanPDUKirim = null;
  104. private static int panjangNotlpTujuan= 0;
  105. private static int panjangPesanKirim = 0;
  106. private static String PduPesan = null;
  107.  
  108. private static int panjangKarakter= 0;
  109. private static StringBuffer stringBuffer = null;
  110.  
  111.  
  112. private static String balikKarakter(String karakter) {
  113. panjangKarakter = karakter.length();
  114. stringBuffer = new StringBuffer(panjangKarakter);
  115. for (int i = 0; (i + 1) < panjangKarakter; i = i + 2) {
  116. stringBuffer.append(karakter.charAt(i + 1));
  117. stringBuffer.append(karakter.charAt(i));
  118. }
  119. return new String(stringBuffer);
  120. }
  121.  
  122. private static char[] hexa;
  123. private static char[] karakter;
  124.  
  125. private static String PduKirimSms(String notlp, String pesan) {
  126. pesanPDUKirim = new StringBuffer(320); // 320 = 160 * 2 (panjang max)
  127. // Tambahkan nilai PDU Type ---> Default = 11
  128. pesanPDUKirim.append("11");
  129. // Tambahkan nilai MR ---> Default = 00
  130. pesanPDUKirim.append("00");
  131. // Tambahkan nilai panjang nomor pengirim
  132. panjangNotlpTujuan = notlp.length();
  133. pesanPDUKirim.append(rubahKeHexa(panjangNotlpTujuan));
  134. // Tambah nilai format no. telepon --> format internasional = 91
  135. pesanPDUKirim.append("91");
  136. // Tambahkan nilai nomor telepon pengirim
  137. // Jika panjang notlp adalah ganjil
  138. if ( (notlp.length() % 2) == 1) {
  139. notlp = balikKarakter(notlp + "F");
  140. }
  141. // Jika panjang notlp adalah genap
  142. else {
  143. notlp = balikKarakter(notlp);
  144. }
  145. pesanPDUKirim.append(notlp);
  146. // tambahkan nilai PID ---> Default = 00
  147. pesanPDUKirim.append("00");
  148. // tambahkan nilai DCS ---> Default = 00
  149. pesanPDUKirim.append("00");
  150. // tambahkan nilai VP = 4 hari ---> AA h
  151. pesanPDUKirim.append("AA");
  152. panjangPesanKirim = pesan.length();
  153. PduPesan = tujuhKeDelapanBit(pesan);
  154. System.out.println ("pesan "+pesan);
  155. System.out.println ("PDU Pesan "+PduPesan);
  156. pesanPDUKirim.append(rubahKeHexa(panjangPesanKirim));
  157. pesanPDUKirim.append(PduPesan);
  158.  
  159. return new String(pesanPDUKirim);
  160.  
  161. }
  162.  
  163. private static String rubahKeHexa(int a) {
  164. char[] hexa = {
  165. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
  166. 'E', 'F'};
  167.  
  168. karakter = new char[2];
  169. // Mengambil hanya 8 bit 255d = 11111111 b
  170. a = a & 255;
  171. // hasil pembagian dengan 16
  172. karakter[0] = hexa[a / 16];
  173. System.out.println ("karakter "+karakter[0]);
  174. // sisa hasil pembagian dengan 16
  175. karakter[1] = hexa[a % 16];
  176. System.out.println ("karakter "+karakter[1]);
  177.  
  178. return new String(karakter);
  179. }
  180.  
  181. private static char[] asciiToGsmMap;
  182. private static String tujuhKeDelapanBit(String pesan) {
  183.  
  184. StringBuffer msg = new StringBuffer(pesan);
  185.  
  186. StringBuffer encmsg = new StringBuffer(2 * 160);
  187. int bb = 0, bblen = 0, i;
  188. char o = 0, c = 0, tc;
  189.  
  190. for (i = 0; i < msg.length() || bblen >= 8; i++) {
  191. if (i < msg.length()) {
  192. c = msg.charAt(i);
  193. System.out.println ("asciiToGsmMap "+asciiToGsmMap[c]);
  194. tc = asciiToGsmMap[c];
  195.  
  196. c = tc;
  197. System.out.println ("c= ");
  198. c &= ~ (1 << 7);
  199. // System.out.println ("1<<7 "+1<<7);
  200. System.out.println ("c= "+c);
  201. bb |= (c << bblen);
  202. bblen += 7;
  203. }
  204.  
  205. while (bblen >= 8) {
  206. o = (char) (bb & 255);
  207. encmsg.append(rubahKeHexa(o));
  208. bb >>>= 8;
  209. bblen -= 8;
  210. }
  211. }
  212. if ( (bblen > 0)) {
  213. encmsg.append(rubahKeHexa(bb));
  214. }
  215. return encmsg.toString();
  216. }
  217.  
  218. private static char[] gsmToAsciiMap; // GSM ==> ASCII
  219.  
  220. static {
  221. final int lastindex = 255;
  222. gsmToAsciiMap = new char[lastindex + 1];
  223. asciiToGsmMap = new char[lastindex + 1];
  224. int i;
  225.  
  226. for (i = 0; i <= lastindex; i++) {
  227. gsmToAsciiMap[i] = asciiToGsmMap[i] = (char) i;
  228. }
  229. }
  230.  
  231.  
  232. private void prosesKirimSms(String notlp, String pesan) {
  233. //if(cekNomor()) {
  234. try {
  235. // Merubah pesan menjadi Format PDU (Protocol Data Unit)
  236. String pesanPDUKirim = PduKirimSms(notlp.trim(), pesan.trim());
  237. System.out.println ("Pesan dikirim : "+pesanPDUKirim);
  238.  
  239. // Proses Mengirim Pesan
  240. kirimAT("AT+CMGS=" + (pesanPDUKirim.length() / 2) + "\15", 500);
  241. kirimAT("00" + pesanPDUKirim, 2500); // Kirim Pesan Format PDU
  242. kirimAT("\032", 100); // Ctrl + Z
  243.  
  244. JOptionPane.showMessageDialog(Broadcast.this,
  245. "Pesan Dikirim ke : "+notlp+
  246. "\nIsi pesan : "+pesan,
  247. "Pesan dikirim",
  248. JOptionPane.INFORMATION_MESSAGE);
  249.  
  250. // Berikan waktu sleep agar terminal siap kembali untuk mengirim pesan
  251. Thread.currentThread().sleep(10000);
  252.  
  253. } // Akhir try
  254. catch (Exception e) {
  255. System.out.println (e.getMessage());
  256. }
  257. // }
  258. // else {}
  259. }
  260.  
  261. private String infoSmsc = null;
  262. private int nilaiSmsc = 0;
  263. private int nomorSmsc = 0;
  264. private String panjangNotlp = null;
  265. private int nilaiPanjangNotlp = 0;
  266. private int nilaiNotlp = 0;
  267. private String Notlp = null;
  268. private String dapatNotlp = null;
  269. private String panjangPesan = null;
  270. private int nilaiPanjangPesan = 0;
  271. private String pesanPDU = null;
  272. private String pesan = null;
  273.  
  274. public boolean cekNomor() {
  275. if(txtNoTelp.getText().trim().equals("") || txAPesan.getText().trim().equals("")) {
  276. JOptionPane.showMessageDialog(Broadcast.this,
  277. "Isi pesan atau nomor hp tujuan terlebih dahulu",
  278. "Warning", JOptionPane.WARNING_MESSAGE);
  279. return false;
  280. }
  281. else if(!txtNoTelp.getText().matches("[0-9]*")) {
  282. JOptionPane.showMessageDialog(Broadcast.this,
  283. "nomor hp tujuan belom bener tuch!",
  284. "Warning", JOptionPane.WARNING_MESSAGE);
  285. return false;
  286. }
  287. else
  288. {
  289. return true;
  290. }
  291. }
  292.  
  293. void bersih(){
  294. txtNoTelp.setText("");
  295. //txtPasien.setText("");
  296. txAPesan.setText("");
  297. }
  298.  
  299. void broadcast(){
  300. try
  301. {
  302. Connection Koneksi = objKoneksi.open_a_Connection();
  303. state = Koneksi.createStatement();
  304. sql ="select NoTelp from anggota where Status = 1";
  305. rs = state.executeQuery(sql);
  306. System.out.println(sql);
  307. while(rs.next())
  308. {
  309. //txtNoTelp.setText(rs.getString(1));
  310. //txtPasien.setText(rs.getString(2));
  311. //txAPesan.setText(rs.getString(3));
  312. prosesKirimSms(rs.getString(1),txAPesan.getText());
  313. JOptionPane.showMessageDialog(this,"Sukses Mengirim Balik");// + pesan);
  314. }
  315. state.close();
  316. Koneksi.close();
  317. }
  318. catch(SQLException ex)
  319. {
  320. System.out.println(ex);
  321. }
  322. }
  323.  
  324. public void actionPerformed(ActionEvent arg0) {
  325. if(arg0.getSource()==txtNoTelp){
  326. broadcast();
  327. }
  328. if(arg0.getSource()==btnKeluar){
  329. JOptionPane.showMessageDialog(null, "Yakin ingin Keluar?");
  330. System.exit(0);
  331. }
  332. if(arg0.getSource()==btnKirim){
  333. //prosesKirimSms(txtNoTelp.getText().trim(), txAPesan.getText().trim().toLowerCase());
  334. broadcast();
  335. }
  336. if(arg0.getSource()==btnBersih){
  337. bersih();
  338. }
  339. }
  340.  
  341. public static void main(String[] args) throws Exception, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException{
  342.  
  343. UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel");
  344. new Broadcast();
  345. }
  346.  
  347. }
Add Comment
Please, Sign In to add comment