中国电信CDMA无线上网卡短信收发

2023-11-23 12:10

本文主要是介绍中国电信CDMA无线上网卡短信收发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

发送短信
  ///   <summary>
        
///  发送短信
        
///   </summary>
        
///   <param name="phone"> The phone. </param>
        
///   <param name="message"> The message. </param>
         public   static   void  SendMessageBySendPhone( string  phone,  string  message)
        {
            BaseCode.BaseTerm.phone.MessageSending 
=   true ;
            
string  text  = @" AT^HCMGS="" "   +  phone  +   @" "" " ;
            
string  text2  =  message;

            BaseTerm.term.SendString(text);
            BaseTerm.term.SendCtrl(
" CR " );
            Thread.Sleep(
300 );
            
byte [] msgbytes  =  Encoding.Unicode.GetBytes(text2);
            
byte [] msgbytesrnd  =   new   byte [msgbytes.Length];
            
for  ( int  i  =   1 ; i  <=  msgbytes.Length; i  =  i  +   2 )
            {
                msgbytesrnd[i 
-   1 =  msgbytes[i];
                msgbytesrnd[i] 
=  msgbytes[i  -   1 ];
            }

            BaseTerm.term.SendBytes(msgbytesrnd);
            BaseTerm.term.SendString(
" " );
            BaseTerm.term.SendCtrl(
" CR " );
        }

 

 

 

有短信进入
  // todo:有短信进入
                _reg  =   new  Regex( @" \+CMTI:[\s]*""(?<Mem>[A-Z a-z 0-9_]+)""[\s]*,[\s]*(?<Index>\d+) " );
                MatchCollection match 
=  _reg.Matches(cmd);
                
foreach  (Match m  in  match)
                {
                    Console.WriteLine(m.Groups[
" Mem " ].Value  +   " , "   +  m.Groups[ " Index " ].Value);
                    
if  (ShowInfo  !=   null )
                        ShowInfo(
this " 新短信,存储位置: "   +  m.Groups[ " Mem " ].Value  +   "  索引号: "   +  m.Groups[ " Index " ].Value);

                    
if  (MessageCNMIEvent  !=   null )
                        MessageCNMIEvent(
this , Convert.ToInt32(m.Groups[ " Index " ].Value), m.Groups[ " Mem " ].Value);

                    MessageCommands.GetMessageCMD(m.Groups[
" Index " ].Value,  1 );
                }

 

 

 

显示短信内容
   // todo:显示短信内容
                 /*
                 * 取值说明
                 * <index> 整型值,在存储器中的位置
                 * <mode> 短信状态的修改模式:
                 * 0 改变短信为已读状态
                 * 1 不改变短信的读取状态
                 * <callerID> 短消息发送方的号码
                 * <format> 表示该短消息的编码格式,取值参考^HCMGW
                 * <year, month, day, hour, minute,second>为接收到短消息时的年、月、日、小时、分钟和
                 * 秒。
                 * <Length> 接收到短消息的长度。
                 * <lang> 语言,取值参考^HCMGW
                 * <prt> 短信优先级,取值参考^HCMGW
                 * <Prv> 保密级别
                 * 0 Normal;
                 * 1 Restricted;
                 * 2 Confidential;
                 * 3 Secret
                 * <type> 短信类型
                 * 0 Normal;
                 * 1 CPT;
                 * 2 Voice Mail;
                 * 3 SMS Report
                 * <stat> 短信类型,取值参考^HCMGW
                 * <Msg> 接收到的短消息。
                 * <ctrl-Z>:标识一条短信息内容的结束,编码方式为非UNICOD方式下字符为:'0x1A',
                 * 编码方式为UNICOD方式下字符为:'0x001A'
                 
*/
                
// ^HCMGR:07713997270,2010,02,28,10,43,50,0,6,34,2,0,0,1

                _reg 
=   new  Regex(
                    
@" \r\n\^HCMGR:[\s]*(?<Caller>\d*)[\s]*,[\s]*(?<Year>\d*)[\s]*,[\s]*(?<Month>\d*)[\s]*,[\s]*(?<Day>\d*)[\s]*,[\s]*(?<Hour>\d*)[\s]*,[\s]*(?<Minute>\d*)[\s]*,[\s]*(?<Second>\d*)[\s]*,[\s]*(?<Lang>\d*)[\s]*,[\s]*(?<Format>\d*)[\s]*,[\s]*(?<Length>\d*)[\s]*,[\s]*(?<Prt>\d*)[\s]*,[\s]*(?<Prv>\d*)[\s]*,[\s]*(?<Type>\d*)[\s]*,[\s]*(?<Stat>\d*)\r\n " ,
                    RegexOptions.IgnoreCase);

                MatchCollection match 
=  _reg.Matches(cmd);
                
foreach  (Match m  in  match)
                {
                    
string  format  =  m.Groups[ " Format " ].Value;

                    
int  start  =   0 ;
                    
int  end  =   0 ;
                    
for  ( int  i  =   0 ; i  <  bytes.Length; i ++ )
                    {
                        
if  (bytes[i].ToString()  ==   " 10 "   &&  start  ==   0   &&  i  >   1 )
                        {
                            start 
=  i;
                        }
                        
if  (bytes[i].ToString()  ==   " 26 "   &&  end  ==   0 )
                        {
                            end 
=  i;
                        }
                    }
                    
int  len  =  bytes.Length  -   9   -  start;
                    
if  (len  %   2   !=   0 ) len  =  len  -   1 ;
                    var msgbytes 
=   new   byte [len];
                    
// Console.WriteLine("未截取:" + BitConverter.ToString(bytes));
                    Array.Copy(bytes, start  +   1 , msgbytes,  0 , len);
                    
// Console.WriteLine("转换前:" + BitConverter.ToString(msgbytes));
                     if  (format  ==   " 6 " )
                    {
                        
for  ( int  i  =   1 ; i  <=  msgbytes.Length; i  =  i  +   2 )
                        {
                            
byte  temp  =  msgbytes[i  -   1 ];
                            msgbytes[i 
-   1 =  msgbytes[i];
                            msgbytes[i] 
=  temp;
                        }
                    }
                    
if  (MessageHCMGREvent  !=   null )
                        MessageHCMGREvent(
this , m.Groups[ " Caller " ].Value,
                                          Convert.ToDateTime(m.Groups[
" Year " ].Value  +   " - "   +  m.Groups[ " Month " ].Value  +
                                                             
" - "   +
                                                             m.Groups[
" Day " ].Value  +   "   "   +  m.Groups[ " Hour " ].Value  +   " : "   +
                                                             m.Groups[
" Minute " ].Value  +   " : "   +  m.Groups[ " Second " ].Value),
                                          Encoding.Unicode.GetString(msgbytes));
                    
// Console.WriteLine("转换后:"+BitConverter.ToString(msgbytes));
                     if  (ShowInfo  !=   null )
                        ShowInfo(
this , m.Groups[ " Caller " ].Value  +   " 短信内容: "   +  Encoding.Unicode.GetString(msgbytes));
                    
if  (ShowInfo  !=   null )
                        ShowInfo(
this " 字节内容: "   +  BitConverter.ToString(msgbytes));
                }

 

 

 其实短信内容解码很简单,AT串口采用的是ASCII编码,短信的内容采用的是Unicode编码,并且每个字符的高低位互换了。根据规范截取出短信的内容的byte[],进行高低位互换,在进行Encoding.Unicode.GetString,发短信反之。

转载于:https://www.cnblogs.com/Tranquilty/archive/2010/08/17/1801192.html

这篇关于中国电信CDMA无线上网卡短信收发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417863

相关文章

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

无线路由器哪个品牌好用信号强? 口碑最好的三个路由器大比拼

《无线路由器哪个品牌好用信号强?口碑最好的三个路由器大比拼》不同品牌在信号覆盖、稳定性和易用性等方面各有特色,如何在众多选择中找到最适合自己的那款无线路由器呢?今天推荐三款路由器让你的网速起飞... 今天我们来聊聊那些让网速飞起来的路由器。在这个信息爆炸的时代,一个好路由器简直就是家庭网编程络的心脏。无论你

无线领夹麦克风什么牌子好用?揭秘领夹麦克风哪个牌子音质好!

随着短视频行业的星期,围绕着直播和视频拍摄的电子数码类产品也迎来了热销不减的高增长,其中除了数码相机外,最为重要的麦克风也得到了日益增长的高需求,尤其是无线领夹麦克风,近几年可谓是异常火爆。别看小小的一对无线麦克风,它对于视频拍摄的音质起到了极为关键的作用。 不过目前市面上的麦克风品牌种类多到让人眼花缭乱,盲目挑选的话容易踩雷,那么无线领夹麦克风什么牌子好用?今天就给大家推荐几款音质好的

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

半年高达552亿元,锁定云第一,中国电信天翼云紧追不舍

【科技明说 | 科技热点关注】 刚才我注意到中国电信公布2024年中期业绩,报告期内,中国电信实现营业收入为人民币2660亿元,同比增长2.8%,其中服务收入为人民币2462亿元,同比增长4.3%;净利润为人民币218亿元,同比增长8.2%。 其中亮点,2024年上半年,天翼云保持快速增长,收入达到了552亿元,同比增长20.4%,占服务收入比升至22.4%,市场头部地位进一步巩固。 为

龙芯小本debian无线(wifi)连接设置

本人有一台龙芯8089b小本,已被我重装了debian系统。由于学习nodeJs,所以想用它当node服务器; 正准备下载node等时发现命令模式下不能自动连接无线,于是网上找来一篇debian连接wifi的文章, 来源参考http://blog.163.com/wangpeng922@126/blog/static/64133083201211131100539/ 查看网卡信息:#

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignName(签名名称)和 TemplateCode(模板code); 二、代码实现 1、项目结构 【/c

怎么利用NodeJS发送视频短信

随着5G时代的来临,企业的数字化转型步伐日益加快,视频短信作为新兴的数字营销工具,正逐步展现出其大的潜力。视频群发短信以其独特的形式和内容,将图片、文字、视频、声音融为一体,为用户带来全新的直观感受,为企业营销注入新的活力。 支持免费对接试用乐讯通PaaS平台 找好用的短信平台,选择乐讯通,短信群发|短信平台|群发短信软件|群发短信平台|乐讯通PaaS平台http://yun.loktong

Android SmsManager(短信管理器),发送短信息

AndroidManifest.xml <uses-permission android:name="android.permission.SEND_SMS"/> <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns