CRC-16(Ñ»·ÏµÍ³³ÁÓ಻ÕýȷУ¼ì)
¡¡¡¡³ÁÓàÑ»·Âë(CRC)°üÀ¨2¸ö×Ö½ÚÊý£¬¼´16λ¶þ½øÖÆ¡£CRCÂëÓÉÍÆËÍ»úÆ÷É豸¼ÆË㣬Ö÷ÅÓÚ·¢ËͶÌÐŵÄβ¶Ë¡£½ÓÊÜÐÅÏ¢ÄÚÈݵÄ×°±¸ÔÙÔٴμÆËã½ÓÊܵ½ÐÅÏ¢µÄCRCÂ룬½ÏΪ¼ÆËã»ñµÃµÄCRCÂëÊDz»ÊÇÓë½ÓÊܵ½µÄÏà·ûºÏ£¬¼ÙÈç¶þÕß²»Ïà·ûºÏ£¬Ôò˵Ã÷´íÎó¡£
¡¡¡¡ÔÚ¿ªÕ¹CRCÂë¼ÆËãʱ½öÓÃ8λÊý¾Ýλ¡£Æðֹ룬ÖÕֹ룬ÆæżУÑéλҲ²»²Î¼ÓCRCÂë¼ÆËã¡£
¡¡¡¡¼ÆËãCRCÂëµÄÁ÷³ÌΪ£º
¡¡¡¡¢Ù Ô¤Éè16λ¼Ä´æÆ÷ΪʮÁù½øÖÆFFFF(¼´È«Îª1)¡£³Æ´Ë¼Ä´æÆ÷ΪCRC¼Ä´æÆ÷¡£
¡¡¡¡¢Ú °ÑµÚÒ»¸ö8λÊý¾ÝÐÅÏ¢Óë16λCRC¼Ä´æÆ÷µÄµÍλÏàÒì»òÔËË㣬°Ñ½Y¹û·ÅÔÚCRC¼Ä´æÆ÷¡£
¡¡¡¡¢Û °Ñ¼Ä´æÆ÷µÄƒÈÈÝÓÒÒÆһ룬ÓÃ0ÃÖ²¹×î´ó룬²éÑé×îµÍλ¡£
¡¡¡¡¢Ü ¼ÙÈç×îµÍλΪ0£º·´¸´µÚ3²½£¬ÔÙ¶ÈÓÒÒÆһλ£»¼ÙÈç×îµÍλΪ1£ºCRC¼Ä´æÆ÷Óë´úÊýʽA001(1010 0000 0000 0001)¿ªÕ¹Òì»òÔËËã¡£
¡¡¡¡¢Ý ·´¸´Á÷³Ì¢ÛºÍ¢Ü£¬Ö±ÖÁÓÒÒÆ8´Î£¬ÄÇÑùÈ«²¿8λÊý¾ÝÐÅÏ¢ËùÓÐͨ¹ýÁ˽â¾ö¡£
¡¡¡¡¢Þ ·´¸´Á÷³Ì¢Úµ½¢Ý£¬¿ªÕ¹ÏÂÒ»¸ö8λÊý¾ÝÐÅÏ¢µÄ½â¾ö¡£
¡¡¡¡¢ß ×îÖÕ»ñµÃµÄCRC¼Ä´æÆ÷µÄÖµ¼´ÊÇCRCÂë¡£
¡¡¡¡¢à ½«CRCÂë·ÖΪ¸ß8λºÍµÍ8룬°´µÍλÔÚÏÈ£¬ÉÏλºóÃ棬½«ËûÃǼӵ½´«ÊäÊý¾ÝÒÔºó¡£
Á¢¼´·¨×ª»¯³É±àÂ룺
unsigned short crc_16(unsigned char *Array, unsigned char *Rcvbuf,unsigned int Len)
{
unsigned int IX,IY,CRC;
CRC=0xFFFF;//set all 1
if (Len=0)
CRC = 0;
else
{
Len--;
for (IX=0;IX=Len;IX )
{
CRC=CRC^(unsigned int)(Array[IX]);
for(IY=0;IY=7;IY )
{
if ((CRC1)!=0 )
CRC=(CRC1)^0xA001;
else
CRC=CRC1; //
}
}
}
Rcvbuf[0] = (CRC 0xff00)8;//¸ß²¿Î»
Rcvbuf[1] = (CRC 0x00ff); //µÍλÖÃ
CRC= Rcvbuf[0]8;
CRC = Rcvbuf[1];
return CRC;
}
¶àÌØÊÖÓÎרÌâΪÄúÌṩÈ빬ΪåúÓÎÏ·,ÃÀÅ®ÓÎÏ·¡£°²×¿Æ»¹û°æÒ»Ó¦¾ãÈ«,ÕÒ¾µäÊÖÓξÍÀ´¶àÌØÊÖ»úÓÎϷƵµÀÏÂÔØ!
¶àÌØÈí¼þרÌâΪÄúÌṩÐÅÓÿ¨·ÖÆÚ¼ÆËãÆ÷¹¤¾ß,ÐÅÓÿ¨·ÖÆÚ¼ÆËãÆ÷,·ÖÆÚ¼ÆËãÆ÷¹¤¾ß;°²×¿Æ»¹û°æÈí¼þappÒ»Ó¦¾ãÈ«¡£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«¹¤¾ßÏÂÔØ
¶àÌØÈí¼þվΪÄúÌṩlol×ßλСÓÎϷרÌâ,ÔÚÕâÀﰲ׿°æÆ»¹û°æµÈÓ¦ÓÃÓ¦Óо¡ÓУ¬ÕÒlol×ßλСÓÎÏ·¾ÍÀ´¶àÌØÈí¼þÕ¾°É¡£
¶àÌØÈí¼þ԰ΪÄúÕûÀíÁ˶à¿î¡¶ÑýÕßΪÍõÂþ»¡·Ãâ·ÑÔĶÁÈí¼þ£¬ÔÚ¶àÌØÄúÄÜÏÂÔضà¿îÃâ·ÑÔĶÁÂþ»Èí¼þ£¬ÆäÖÐÓÐÐdz½Âþ»¡¢³æ³æÂþ»¡¢bÕ¾Âþ»µÈApp£¬²¢ÌṩÃâ·ÑÏÂÔØ·þÎñ£¬ÏëÒªÃâ·ÑÔĶÁÑýÕßΪÍõÂþ»Èí¼þ£¬¸Ï½ôÀ´¶àÌØÕÒÕÒ°É¡£
¶àÌØÈí¼þ԰ΪÄúÕûÀíÁ˶à¿î¡¶Ä©ÊÀΪÍõÂþ»¡·Ãâ·ÑÔĶÁÈí¼þ£¬ÔÚ¶àÌØÄúÄÜÏÂÔضà¿îÃâ·ÑÔĶÁÂþ»Èí¼þ£¬ÆäÖÐÓÐmangagoÂþ»ºº»¯°æ¡¢ÂÒÂí12Âþ»¡¢Ðdz½Âþ»µÈApp£¬²¢ÌṩÃâ·ÑÏÂÔØ·þÎñ£¬ÏëÒªÃâ·ÑÔĶÁÄ©ÊÀΪÍõÂþ»Èí¼þ£¬¸Ï½ôÀ´¶àÌØÕÒÕÒ°É¡£