火急: C语言--串口读取数据时的问题(高分100分)解决以上给分

liyongbo 2006-09-05 02:04:38
我在使用C语言写串口读取时,使用中断方式,使用下面函数:
unsigned char read_char(void)
{
unsigned char unch;
if(buffout!=buffin)
{
unch=Buffer[buffout];
buffout++;

if(buffout>=BUFFLEN)
buffout=0;
return (unch);
}
else
return (0xFF);
}

在主函数中用死循环读取:
do
{
RevCharCom1=read_char();
if(RevCharCom1!=0xFF)
{

}



}while(1);

但是我有时,串口返回的是0xFF,这时也被过滤掉;

我把函数类型改成 int read_char(void) ;函数中改为 return(-1)
在读时返回无数个 FF.

怎么解决这个问题呀? 谢谢啦!
...全文
379 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyongbo 2006-09-05
  • 打赏
  • 举报
回复
跟大家说的一样,函数的返回值类型不对!改大一点int型就可以了!


谢谢了!
lonelyair 2006-09-05
  • 打赏
  • 举报
回复
说了是中断函数
unsigned char read_char(void) --interrupt 0
liyongbo 2006-09-05
  • 打赏
  • 举报
回复

感谢兄弟们!问题解决了!

我要分分了!
tailzhou 2006-09-05
  • 打赏
  • 举报
回复
那你的函数不能这样定义的。要象bisc_sunny(总是当时携手处,游遍芳丛)那样处理
tailzhou 2006-09-05
  • 打赏
  • 举报
回复
你“那么会读无数个 0xFE”是什么意思??

总不能是说:
if(RevCharCom1!=0xFE)
{
//这里读到RevCharCom1==0xFE??
}

吧?
liyongbo 2006-09-05
  • 打赏
  • 举报
回复
我接收的东西是0--FF之间的数,所以不能过滤掉任何一个.

liyongbo 2006-09-05
  • 打赏
  • 举报
回复
没内容的话, 我在循环里是不是这样写:
do
{ RevCharCom1=read_char();
if(RevCharCom1!=0xFE)
{

}
}
这样的话, 我也把0xFE过滤掉了呀?


tailzhou 2006-09-05
  • 打赏
  • 举报
回复
缓冲区读完了的时候,buffout==buffin,会一直执行return(-2)呀;
bisc_sunny 2006-09-05
  • 打赏
  • 举报
回复
没那么复杂吧...
bisc_sunny 2006-09-05
  • 打赏
  • 举报
回复
bool read_char(char *s)
{
unsigned char unch;
if(buffout!=buffin)
{
unch=Buffer[buffout];
buffout++;

if(buffout>=BUFFLEN)
buffout=0;
*s = unch;
return true;;
}
else
return false;
}

do
{
if (read_char(&RevCharCom1) != false)
{
...
}
}while(1);

liyongbo 2006-09-05
  • 打赏
  • 举报
回复
RevCharCom1的类型是unsugned char 的!
tailzhou 2006-09-05
  • 打赏
  • 举报
回复
那么会读无数个 0xFE

这是正常的吧:缓冲区没内容了。
tailzhou 2006-09-05
  • 打赏
  • 举报
回复
你的RevCharCom1的类型是unsugned char还是int??
liyongbo 2006-09-05
  • 打赏
  • 举报
回复
RevCharCom1的类型是unsigned char类型.
如果改为 return(-2) 那么我在读串口时
if(RevCharCom1!=-2)

那么会读无数个 0xFE

为什么?
tailzhou 2006-09-05
  • 打赏
  • 举报
回复
因为他的函数签名改成了 int read_char(void)
所以 -1跟0xff 还是有区别的。0xff成了255;
jixingzhong 2006-09-05
  • 打赏
  • 举报
回复
恩,
这个还是有一点小问题需要说一下:

unsigned char read_char(void)
函数返回 unsigned char,
然后你return一个负数 ...

改成 return 0 吧 ...
jixingzhong 2006-09-05
  • 打赏
  • 举报
回复
你改成 return(-2)
其他的都行 ...
jixingzhong 2006-09-05
  • 打赏
  • 举报
回复
函数中改为 return(-1)

..
-1 就是 0xFF
tailzhou 2006-09-05
  • 打赏
  • 举报
回复
RevCharCom1的类型?
liyongbo 2006-09-05
  • 打赏
  • 举报
回复
高手请回呀!
爆出炉:微软等数据结构+算法面试100题首次完整亮相 ---100题V0.1版最终完成 作者:July 2010年12月6日 微软等100题系列V0.1版终于结束了。 从2010年10月11日当天最初发表前40题以来,直至此刻,整理这100题,已有近2个月。 2个月,因为要整理这100题,很多很多其它的事都被我强迫性的搁置一旁, 如今,要好好专心去做因这100题而被耽误的、其它的事了。 这微软等数据结构+算法面试100题系列(题目+答案),到底现在、或此刻、或未来, 对初学者有多大的意义,在此,我就不给予评说了。 由他们自己来认定。所谓,公道自在人心,我相信这句话。 任何人,对以下任何资料、题目、或答案,有任何问题,欢迎联系我。 作者邮箱: zhoulei0907@yahoo.cn 作者声明: 转载或引用以下任何资料、或题目,请注明作者本人July及出处。 向您的厚道致敬,谢谢。 好了,请享受这完完整整的100题吧,这可是首次完整亮相哦。:D。 ............ ............ 答案系列: 5.[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案] http://download.csdn.net/source/2832862 6.[答案V0.2版]精选微软数据结构+算法面试100题[前20题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 7.[答案V0.1版]精选微软数据结构+算法面试100题[前25题] http://download.csdn.net/source/2796735 剩下的第41-100题答案,正在整理中。预计明年整理公布。 请各位,细心的等待。谢谢。 更多资源,下载地址: http://v_july_v.download.csdn.net/ ================================== 更多详情,请参见本人博客: My Blog: http://blog.csdn.net/v_JULY_v --------------------------------------------------------------------------------------- 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧