本帖最后由 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换成数组,也是这个提示,想不通了,
这里要如何传递数据才可进行比较,不一定要用指针,只要能比较不同就行
高人给看一下,要如何修改
源程序在另一台破电脑上,破电脑上不了网,需要的话一会可以传上来
|