⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendpdu.java

📁 首先在串口上连接一个或者多个MODEL(简单的说就是可以收发短信的手机)
💻 JAVA
字号:
//你好!

import java.io.*;
public class SendPdu {


	protected int UDL;
	protected String UD;
	protected String Msg;
	protected String Pdu;
	public String toPdu()
	{
		return Pdu;
	}
	public int getPduLen()
	{
	   return (Pdu.length()-2)/2;
	}

	public SendPdu(String da,String msg) throws Exception
	{
	  String DAhead=PduUtil.Tel2DA(da);
	  Msg=msg;
	  boolean isEng=PduUtil.IsEnglish(msg);
	  UD=PduUtil.Msg2Hex(msg,isEng);
	  UDL=UD.length()/2;
	  String dcs;
	  if(isEng) dcs="04"; else dcs="08";
	  Pdu="0011FF"+DAhead+"00"+dcs+"FF"+PduUtil.Byte2Hex(UDL)+UD;
	}
	private static int reLoadBuffer(Connecter con) throws Exception
	{
		String rs=new String();
		int mr=-1;
		for(int i=0;i<5;i++)
		{
		 Thread.sleep(500);
		 if( con.getReader().ready()==false) continue;
		 rs=con.RecDataAnsi();
	     if(rs.length()<1) continue;
	     
		 if(rs.indexOf("+CMGS:")>-1)
		 {
			 int index=rs.indexOf("+CMGS:");
			    rs=rs.substring(index+6);
			  int k= rs.indexOf("\r\n");
			  rs=rs.substring(0,k);
			 mr=Integer.parseInt(rs.trim());
			 break;
			
		 }
	     if(rs.indexOf("ERROR")>-1)
	    	 {
	    	 mr=0;
	    	 break;
	    	 }
		 
		}
		
		return mr;
		
	}
	
	protected static String SendAT(Connecter con ,String cmd,String mrcmd,long delay) throws Exception
	{
		 BufferedReader br=con.getReader();
		  while( br.ready())  br.read();
		   OutputStream os=con.getOutputStream();
		   byte[] cmdbs=(cmd+"\r\n").getBytes("GBK");
		   os.write(cmdbs);
		   os.flush();
		   
		   String rs="";
		   
		   for(int i=0;i<5;i++)
		   {
			   Thread.sleep(delay/5);
			 
			   if(br.ready())
				   {
				   rs= br.readLine();
				   if(rs.startsWith("OK")) return "OK";
				   if(rs.startsWith("ERROR")) return "ERROR";
				   
				   if(rs.startsWith(mrcmd))return rs;
				   } else continue;
		         
		     
		   }//for
		   
		   return rs;
	}
	protected static int MySend(Connecter con,String pdu,long delay) throws Exception
	{
		
	   int pdulen=pdu.length()/2-1;
	   BufferedReader br=con.getReader();
	  while( br.ready())  br.read();
	   OutputStream os=con.getOutputStream();
	   String cmd="AT+CMGF=0;+CMGS="+pdulen+"\r\n";
	   byte[] cmdbs=cmd.getBytes("GBK");
	   os.write(cmdbs);
	   byte[] cmdpdu=pdu.getBytes("GBK");
	   os.write(cmdpdu);
	   os.write(0x1A);
	   os.flush();
	   
	   
	   String rs="";
	   int mr=-1;
	   for(int i=0;i<5;i++)
	   {
		   Thread.sleep(delay/5);
		 
		   if(br.ready())
			   {
			   rs= br.readLine();
			   if(rs.startsWith("+CMGS:"))
			   {
				  rs= rs.substring(rs.indexOf(":")+1).trim();
				  mr=Integer.parseInt(rs);
				  rs=br.readLine();
				  //rs ok error 
				  break;
			    }
			   } else continue;
	         
	     
	   }//for
	   
	   return mr;
	   
	}
	
	
	
	
	
	protected static int Send(Connecter Con,String PduMsg,long delay) throws Exception
	{ //发送失败返回0  发送成功返回 MR值  连接器故障返回-1
		CommConnecter con=(CommConnecter)Con;
		int len=(PduMsg.length()-2)/2;
		int m;
		  while(con.reader.ready()) m=con.reader.read();
		  //while( br.ready())  br.read();
		con.SendDataAnsi("AT+CMGF=0;+CMGS="+len+"\r\n");
		//Thread.sleep(500);
		con.SendDataAnsi(PduMsg);
		//Thread.sleep(500);
		con.writer.write(0x1A);
		//Thread.sleep(50);
		con.writer.flush();
		//Thread.sleep(500);
		String rs=new String();
		int mr=-1;
		for(int i=0;i<6;i++)
		{
		 rs=con.reader.readLine();
		
	     if(rs.length()<3) continue;
	     
		 if(rs.startsWith("+CMGS:"))
		 {
			 rs=rs.substring(6);
			 mr=Integer.parseInt(rs.trim());
			 break;
			
		 }
		 if(rs.startsWith("OK")) return 0;
		 if(rs.startsWith("ERROR")) return -1;
	     
		 
		}
		
		return mr;
		
	}
	public static String[] SendPdus(String[] tels,String msg)throws Exception
	{
	  boolean isEng=PduUtil.IsEnglish(msg);
	  String ud=PduUtil.Msg2Hex(msg,isEng);
	  String udl=PduUtil.Byte2Hex(ud.length()/2);
	  String[] pdus=new String[tels.length];
	  String dcs;
	  if(isEng) dcs="04"; else dcs="08";
	  for(int i=0;i<tels.length;i++)
	  		  pdus[i]="0011FF"+PduUtil.Tel2DA(tels[i])+"00"+dcs+"FF"+udl+ud;
	   return pdus;
	}
	public static int[] SendAllSms(Connecter con,long delayRead, long delaySend, String[] tels,String msg) throws Exception
	{  
	   int num=tels.length;
	   int[] returnArray=new int[num];
	   String[] PduMsg=SendPdus(tels,msg);
	     for(int i=0;i<num;i++)
	     {
	    	 //取系统当前时间
	    	 returnArray[i]=Send(con,PduMsg[i],delayRead);
	    	 System.out.println(tels[i]+"  Send MR:  "+returnArray[i]);
	    	 //取系统当前时间
	    	 //Thread.sleep(delaySend);//保证每条短信发生间隔是8-10s
	    	
	     }
	     return returnArray;
	}
	public  int  SendSms(Connecter con,long delay) throws Exception
	{
		 return  Send(con,Pdu,delay);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -