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=0;
                        }
                        /*i++;
                        if(i == 100)
                        {
                                i = 0;
                               
                        }*/
                }
               
   
           
               
                #if !SCIA_INT
                if(SciaRx_Ready() == 1)
                {
                       
                       
                        Sci_VarRx = SciaRegs.SCIRXBUF.all;
                        Send_Flag=0;
                       
                        if(Sci_VarRx==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==35)&&(i!=num-3)&&(i!=num-1))
                {
                   door=i;
                }
                m=Sci_VarRx*100+Sci_VarRx*10+Sci_VarRx;
                return m;
        }
}

zhangmangui 发表于 2013-11-25 13:39

字符数字应该乱了吧Sci_VarRx==35代码中的这句是去判断是否等于十进制的35
而你发送的应该是字符

current杨 发表于 2013-11-25 19:25

我串口发送的是1#2#3#对吧,那存储的时候我存储的是他的ASCII码咯。就是判断Sci_VarRx是否等于‘#’字符的ASCII码。

zhangmangui 发表于 2013-11-25 23:43

current杨 发表于 2013-11-25 19:25 static/image/common/back.gif
我串口发送的是1#2#3#对吧,那存储的时候我存储的是他的ASCII码咯。就是判断Sci_VarRx是否等于‘#’字 ...

嗯 是的

hczsea 发表于 2013-11-26 14:36

你的Sci_VarRx空间大小,还有就是j的初值呢?
还有你的ChangeToInt(int num)函数中 door没有初值,循环i=0时,m值计算都有溢出了。。。

current杨 发表于 2013-11-26 20:27

我只给了主函数的,Sci_VarRx空间没问题,再改了改。没什么问题了。
页: [1]
查看完整版本: 串口查询方式