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

📄 listenth.java

📁 使用anydata芯片组,安装标准扩展短消息协议编写的类,可以直接发送,接受短消息
💻 JAVA
字号:
package GEOSMS;
import java.io.InputStream;
import java.io.OutputStream;


public class ListenTh extends Thread{
	private   InputStream input;
	private   OutputStream out;
	private   GeoSmsDM dm;
    public boolean thread_contral;
    private SMS sms;
	   public ListenTh(InputStream sinput,OutputStream soutput)
	   {
	      input=sinput;                           //串口读入流
	      out=soutput;                            //串口写出流
	      thread_contral=true;                    //线程循环控制参数
	      dm=new GeoSmsDM();                    //创建数据操作对象 
	      sms=new SMS(input,out);                  //创建短信操作对象
	   }
	   public void setThreadClose()
	   {
	      	thread_contral=false;                //关闭线程循环控制参数
	   }
	   /**在本线程中监控串口,若有SMSR命令,则表示dtss800模块接受到新短信;
	    * 使用AT+RSMS=0读取并删除该短信;
	    * 同时将短信内容发送到数据处理对象中处理;
	    * 将处理的结果发送回源号码。
	    */
	   public void run()
	   {
		char c;
		byte[] buffer=new byte[200];	
		String str="";
		int i=0,j=0,ptr=0,len;
		String Msg="";
	    while(thread_contral){                    //线程主循环开始
	   	try{ 		
	   	     
	   	     len=input.read(buffer);                     //从串口读取字节流
	   	     str=new String(buffer);
	   	     for(i=0;i<buffer.length;i++)
	   	        System.out.print(Integer.toHexString(buffer[i])+" ");
	   	     System.out.println(" ");
	   	     System.out.println(str);
	   	     Thread.sleep(20);
	   	 
	   	     
	   	     if(ptr==1)                       //判断短信读取状态
	   	      {j=1;ptr=0;}
	   	     if(str.indexOf("SMSR")>0)       //读取到SMSR,即转换为接收短信状态
	   	     {
	   	        System.out.println("SMSR");
	   	     	String cmd="AT+RSMS\r";    //发送读取短信命令
	   	        //  String cmd="AT+SMSR\r";     
	   	     	System.out.println(cmd);
	   	        out.write(cmd.getBytes());
	   	        ptr=1;                         //转换短信读取状态为:预备读取态
	   	     }
	   	    
	   	     System.out.println(" ");
	   	  //j=1;
	         if(j==1){	         	      
	                   
	         	         sms.ReadSmsByte(buffer);
	         	         String result="";
	         	         if(sms.getCharSet()=="UNICODE")        //判断短信字符集
	         	               result=new String(sms.getSmsData(buffer,len),"utf-16BE");
	         	         if(sms.getCharSet()=="ASCII")
	         	         	  result=new String(sms.getSmsData(buffer,len));
	         	         
	         	         System.out.println("result="+result);
	         	         String StrNum=sms.getTelNumber();	    //获取源电话号码     	         
	         	         System.out.println("number="+StrNum);  
                        String SMS=dm.lookingfor(result);//执行数据服务逻辑
	         	        sms.SendSms(StrNum,SMS);        //发送结果
	         	        j=0;                    //重置控制标识
	                   }
	           }catch(Exception e){e.printStackTrace();}
	        }                                                 //线程主循环结束
	      System.out.println("thread end");
	   }
	
}

⌨️ 快捷键说明

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