单片机程序片段1:(C51)
for(i=0;i{
if(i > 0 && i < chRecCounter-1) //首尾字节是接收到的起始和结束字符,不作处理;只对数据部分作处理
{
if(arrRecBuf[i] == STX || arrRecBuf[i] == ETX) //STX,ETX是帧头和帧尾
{
arrSendBuf[j] = CtrlChar;
j++;
}
}
arrSendBuf[j] = arrRecBuf[i];
j++;
}
for(i=0;i{
SBUF = arrSendBuf[i];
while(TI == 0)
{
}
TI = 0;
}
这段程序经测试没有问题.
单片机程序片段2:
for(i=0;i{
if(i > 0 && i < chRecCounter-1)
{
if(arrRecBuf[i] == STX || arrRecBuf[i] == ETX)
{
SBUF = CtrlChar; //插入控制字符
while(TI == 0)
{
}
TI = 0;
}
}
SBUF = arrRecBuf[i];
while(TI == 0)
{
}
TI = 0;
}
这段程序得不到希望的结果,PC机总是显示一个多余的帧尾字符。(利用串口调试助手没有这个问题)。
我能想到的区别是一帧数据里每个字符之间的间隔可能会不同(片段1是相同的,而2不相同),难道这会有影响吗?那用串口调试助手又该如何解释呢?
版主,一定要救我呀!谢谢!
--------------------next---------------------
阅读(1114) | 评论(0) | 转发(0) |