找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3387|回复: 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换成数组,也是这个提示,想不通了,
这里要如何传递数据才可进行比较,不一定要用指针,只要能比较不同就行
高人给看一下,要如何修改


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

回复

使用道具 举报

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++)这个判断语句有问题吧,=是赋值,==是判断两个分别括起来。
回复

使用道具 举报

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 单片机教程网

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