打印

关于串口通信,中断函数的讨论 看看呗

[复制链接]
1542|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我是胖子|  楼主 | 2013-7-31 23:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Ser() interrupt 4
{
if(SBUF>47&&SBUF<123)//去除无效数据(乱码)
{          
a[count] = SBUF;
count++;
}
RI = 0;
flag = 1;

}
我的想法是  先把所有上位机发送的命令存在数组中  然后让flag=1
也就是说 怎么判断count  静止不动了?

有新的方法大家也可以说下,目标是对字符串进行接收

相关帖子

沙发
NE5532| | 2013-8-1 16:50 | 只看该作者
既然接收的是“字符串”,那尾巴后面一定有个0啊,其他的什么都不用了。

使用特权

评论回复
板凳
我是胖子|  楼主 | 2013-8-2 12:44 | 只看该作者
NE5532 发表于 2013-8-1 16:50
既然接收的是“字符串”,那尾巴后面一定有个0啊,其他的什么都不用了。

那要是我发送的时候就带有0呢?比如上位机发送m0

使用特权

评论回复
地板
江枫渔火| | 2013-8-2 14:27 | 只看该作者
如果是字符表示的命令,\0不是一个显示字符。
如果你是在上位机输入命令,你就算输入0123,传到下位机的也只是ASCII码,不为\0.
而且通常打命令是以ENTER键结束,也可以从这个键判断命令输入完。
如果你是类似串口助手这样的界面输入命令,通常是按“发送”按钮,你得以字符串模式发送,而且串口助手有的也不一定那么好用,不会发送字符串结束符\0.

所以我推荐你用 SecureCRT 作为你的串口调试工具,特别对于你想做模拟终端。没见过哪一款串口助手有这么好用。putty也行,但死机的频率比较高。

使用特权

评论回复
5
NE5532| | 2013-8-2 15:53 | 只看该作者
我是胖子 发表于 2013-8-2 12:44
那要是我发送的时候就带有0呢?比如上位机发送m0

楼主需要把ASCII表打开看看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

12

帖子

0

粉丝