火急: 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.

怎么解决这个问题呀? 谢谢啦!
...全文
384 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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)呀;
格兰特杨 2006-09-05
  • 打赏
  • 举报
回复
没那么复杂吧...
格兰特杨 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
  • 打赏
  • 举报
回复
高手请回呀!
WPS Office 2019 是一款功能丰富的办公软件套装,它整合了文字、表格、演示、PDF 等组件,具备体积小巧、功能丰富、兼容性强等特点,能满足日常办公的多种需求。 功能组件丰富:包含 WPS 文字、WPS 演示、WPS 表格、WPS PDF 等组件,可用于文档编辑、表格计算、幻灯片制作、PDF 处理等,支持 DOC、DOCX、XLS、XLSX、PPT 等多种格式,能与 Microsoft Office 较好地兼容。 支持云存储与协作:用户登录 WPS 账号后,可实现多终端、跨平台的数据同步,还能与他人协同办公,文档可通过微信、QQ 等社交平台一键享。 PDF 功能强大:提供沉浸式 PDF 阅读体验和稳定的编辑服务,支持一键编辑 PDF 文档内容。借助 OCR 技术,可精准转换文档、表格、PPT、图片等格式的文件。 界面设计优化:具有全新视觉设计,默认皮肤舒适清爽,还支持桌面背景、界面字体、皮肤、格式图标等个性化设置。同,文档标签可拖拽成独立窗口或合并,用户可自主选择文档显示方式,还能将文件放置在不同工作区,便于类浏览与管理。 内置实用工具:内置了简单的网页浏览器,点击文档中的链接会默认用其打开,可进行网页添加到首页、另存为 PDF 等操作。此外,“应用中心” 集成了输出转换、文档助手、安全备份等多种实用功能。 模板资源丰富:稻壳商城提供了大量模板、范文、图片等素材资源,涵盖求职简历、总结计划、合同协议等常见文档类型,方便用户快速创建专业文档。 表格功能特色突出:支持通过关键词快速切换工作表,设有阅读模式和护眼模式。还可类合并单元格,以及拆合并单元格并填充内容。公式编辑器中可轻松完成公式嵌套,筛选可通过 “仅筛选此项” 一步完成特定值筛选,还能根据筛选条件生成动态析图表。另外,“特色功能” 和 “智能工具箱” 菜单中包含 PDF

70,023

社区成员

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

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