WAVECOM CDMA Modem 发送短信步骤
2009年06月17日 23:51
CDMA Modem发送信息,在超级终端模式下尝试发送信息时,需要使用以下命令格式: 不能以PDU格式发送 。需要将 内容转换成Unicode编码,再发送出去。 需要用到的AT指令: AT+WSCL=6,4 AT+CMGF=1 AT+CNMI=2,1,0,1,0(此指令可参照自身设置而定) AT+CMGS="手机号码", 长度回车( 长度为 内容转换为Unicode编码后的 长度) 输入Unicode编码后的 内容以Ctrl+Z结尾 然后手机会返回发送确认信息 |
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); } //假设是COM8口 SerialPort sp = new SerialPort("com8"); //和GSM猫不同,波特率是115200,这个问题困扰了很久的说 sp.BaudRate = 115200; sp.Open(); textBox1.Text = "COM8端口打开成功!"; //设置中文短信 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"); textBox1.Text = "正在准备发送!"; Thread.Sleep(500); //写入 sp.Write(b, 0, b.Length); textBox1.Text = "正在发送!"; Thread.Sleep(500); //写入CTRL+Z结束短信内容,注意在UNICODE模式下需要两个字节,这个也是不能在超级终端下操作的原因 byte[] b2 = new byte[] { 0x00, 0x1a }; sp.Write(b2, 0, b2.Length); sp.Close(); textBox1.Text = "发送完成!"; }