找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 3764|回复: 4
打印 上一主题 下一主题
收起左侧

已解决)对指针比较了解的朋友帮我看看这个程序

[复制链接]
跳转到指定楼层
楼主
ID:84495 发表于 2016-3-10 19:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 absflash 于 2016-3-11 19:58 编辑

已解决,隔壁坛坛友解决的,正确做法是调用时去掉*
改成if(cmpmemory(bufrxd1,buf,len)) 就好了
*buf                存放的是串口传输进来的数据,
*bufrxd1         存放上一次串口传输的数据,用于比较是否与本次数据相同

bit cmpmemory(unsigned char *ptrl1,unsigned char *ptrl2,unsigned char len)
{while(len--)
{if(*ptrl1++!=*ptrl2++)
     {return 1;}                //bijiao比较两指针数据不同返回1
}
return 0;                        //相同返回1
}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void uartaction (unsigned char *buf ,unsigned char len)
{
unsigned char i=0;
for(i;i<len;i++)
{
if(cmpmemory(*bufrxd1,*buf,len))   //bi比较两次数据是否相同,
{
        *bufrxd1=*buf;      //不相同放进*bufrxd1备用

        CLSLcd();                //清屏
for(i;i<len;i++)
{        PutChar(2,i*6,buf);  //将新数据显示在12864上

}
}
}   、、//两次传输数据相同不做处理,主要是不清屏,清屏太频繁导致屏幕闪烁



现在问题是一调用cmpmemory(*bufrxd1,*buf,len))就出错,提示
123.C(143): error C214: illegal pointer conversion              非法指针转换
我曾吧*bufrxd1换成数组,也是这个提示,想不通了,
这里要如何传递数据才可进行比较,不一定要用指针,只要能比较不同就行
高人给看一下,要如何修改


源程序在另一台破电脑上,破电脑上不了网,需要的话一会可以传上来

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

举报

沙发
ID:69862 发表于 2016-3-11 09:38 | 只看该作者
把要比较的两个数据分别放在数组里面,这样不是好比较了吗?
回复

举报

板凳
ID:84495 发表于 2016-3-11 09:57 | 只看该作者
xiao_yp2014 发表于 2016-3-11 09:38
把要比较的两个数据分别放在数组里面,这样不是好比较了吗?

忙晕了,我再试试,谢谢
回复

举报

地板
ID:107120 发表于 2016-3-11 10:20 | 只看该作者
本帖最后由 zhangfan3765 于 2016-3-11 12:04 编辑

if(*ptrl1++!=*ptrl2++)这个判断语句有问题吧,=是赋值,==是判断两个分别括起来。
回复

举报

5#
ID:84495 发表于 2016-3-11 20:03 | 只看该作者
zhangfan3765 发表于 2016-3-11 10:20
if(*ptrl1++!=*ptrl2++)这个判断语句有问题吧,=是赋值,==是判断两个分别括起来。

!=和==是同级别的,朋友,去掉*既可以了
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表