Open GoogleCodeExporter opened 9 years ago
我试了一个方法
用您GsmModem.cs中的
private Queue<int> newMsgIndexQueue = new Queue<int>();//新消息序号
然后再serialPort1_DataReceived中添加
if (temp.Substring(0, 6) == "+CMTI:")//收到短信标记
{
newMsgIndexQueue.Enqueue(Convert.ToInt32(temp.Split(',')[1])); //存储新信息序号
}
自己定义一个timer,时间设为10秒,在它的Tick事件中添加如下��
�码,同时发送短信的手机少的时候还可以,多的时候就不行�
��。
int Msg_Count = newMsgIndexQueue.Count;
if (Msg_Count > 0)
{
Thread.Sleep(5000);
//注销事件关联,为发送做准备
serialPort1.DataReceived -= serialPort1_DataReceived;
PDUEncoding pe = new PDUEncoding();
for (int i = 0; i < Msg_Count; i++)
{
int int_NewMsgIndex = newMsgIndexQueue.Dequeue();
string str_NewMsg_Ori = ReadMsgByIndex(int_NewMsgIndex);//获取短信原始内容
string str_NewMsg = pe.PDUDecoder(str_NewMsg_Ori).SmsContent;//短信解码内容
string str_Phone = pe.PDUDecoder(str_NewMsg_Ori).PhoneNumber;//电话号码
if (str_NewMsg.Trim() == "1")
{
SendMsg(str_Phone, "2");
}
}
serialPort1.DataReceived += serialPort1_DataReceived;
}
我想如何判断串口是否正在接收短信,如果正在接收短信的��
�就不运行上面代码,是不是就行了。可是怎么判断呢?
Original comment by duhongyu...@gmail.com
on 28 Sep 2011 at 2:56
还不是太明白这个需求,手机或Modem一般收发短信速度比较慢
,如果需要收发量都比较大,建议收发短信的处理分开,如��
�手机一直处于繁忙状态,会丢失接收短信的。
Original comment by wyun...@gmail.com
on 19 Jan 2012 at 3:51
Original issue reported on code.google.com by
duhongyu...@gmail.com
on 27 Sep 2011 at 12:16