打印

单片机与TC35I模块间的通信问题

[复制链接]
2212|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxst123|  楼主 | 2010-8-23 18:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟最近在研究TC35I模块,遇到了一些问题,在此想向论坛里的各位前辈们请教请教。
本人在开发的时候已经能够实现TC35I与PC机之间的通信,并且能够成功的发送接收短消息,可是现在在做单片机与TC35I通信时,却没能正常进行。现在想请教各位前辈们,有没有什么方法能够监控TC35I返回相应的响应(有没有什么方法测试单片机正常连接了TC35I)!
在此先谢谢大家了

相关帖子

沙发
chunyang| | 2010-8-23 18:43 | 只看该作者
可以用PC串口来测试你的MCU所发出的指令,注意MCU与模块的连线必须是RX-RX,TX-TX,指令后要加“回车符”和“换行符”。

使用特权

评论回复
板凳
gxst123|  楼主 | 2010-8-24 17:45 | 只看该作者
谢谢chunyang大哥的指教,现在我把程序考入单片机,然后用单片机与TC35i模块相连接,测试单片机的串口有没有指令收发,若有的话,说明单片机能够与TC35I模块通信。可是结果并无OK返回,程序我是这样写的(主要是想测试单片机能够与模块通信,所以只写了AT联机指令)还望论坛里的各位大虾们一起探讨,指出错误与不足,共同提高进步啊~~谢谢大家了~~
#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

#define Rsbuf_N  50

unsigned char Rsbuf[Rsbuf_N],k;
uchar code table[]="AT";

/*****************Init_UART串口初始化***************/
void Init_UART()
{
        TMOD=0x20;
        TH1=0xFD;
        TL1=0xFD;
        TR1=1;                //定时器1运行控制位
        SCON=0x50;            //UART(串口)方式1:8位UART;REN=1:允许接收   
        PCON=0x00;            //SMOD=0:设置波特率不加倍
        EA=1;
//        ES=1;
}

/**************SendASC 发送一个ASC*****************/
void SendASC(uchar ch)
{
        ES=0;
        TI=0;                     //clear send flag 清除发送标志TI1
        SBUF=ch;                  //送入缓冲区
        while(!TI);               //TI发送中断标志位;等待数据发送完毕
        TI=0;                     //软件清零
        ES=1;
}

/**************SendStr 发送字符串*******************/
void SendStr(uchar *str,uint len)
{
        while(len--)
        {
                SendASC(*str++);
        }
}


void main()
{
        Init_UART();

        SendStr(table,2);
        SendASC(0x0D);
        SendASC(0x0A);
//        ES=1;
        while(1);
}

void gsm() interrupt 4
{
        EA=0;    //关中断,防止其他中断打扰
        RI=0;
        Rsbuf[k++]=SBUF;
        if(k>1)
                k=0;
        EA=1;
}

使用特权

评论回复
地板
新好男孩| | 2010-9-16 23:57 | 只看该作者
LS刚学单片机吧,对于GSM模块的控制串口部分我是这样做了,在串口开一个接收缓冲区,串口中断只管接收 ,接收到数据后打开一个TIMEOUT定时器,判断收到的数据是否是一连串的,如果不是,就关闭串口接收,用正则匹配的方法来处理收到的数据。
如:
串口收到的数据与数据之间中断了50MS,就锁串口。用:
if (strstr(Rsbuf, "ok"))
{
      //收到OK怎么处理
}
else
{
     //怎么处理
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

21

帖子

1

粉丝