本帖最后由 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換成數組,也是這個提示,想不通了,
這里要如何傳遞數據才可進行比較,不一定要用指針,只要能比較不同就行
高人給看一下,要如何修改
源程序在另一臺破電腦上,破電腦上不了網,需要的話一會可以傳上來
|