求8051(单片机)和TC35I通讯发送短信的完整示例(100分)

  • 主题发起人 主题发起人 goodpb2006
  • 开始时间 开始时间
G

goodpb2006

Unregistered / Unconfirmed
GUEST, unregistred user!
我最近在编写一个通过8051的串口向TC35I发送命令,让TC35I发送短信到指定手机
但一直无法发送出短信,设计是采用PDU模式
有哪位大虾有这方面的资料,请提供帮助,最好是完整的源码,本人对单片机编程不蛮熟,谢谢
 
刚刚做给这个东西,不过我是用ARM来做的,不过有些东西还是可以参考的
没有办法发出短信?不知道到你有没有用at指令通过串口对tc35发过指令,比如win自带的超级终端就可以将就着用,有时间也可以自己做一个串口的调试工具,应该先从这里开始入手,把at指令集先熟悉下,TC35收到指令以后回自动向串口信息,比如OK,err等等.

反之,在8051上写好程序以后,也应该以这样的方式通过串口传回PC进行调试的.主要是看看是不是8051传上来的是不是你已经验证过的at指令.

我有用C写的啊,不知道你用汇编呢还是什么的,反正用汇编写这个肯定是恶梦啊.
后来我遇到的最大问题是怎么处理中文unicode转gb,这里有很多乱七八糟的问题,最大的问题是存储器容量不够,用51更容易出现这样的问题.还有就是关于中文短的unicode提取的问题,这里也有些问题,用的方法也不是很优化.
代码我丢在学校了,回头再找找.
 
关注~~!!!需要这方面资料.
 
uint8 snd1[]={"AT/r"};
uint8 snd2[]={"AT+CMGF=1/r"};
uint8 snd3[]={"AT+CMGS=136××××××××/r"};
uint8 snd4[]={"1# Alarm/x1A"};
uint8 snd5[]={"ATD 136×××××××;/r"};

switch(keyIn(KeyS)){
case 0x1:
UART1_SendStr(snd1); // 发AT命令,测试Modem
dspP=0;;
break;
case 0x2:
UART1_SendStr(snd2);
// 设置短信为文本格式

break;
case 0x3:
UART1_SendStr(snd3);
// 收到报警信号,拨报警电话号码

break;
case 0x4:
UART1_SendStr(snd4);
// 拨报警电话号码,准备发送短信

break;
case 0x5:
UART1_SendStr(snd5); // 拨报警电话号码

break;

}

void UART1_SendStr (uint8 const *str)
{
while (1)
{
if (*str == '/0') break; // 遇到结束符,退出
while ((U1LSR & 0x20) == 0); // 等待发送寄存器空
U1THR = (*str++); // 发送数据
}
}


很教程了,TXT方式的就是这样了,PDU部分的代码我放在学校里了,希望对你有帮助.
 
谢谢SavageXYA,你给的代码我先研究下
我是用WAVE工具编程的,基本上就是C的代码
如果你能拿到PDU方式的代码,请发邮件到goodpb@sina.com,再次谢谢
 
uint8 snd2[]={"AT+CMGF=1/r"};
这个改下就是PDU方式了,那个at指令我忘记了..
 
接受答案了.
 
后退
顶部