打印
[DSP编程]

串口查询方式

[复制链接]
1064|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
current杨|  楼主 | 2013-11-25 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是想将串口发送的字符先存储起来,就是先不发送。然后对存储的数据进行变换之后再发送。我通过串口调试助手发送的是1#2#3#。   我想通过变换后SCITXBUF发送的数据是123。    但是我在观察窗口看到存数器当中存储的数据不是49 35 50 35 51 35。而是 49 255 49 255 49 255。望各位大神帮我看看。
for(;;)
        {
                if((SciaTx_Ready() == 1) && (Send_Flag == 1))
                {
                       
                        SciaRegs.SCITXBUF=n;
                        Send_Flag = 0;
                        for(j=0;j<10;j++)
                        {
                            Sci_VarRx[j]=0;
                        }
                        /*i++;
                        if(i == 100)
                        {
                                i = 0;
                               
                        }*/
                }
               
   
           
               
                #if !SCIA_INT
                if(SciaRx_Ready() == 1)
                {
                       
                       
                        Sci_VarRx[j] = SciaRegs.SCIRXBUF.all;
                        Send_Flag=0;
                       
                        if(Sci_VarRx[j]==35)
                        {
                            m_keyflag++;                     /*接收到的#号字符的数目*/
                        }
                            j++;
                               
                        if(m_keyflag==3)
                        {
                            n=ChangeToInt(j);               /*转换成整形*/
                                Send_Flag=1;
                        }
                       
                       
                       
                }
       
                #endif
        }
          
}        
ChangeToInt(int num)
{
    int i;
        int door;
        for(i=0;i<num;i++)
        {
            if((Sci_VarRx[i]==35)&&(i!=num-3)&&(i!=num-1))
                {
                   door=i;
                }
                m=Sci_VarRx[door-1]*100+Sci_VarRx[door+1]*10+Sci_VarRx[door+3];
                return m;
        }
}

相关帖子

沙发
zhangmangui| | 2013-11-25 13:39 | 只看该作者
字符  数字应该乱了吧  Sci_VarRx[j]==35  代码中的这句是去判断是否等于十进制的35
而你发送的应该是字符

使用特权

评论回复
板凳
current杨|  楼主 | 2013-11-25 19:25 | 只看该作者
我串口发送的是1#2#3#对吧,那存储的时候我存储的是他的ASCII码咯。  就是判断Sci_VarRx[j]是否等于‘#’字符的ASCII码。

使用特权

评论回复
地板
zhangmangui| | 2013-11-25 23:43 | 只看该作者
current杨 发表于 2013-11-25 19:25
我串口发送的是1#2#3#对吧,那存储的时候我存储的是他的ASCII码咯。  就是判断Sci_VarRx[j]是否等于‘#’字 ...

嗯 是的

使用特权

评论回复
5
hczsea| | 2013-11-26 14:36 | 只看该作者
你的Sci_VarRx空间大小,还有就是j的初值呢?
还有你的ChangeToInt(int num)函数中 door没有初值,循环i=0时,m值计算都有溢出了。。。

使用特权

评论回复
6
current杨|  楼主 | 2013-11-26 20:27 | 只看该作者
我只给了主函数的,Sci_VarRx空间没问题,再改了改。没什么问题了。

使用特权

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

本版积分规则

15

主题

42

帖子

0

粉丝