PDA

View Full Version : سوال: عدم ارسال SMS با دستورات AT در گوشی N73



man4toman
یک شنبه 03 شهریور 1387, 22:45 عصر
با سلام
من از کد زیر برای ارسال SMS استفاده میکنم:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApplication5
{
/// <summary>
/// Important AT Command to this Program :
/// 1: AT+CPMS="SM" --- Get Information About SimCard
/// 2: AT+CGML="REC READ","REC UNREAD","ALL" --- To Read Message
/// 3: AT+CGMR=# --- To Read Message
/// 4: AT+CGMD=# --- To Delete Message
/// 5: AT+CMGS --- To Send Message
/// </summary>

public partial class SMS : Form
{
string PortNameSTR = "COM4";
int BitRate = 460800;
string atCommandStr = string.Empty;
SerialPort comPort = new SerialPort();
public SMS()
{
InitializeComponent();
//COM SETTING
comPort.PortName = PortNameSTR;
comPort.BaudRate = BitRate;
comPort.Parity = Parity.None;
comPort.StopBits = StopBits.One;
comPort.DataBits = 8;
comPort.ReadBufferSize = 10000;
comPort.ReadTimeout = 1000;
comPort.WriteBufferSize = 10000;
comPort.WriteTimeout = 10000;
comPort.RtsEnable = true;
}

//5: AT+CMGS --- To Send Message
private void sendSms()
{
if (!comPort.IsOpen)
comPort.Open();
comPort.DiscardInBuffer();

comPort.DiscardOutBuffer();
//Exam :
//AT+CMGS="09155154545"
//message text
//Ctrl+Z : Char.ConvertFromUtf32(26)
//Enter : (char)13
atCommandStr = "AT+CMGS=" + Char.ConvertFromUtf32(34) + textBox1.Text
+ Char.ConvertFromUtf32(34) + (char)13 + richTextBox1.Text
+ Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr + (char)13);
//read immediately response
richTextBox1.Text = comPort.ReadExisting();
comPort.Close();
}



private void button1_Click(object sender, EventArgs e)
{
sendSms();
}

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
int res;
res = richTextBox1.Text.Length / 100;
label1.Text = richTextBox1.Text.Length.ToString();
label2.Text = "(" + res + ")";
}

}
}اما SMS (انگلیسی) سند نمیشه.نه در گوشی 6630 و نه N73.
هم بصورت 0911... و هم بصورت 98911... ارسال کردم ولی چیزی سند نمیشه.
گوشی از پورت 4 با کابل usb وصله.
منتظر کمک و راهنمایی شما هستم.
باتشکر

reza6384
پنج شنبه 07 شهریور 1387, 12:33 عصر
فکر کنم مشکل شما به احتمال زیاد از این بخش کدتون باشه :



atCommandStr = "AT+CMGS=" + Char.ConvertFromUtf32(34) + textBox1.Text
+ Char.ConvertFromUtf32(34) + (char)13 + richTextBox1.Text
+ Char.ConvertFromUtf32(26);
comPort.WriteLine(atCommandStr + (char)13);


ببینید ، اول باید حساب کنید که طول رشته PDU شما چقدره که توی بخش PDU ENCODING / Decoding بحث شده.

این رو تست کنید :



comport.writeline("AT+CMGF=0")
threading.thread.sleep(100)
comport.WriteLine("AT+CMGS=14")
threading.thread.sleep(100)
comport.writeline("0031000B819051154554F50000FF00" + CHR(26) )


با این کد یک sms خالی به شمارتون ارسال میشه. در ضمن بهتره اول pdu رو توی hyper terminal تست کنید. این رو تست کنید اگر جواب نگرفتین بگین.

noorsoft
جمعه 08 شهریور 1387, 08:32 صبح
دوست عزیز برای اتصال با پورت USB از اکتیوایکسهای موجود در زبانهای برنامه نویسی نمی شه استفاده کرد
در واقع شماره این پورتها توسط این کنترلها باز نمی شن برای اینکار شما دو راه دارین یا باید روی گوشی هایی کار کنید که به Com پورت وصل میشن و یا برای استفاده از پورت usb از توابع Api استفاده کنید