Chinaunix首页 | 论坛 | 博客
  • 博客访问: 944651
  • 博文数量: 264
  • 博客积分: 10107
  • 博客等级: 上将
  • 技术积分: 2455
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 16:34
文章分类

全部博文(264)

文章存档

2012年(1)

2011年(11)

2010年(128)

2009年(82)

2008年(42)

我的朋友

分类: C/C++

2010-04-09 16:59:54

CDMA猫用AT命令发中文短信(C#)

CDMA猫,只能发文本短信。发中文短信居然是UNICODE而不是PDU,无法在超级终端里输入。只能写程序。
网上这个问题谈论地比较多,做起来比较累,还偶尔会出乱码。还是将C#的成功代码帖一下吧。
转载请注明来源
void SendCHNSms(string content,string phone)
{
            //中文CDMA发送,UNICODE编码字节
            byte[] b = Encoding.BigEndianUnicode.GetBytes(content);
            //CDMA的AT命令手机号码前面不能加86,否则虽然显示成功发送,但短信中心回应错误代码5
            if(phone.IndexOf("86")==0)
            {
                phone = phone.Substring(2);
            }
            //假设是COM3口
            SerialPort sp = new SerialPort("com3");
            //和GSM猫不同,波特率是115200,这个问题困扰了很久的说
            sp.BaudRate = 115200;
            sp.Open();
            //设置中文短信
            sp.Write("AT+WSCL=6,4\r");
            Thread.Sleep(500);
            //设置文本格式短信
            sp.Write("AT+CMGF=1\r");
            Thread.Sleep(500);
            //设置发送的号码和发送内容字节长度
            sp.Write("AT+CMGS=\"" + phone + "\"," + b.Length + "\r");
            Thread.Sleep(500);
            //写入
            sp.Write(b, 0, b.Length);
            Thread.Sleep(500);
            //写入CTRL+Z结束短信内容,注意在UNICODE模式下需要两个字节,这个也是不能在超级终端下操作的原因
            byte[] b2 = new byte[] { 0x00, 0x1a };
            sp.Write(b2, 0, b2.Length);
            sp.Close();
}
 
 

我的心得:
波特率不一定是115200,要看不同厂家的猫出厂设置,有可能是9600或者其他。
"AT+CMGS=“”----直接加入电话号码,不加信文长度也可以发送成功
直接对中文发送时,会出现乱码,在最后一个字符时,加一个空格,就可以避免乱码。
 
稍后再附上AT指令方面的介绍。
阅读(1621) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

2011-11-15 15:42:11

你好!在网上看了你的帖子,认真的学习了。我在测试过程中发现一个问题,当发送短信后,收到如下信息
13211xxxxxx:
+CMGS:11
OK
+CDS:2,11,"13211xxxxxx",129,"02/11/13,23 :05 :03","02/11/13,23 :05 :03",34
当我再次执行发送时,因为+CDS在缓存中,at指令无法发送成功。请问有什么办法可以解决吗?谢谢!

chinaunix网友2011-04-10 18:23:31

你好,CDMA短信猫,你开发过程中是否遇见过这样的问题,就是低端手机发送一条到短信猫,猫收到短信后,给低端手机回复一条,低端手机收到的短信最后三个字是乱码。智能手机发送没有这个问题。。。真的是很奇怪哦。 我的QQ;172223621

chinaunix网友2011-01-11 10:48:11

恩,我试了下,发送成功了,谢谢前辈

chinaunix网友2010-06-25 10:45:05

前辈真的发送成功了么?我用各种波特率都试过了,编不编码,中英文怎么改,发送都没反应,也不报错,请教可能是何原因啊? 我用的是LG CDMA手机