串口查询方式
我是想将串口发送的字符先存储起来,就是先不发送。然后对存储的数据进行变换之后再发送。我通过串口调试助手发送的是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;
}
} 字符数字应该乱了吧Sci_VarRx==35代码中的这句是去判断是否等于十进制的35
而你发送的应该是字符 我串口发送的是1#2#3#对吧,那存储的时候我存储的是他的ASCII码咯。就是判断Sci_VarRx是否等于‘#’字符的ASCII码。 current杨 发表于 2013-11-25 19:25 static/image/common/back.gif
我串口发送的是1#2#3#对吧,那存储的时候我存储的是他的ASCII码咯。就是判断Sci_VarRx是否等于‘#’字 ...
嗯 是的 你的Sci_VarRx空间大小,还有就是j的初值呢?
还有你的ChangeToInt(int num)函数中 door没有初值,循环i=0时,m值计算都有溢出了。。。 我只给了主函数的,Sci_VarRx空间没问题,再改了改。没什么问题了。
页:
[1]