|
³õÖÔ£º
Ëæ×ÅUWB´óÁ¦·¢Õ¹£¬¹úÄÚʵ¼ÊÓ¦ÓÃÖð²½ÂäµØ¡£ ¶ÔÓÚUWBµÄÐèÇóÒѾ²»ÊÇÍ£ÁôÔÚʵÑé²âÊԽ׶Σ¬
Ä¿Ç°Öð²½½øÈëÉÌÓô󻷾³£¬ºÜ¶à³§ÉÌÌØÊâÐèÒªÒ»¶¨ÒªÑ¡ÓÃTWR£¬ÎÞ·¨½ÓÊÕTDOA¡£
µ«ÊÇÊÜÏÞÓÚÄ¿Ç°´ó²¿·ÖTWR·½°¸Ò»°ãÖ»ÄÜÖ§³Ö3-4»ùÕ¾¶¨Î»£¬ºÜ¶à³§ÉÌÎÞ·¨ÊµÏÖUWBÏîÄ¿¿ìËÙÂäµØ¡£
»ùÓÚÒÔÉÏ£¬ÎÒÃÇ´òË㿪ԴһÌ׶à»ùÕ¾¶à±êÇ©¹Ì¼þ£¬·½±ã¸ßÐèÇó¿Í»§¼û½âºÍ¶þ´Î¿ª·¢¡£
ͬʱ£¬¶ÔÓÚѧϰ²âÊԵĿͻ§£¬½¨ÒéÒÀȻʹÓûù±¾°æ±¾3-4»ùÕ¾¶¨Î»£¬ÕâÖÖ¶à»ùÕ¾¶à±êǩʵÏÖÔö¼ÓÁ˸ü¶àÂß¼²¿·ÖµÄʵÏÖ£¬²»ÊʺÏÈëÃÅѧϰ¡£
Èí¼þÁ÷³Ì£º
¹Ø¼üÁ÷³Ì˵Ã÷£º
³ýÁËÍê³É»ù±¾²â¾àÒÔÍ⣬ÕâÀïÖ÷ÒªÐèÒªÍê³É¶¯Ì¬Ê¶±ð¹¦ÄÜ£¬±êÇ©ÐèÒª¶¯Ì¬Ê¶±ðËüÖÜΧµÄ»ùÕ¾£¬Ê±¿Ì¿ÉÒÔ±£³ÖÓëÖÜΧ3-4¸ö»ùÕ¾½øÐвâ¾à¡£
¹Ì¼þBase£º
Õâ¸ö¹Ì¼þÒÀÈ»»ùÓÚÎÒÃǵĿªÔ´¿ò¼ÜÏîÄ¿51uwb_base½øÐжþ´Î¿ª·¢£¬
¸ü¶à¿ªÔ´¿ò¼ÜÏà¹Ø²Î¼ûÁ´½Ó£ºhttp://51uwb.cn/forum.php?mod=viewthread&tid=165&extra=page%3D1
¹Ì¼þÆ¥ÅäPython¿ªÔ´ÉÏλ»ú£º
ÉÏλ»úʹÓÃÎÒÃÇÄ¿Ç°ÒѾ¿ªÔ´µÄ´¿python°æ±¾ÉÏλ»ú£¬Ïà¹ØÁ´½Ó£ºhttp://51uwb.cn/forum.php?mod=viewthread&tid=401&extra=page%3D1
¹Ì¼þÖØÒªÎÊÌâ˵Ã÷£º
1 ´®¿ÚÊä³ö£¬²»Í¬ÒÔÍù£¬ÕâÀïÓõÄÊDZêÇ©´®¿Ú
2 ÉÏλ»ú½Ó¿ÚÄ¿Ç°ÊÇTCP£¬ÐèҪʹÓô®¿ÚתTCP¹¤¾ß:´®¿ÚתTCP²Î¼ûÊÓƵ
¹Ì¼þÔ´Â룺
¹Ì¼þÔ´ÂëÒѾ·Åµ½gitÉÏ£¬V1.0 °æ±¾¿ª·¢Íê³É£¬ÇëÏêϸ¿´ÏÂÃæµÄÃèÊö
ÍøÒ³Á´½Ó£ºhttps://tuzhuke@bitbucket.org/tuzhuke/bp30_multianthor
gitÏÂÔØ £º git clone https://tuzhuke@bitbucket.org/tuzhuke/bp30_multianthor.git
¹Ì¼þ¿ª·¢¼Ç¼
Day1£º
githash:a387f5cdbbff3b6b1c818eaf459b4ad2a6fe24c0
Ö÷ÒªÍê³É¹¦ÄÜ£¬±êÇ©·¢Ë͹㲥Ðźţ¬»ùÕ¾½ÓÊչ㲥Ðźš£±êÇ©·¢Ë͵Ĺ㲥ÐźÅÐèÒª°üº¬ÒѾʶ±ðµÄ»ùÕ¾µØÖ·¡£
Step1 ÔÚ±êÇ©Öж¨ÒåÒ»¸ö´æ·Å»ùÕ¾µÄ½á¹¹ÌåÊý×é
- struct Anthor_Information
- {
- uint16 short_address;//»ùÕ¾16bit ¶ÌµØÖ·
- uint16 distance;//¾àÀëÐÅÏ¢£¬¸ß8 µÍ8bit
- uint32 last_time;//ÉÏ´ÎͨÐÅʱ¼ä
- uint8 rssi_info;//ÉÏ´ÎͨÐÅRSSIÖµ¼Ç¼
- unsigned char alive; //ÊÇ·ñÒѾʶ±ð»òÕßÊÇ·ñÒѾ¶ªÊ§
- } anthor_info[MAX_ANTHOR];
¸´ÖÆ´úÂë Step2 ÔÚ±êÇ©Öз¢Ë͹㲥Ðźţ¬¹ã²¥ÐźŰüº¬ÁËÒѾʶ±ðµÄ»ùÕ¾£¬Èç¹û»ùÕ¾ÊÕµ½Õâ¸öÐÅÏ¢£¬·¢ÏÖÊý¾Ý°üÖÐÒѾÓÐ×Ô¼ºµØÖ·¾ÍÎÞÐè·´À¡£¬·ñÔò·´À¡ÐÅÏ¢¸ø±êÇ©¡£º¯ÊýÊÔÏÂÈçÏ£º
- /*******************************************************************************
- * º¯ÊýÃû : BPhero_TAG_Broadcast
- * ÃèÊö : ±êÇ©Æô¶¯·¢Ë͹㲥ÐÅÏ¢¸ø¸÷¸ö»ùÕ¾,ÐÅÏ¢Êý¾Ý°ü°üÀ¨ÁË»ùÕ¾¶ÌµØÖ·
- * ÊäÈë : ÎÞ
- * Êä³ö : ÎÞ
- * ·µ»ØÖµ : ÎÞ
- * ˵Ã÷ : ·¢ËÍbroadcastÐÅÏ¢(BÐÅÏ¢)¸øËùÓлùÕ¾
- *******************************************************************************/
- void BPhero_TAG_Broadcast(void)
- {
- uint8 index = 0 ;
- uint8 strlen = 0;
- msg_f_send.destAddr[0] = 0xFF;
- msg_f_send.destAddr[1] = 0xFF;
- msg_f_send.seqNum = distance_seqnum;
- msg_f_send.messageData[0]='B';//broadcast message
- strlen = strlen + 1;
- uint8 *pAnthor_Str = &msg_f_send.messageData[1];
- //ºóÃæ¸ú»ùÕ¾ÐÅÏ¢
- for(index = 0 ; index < MAX_ANTHOR; index++)
- {
- if(anthor_info[index].alive == 1)
- {
- sprintf(pAnthor_Str, "%04X:",anthor_info[index].short_address);
- pAnthor_Str = pAnthor_Str + 5;
- strlen = strlen + 5;
- }
- }
- //GPIOB.5É趨£¬¼æÈÝ֮ǰ´øPAµÄÄ£¿é-->ÈçÐèÇóÇëÁªÏµwww.51uwb.cn
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, !GPIO_PIN_RESET);//PA node ,enable pa
- //дÈëÊý¾Ý
- dwt_writetxdata(11 + strlen,(uint8 *)&msg_f_send, 0) ; // write the frame data
- dwt_writetxfctrl(11 + strlen, 0);
- dwt_starttx(DWT_START_TX_IMMEDIATE); //Æô¶¯·¢ËÍ
- while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS)) //µÈ´ý·¢ËÍÍê³É
- { };
- dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//Çå³ý·¢ËÍÍê³É±êÖ¾
- poll_tx_ts = get_tx_timestamp_u64();//¶ÁÈ¡·¢ËÍʱ¼ä´Á
- //Çå¿Õ½ÓÊÕ»º´æ£¬´ýÊÕµ½Êý¾ÝʱʹÓÃ
- for (int i = 0 ; i < FRAME_LEN_MAX; i++ )
- {
- rx_buffer[i] = '\0';
- }
- dwt_enableframefilter(DWT_FF_DATA_EN); //Æô¶¯Ö¡¹ýÂ˹¦ÄÜ
- dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS*10);//É趨½ÓÊÕÑÓʱº¯Êý
- dwt_rxenable(0);//Æô¶¯½ÓÊÕ»ú
- //sequence¿ØÖÆ
- if(++distance_seqnum == 255)
- distance_seqnum = 0;
- }
¸´ÖÆ´úÂë Step3 ÔÚ±êÇ©Öе÷ÓÃÉÏÊöº¯Êý¹ã²¥·¢ËÍ£¬ÎÒÃÇʹÓÃ֮ǰ´úÂ붨ʱÆ÷»Øµ÷º¯Êý£¬Í¨¹ý»Øµ÷º¯Êý£¬¿ÉÒÔÖÜÆÚÐÔ·¢ËÍ
- void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
- {
- if (htim->Instance == htim3.Instance)
- {
- HAL_TIM_Base_Stop(&htim3);
- {
- dwt_forcetrxoff();
- TAG_SendOut_Messge();
- BPhero_TAG_Broadcast();
- }
- HAL_TIM_Base_Start(&htim3);
- }
- }
¸´ÖÆ´úÂë Step4£º ÔÚ»ùÕ¾½ÓÊÕbroadcast ¡°B¡±Ðźţ¬ÔÚrx_main.cÖÐÊÕµ½¡°BÐźš±ºó´òÓ¡Ò»´®×Ö·û¡£
- case 'B':
- printf("receive B message\n");
- break;
¸´ÖÆ´úÂë ·Ö±ð±àÒë±êÇ©ºÍ»ùÕ¾µÄ½øÐвâÊÔ¡£´®¿ÚÊý¾ÝÈçÏÂͼ£¬±íÃ÷Êý¾Ý¿ÉÒÔÕý³£ÊÕµ½¡£
Day2:
githash: e23e4e1e3bf681d1125036e5dbbf5a07fe363fdc
Ö÷ÒªÍê³É»ùÕ¾ÊÕµ½BÐÅÏ¢ºó£¬ÒÔRÐÅÏ¢»Ø¸´¸ø±êÇ©£¬±êÇ©ÊÕµ½ÐÅÏ¢ÌáÈ¡¶ÌµØÖ·£¬²¢¸üÐÂ×Ô¼ºµÄ½á¹¹ÌåÊý×é
Step1 Ð޸ıêÇ©¹ã²¥¸ñʽ£¬ÔÚÊý¾Ý°üÖÐÔö¼ÓÒÑÖª»ùÕ¾µÄ¸öÊý¡£
- //ºóÃæ¸ú»ùÕ¾ÐÅÏ¢
- for(index = 0 ; index < MAX_ANTHOR; index++)
- {
- if(anthor_info[index].alive == 1)
- {
- sprintf(pAnthor_Str, "%04X:",anthor_info[index].short_address);
- pAnthor_Str = pAnthor_Str + 5;
- strlen = strlen + 5;
- anthor_count++;
- }
- }
- msg_f_send.messageData[1] = anthor_count;
¸´ÖÆ´úÂë Step2: Ð޸ĻùÕ¾½ÓÊÕ´¦Àí£¬Ä¿Ç°Ö»¼òµ¥·´À¡ÐÅÏ¢¸ø±êÇ©£¬ÒÔ¡°R¡±ÐÅÏ¢»Ø¸´µ½±êÇ©£¬Í¬Ê±½«±êÇ©Êý¾Ý°üÖеġ°ÏÖÓлùÕ¾¸öÊý¡±´òÓ¡³öÀ´ÓÃÓÚdebug
- case 'B':
- printf("receive B anthor = %d\n",msg_f->messageData[1]);
- {
- msg_f_send.messageData[0]='R';//Poll message
- //ºóÃæÐÞ¸ÄÕâ¸öÊý¾Ý³¤¶È
- dwt_writetxdata(11 + 1, (uint8 *)&msg_f_send, 0) ; // write the frame data
- dwt_writetxfctrl(11 + 1, 0);
- dwt_starttx(DWT_START_TX_IMMEDIATE);
- while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))
- { };
- }
- break;
¸´ÖÆ´úÂë Step3: ±êÇ©ÊÕµ½ÐÅÏ¢£¬ÌáÈ¡»ùÕ¾ÐÅÏ¢ÖеĵØÖ·
- case 'R':
- address = msg_f_recv->sourceAddr[1]<<8|msg_f_recv->sourceAddr[0];
- printf("receive R message 0x%04X\n",address);
- Update_Anthor_Info(address);
- break;
¸´ÖÆ´úÂë- uint8 Update_Anthor_Info(uint32 shortaddress)
- {
- uint8 index = 0;
- printf("shortaddress = 0x%04X\n",shortaddress);
- //ºóÃæ¸ú»ùÕ¾ÐÅÏ¢
- for(index = 0 ; index < MAX_ANTHOR; index++)
- {
- if(anthor_info[index].alive == 0)
- {
- anthor_info[index].short_address = shortaddress;
- anthor_info[index].alive = 1;
- return 1;
- }
- }
- return 0;
- }
¸´ÖÆ´úÂë Day3:
githash:4d1b64584706426c2a71174d7026cbe7696f2a4b
½ñÌìÍê³ÉÁË»ù±¾¹¦ÄÜ¿ª·¢£¬¿ÉÒÔ×÷ΪV1.0°æ±¾¡£
Ö÷Òª¿ª·¢ÄÚÈÝ£º»ùÕ¾½âÎö±êÇ©·¢Ë͵Ĺ㲥BÐźţ¬±êÇ©»ã×ÜRÐźŻùÕ¾£¬Èç¹ûÊÕµ½R»ùÕ¾´óÓÚµÈÓÚ4¸ö¿ªÊ¼²â¾à£¬Èç¹û²â¾àµÄʱºò·¢ÏÖ»ùÕ¾¶ªÊ§£¬ÖØÐÂÆô¶¯¹ã²¥BÐźš£
1 »ùÕ¾½âÎö±êÇ©¹ã²¥BÐźţ¬Æ¥ÅäÊÇ·ñÓÐ×Ô¼ºµÄµØÖ·£¬ÓеØÖ·ºöÂÔ£¬Ã»ÓеØÖ·»Ø¸´RÐźÅ
- case 'B':
- printf("receive B anthor = %d\n",msg_f->messageData[1]);
- Num_Anthor = msg_f->messageData[1];
- Sourceaddress = msg_f->sourceAddr[1]<<8| msg_f->sourceAddr[0];
- pAnthor_Str = &msg_f->messageData[2];
- match_flag = 0;
- for (Index = 0; Index < Num_Anthor; Index++)
- {
- printf("receive address = %04X\n",(pAnthor_Str[1]<<8|pAnthor_Str[0]));
- if(SHORT_ADDR == (pAnthor_Str[1]<<8|pAnthor_Str[0])) //Æ¥Åä³É¹¦
- {
- printf("match\n");
- match_flag = 1;
- }
- pAnthor_Str = pAnthor_Str +3 ;
- }
- if(match_flag == 0)//ûÓÐÆ¥Åäµ½£¬·¢ËÍÒ»¸ö·´À¡ÐÅÏ¢
- {
- msg_f_send.messageData[0]='R';//Poll message
- //ºóÃæÐÞ¸ÄÕâ¸öÊý¾Ý³¤¶È
- dwt_writetxdata(11 + 1, (uint8 *)&msg_f_send, 0) ; // write the frame data
- dwt_writetxfctrl(11 + 1, 0);
- dwt_starttx(DWT_START_TX_IMMEDIATE);
- while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))
- { };
- }
- break;
¸´ÖÆ´úÂë 2 ±êÇ©»ã×Ü»ùÕ¾·´À¡µÄRÐźţ¬ÆäʵÕⲿ·Ö´úÂëÔÚday2 ÒѾÍê³É£¬ÎÞÐèÐ޸ġ£
3 ÅжÏÊÕµ½RÐźŸöÊý£¬Õâ¸öÔÚ¶¨Ê±¹ã²¥ÀïÅжϵġ£Èç¹ûСÓÚ4£¬³ÖÐøÖ´Ðй㲥ÊÕ¼¯¡£
- HAL_TIM_Base_Stop(&htim3);
- {
- dwt_forcetrxoff();
- if(Count_Anthor() < 4)
- {
- gProcess_Dis = 0;
- BPhero_TAG_Broadcast();
- gSend_index = 0;
- }
¸´ÖÆ´úÂë ¾ßÌåʵÏÖº¯Êý
- uint8 Count_Anthor()
- {
- uint8 index = 0;
- uint8 count = 0;
- //ºóÃæ¸ú»ùÕ¾ÐÅÏ¢
- for(index = 0 ; index < MAX_ANTHOR; index++)
- {
- if(anthor_info[index].alive == 1)
- {
- count++;
- }
- }
- return count;
- }
¸´ÖÆ´úÂë
3 µ±RÐźŻùÕ¾ÊýÁ¿µÈÓÚ4¸ö£¬¿ªÊ¼Æô¶¯²â¾à
- if(Count_Anthor() < 4)
- {
- gProcess_Dis = 0;
- BPhero_TAG_Broadcast();
- gSend_index = 0;
- }
- else
- {
- if(gSend_index ==Count_Anthor())
- {
- gSend_index= 0;
- Send_Dis_To_Anthor0();
- } else
- {
- gProcess_Dis = 1;
- BPhero_Distance_Measure_Specail_ANTHOR();// ´Ó1 2 3 4·¢ËÍ
- }
- }
¸´ÖÆ´úÂë ÕâÀïµÄSend_Dis_To_Anthor0()ÊÇÑØÓÃ֮ǰµÄº¯ÊýÃû£¬ÆäʵÔÚÕâ¸öÀïÃæʵÏÖÁËÊý¾Ý¸ñʽ×é×°²¢ÔÚ´®¿Ú´òÓ¡£¬ÒÔ¼°µ÷Óú¯ÊýÔÚÒº¾§ÏÔʾ¡£
BPhero_Distance_Measure_Specail_ANTHOR()Ö÷Òª¹¦ÄܾÍÊÇÆô¶¯²â¾à£¬²â¾à¶ÔÏóÊÇÊÕ¼¯µ½RÐźŵĻùÕ¾¡£
- void BPhero_Distance_Measure_Specail_ANTHOR(void)
- {
- uint16 destaddress = Find_Address();
- // printf("Send Index = %d, Address = 0x%04X\n",gSend_index,destaddress);
- msg_f_send.destAddr[0] =(destaddress) &0xFF;
- msg_f_send.destAddr[1] = ((destaddress)>>8) &0xFF;
- msg_f_send.seqNum = distance_seqnum;
- msg_f_send.messageData[0]='P';//Poll message
- //GPIOB.5É趨£¬¼æÈÝ֮ǰ´øPAµÄÄ£¿é-->ÈçÐèÇóÇëÁªÏµwww.51uwb.cn
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, !GPIO_PIN_RESET);//PA node ,enable pa
- //дÈëÊý¾Ý
- dwt_writetxdata(12,(uint8 *)&msg_f_send, 0) ; // write the frame data
- dwt_writetxfctrl(12, 0);
- dwt_starttx(DWT_START_TX_IMMEDIATE); //Æô¶¯·¢ËÍ
- while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS)) //µÈ´ý·¢ËÍÍê³É
- { };
- dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//Çå³ý·¢ËÍÍê³É±êÖ¾
- poll_tx_ts = get_tx_timestamp_u64();//¶ÁÈ¡·¢ËÍʱ¼ä´Á
- //Çå¿Õ½ÓÊÕ»º´æ£¬´ýÊÕµ½Êý¾ÝʱʹÓÃ
- for (int i = 0 ; i < FRAME_LEN_MAX; i++ )
- {
- rx_buffer[i] = '\0';
- }
- dwt_enableframefilter(DWT_FF_DATA_EN); //Æô¶¯Ö¡¹ýÂ˹¦ÄÜ
- dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);//É趨½ÓÊÕÑÓʱº¯Êý
- dwt_rxenable(0);//Æô¶¯½ÓÊÕ»ú
- //sequence¿ØÖÆ
- if(++distance_seqnum == 255)
- distance_seqnum = 0;
- }
¸´ÖÆ´úÂë 4 Öжϻص÷º¯ÊýÖд¦Àítimeout£¬Èç¹û²â¾à¶ÔÏó»ùվûÓз´À¡£¬±êÇ©·¢ÉútimeoutÖжϣ¬ÔòÁ¢¼´½«¸Ã»ùÕ¾islive ÉèÖÃΪ0£¬´øÏ´Îͳ¼Æ£¬·¢ÏÖ»ùÕ¾ÊýÁ¿Ð¡ÓÚ4£¬Ôò±êÇ©ÖØз¢Ë͹㲥ÐźÅÊÕ¼¯»ùÕ¾¡£
- else
- {
- if(gProcess_Dis == 1)
- {
- printf("timeout address 0x%04X\n",Find_Address());
- Delete_Anthor(Find_Address());
- }
¸´ÖÆ´úÂë ÆäËü¸üУº
git hash:4892896b3d09e6009dfbe3d537e866f2c94d2d36
ÐÞ¸ÄÁËÒ»¸ö×æ´«´úÂëbug£¬Ê¹ÓÃÁËÒ°Ö¸Õë....
git hash£ºd2e01e118126c9ce9c84337126db3e92d23ed3ba
ÐÞ¸ÄÁËUWBÖжϣ¬ÈÃUWBÖжÏÖ»´¦Àí½ÓÊճɹ¦ºÍtimeoutÁ½ÖÖʼþ£¬ÆäËûʼþ¾ù²»´¦Àí
ͬʱ£¬µ÷ÊÔµÄʱºò·¢ÏÖÉÏλ»úµ±ÊÕµ½Òì³£Êý¾ÝÎÞ·¨´¦Àí£¬µ¼ÖÂÒì³£Í˳ö
- def twr_main(input_string):
- print(input_string)
- error_flag, result_dic = Process_String_Before_Udp(input_string)
- if error_flag == 0:
- [location_result, location_seq, location_addr, location_x, location_y] = Compute_Location(result_dic)
- return location_result, location_seq, location_addr, location_x, location_y
- return 0, 0, 0, 0, 0
¸´ÖÆ´úÂë µ±·¢ÉúÒì³££¬Ôö¼Óreturn 0, 0, 0, 0, 0£¬´úÂëͬ²½¸üе½ÉÏλ»ú²¿·ÖÁ´½Ó¡£
×Ô´Ë£¬Í¨¹ýÈýÌ죬ÁãÉ¢µÄʱ¼ä£¬¿ª·¢³öÒ»Ì׿ÉÒÔ¶¯Ì¬Ê¶±ð»ùÕ¾²¢Íê³É²â¾àµÄ¹Ì¼þ´úÂ룬´úÂë±àдʱ¼äºÍ²âÊÔdebugʱ¼ä»ù±¾ÊÇ1:5£¬¸ü¶àµÄÊÇϸ½Ú¿¼ÂDz½Öèµ¼ÖÂÒì³£.
¿ª·¢¹ý³ÌÖÐÓöµ½Ò»¸öºÜ¹îÒìµÄÒì³££¬µ±ÆäÖÐÒ»¸ö»ùÕ¾µØÖ·½«¶ÌµØÖ·ÉèÖÃΪ0x0006ºó£¬±êǩʶ±ð³É¹¦µ«ÊÇÎÞ·¨Íê³É²â¾à£¬Í¨¹ý¼ÓdebugÐÅÏ¢×îÖÕ·¢ÏÖÊÇÓÉÓÚ±êÇ©²â¾àÍê³ÉºóÓÐÒ»¸öÂ˲¨Æ÷£¬Â˲¨Æ÷ÉèÖõÄ×î´ó»ùÕ¾ÊýĿΪ5£¬µ¼ÖÂÊý×éÔ½½ç·ÃÎÊ¡£
ÈýÌìÁãÉ¢µÄ¿ª·¢Ê±¼ä£¬¿ÉÒÔ˵Õâ´Î¿ª·¢·Ç³£Ë³Àû£¬Ò»ÊÇÓÉÓÚÓÐÒ»¸ö±È½ÏÍ걸µÄ´úÂë¿ò¼Ü£¬»ùÓÚ֮ǰµÄ´úÂë¿ò¼Ü¿ª·¢£¬¿ÉÒÔ¼õÉÙ¶ÔÓڵײãµÄÒÀÀµ£¬Ö»ÐèҪʵÏÖÂß¼²¿·Ö¼´¿É¡£¶øÂß¼²¿·ÖÆäʵÔÚºÜÔç֮ǰ¾ÍÓÐÏë·¨£¬Í¨¹ýÏë·¨Âäʵµ½Á÷³Ìͼ£¬¹æ»®Ã¿Ò»²½Òª×öʲô¡£Ä¿Ç°µÄ´úÂ뻹ûÓÐÇкϵ½Á÷³ÌͼÉÏ£¬Á÷³ÌͼÖУ¬ÎÒµÄÏë·¨ÊǼ´±ãÓÐ4¸ö»ùÕ¾¿ÉÒÔ¶¨Î»£¬ÒÀÈ»ÖÜÆÚÐԵķ¢Ë͹㲥£¬·¢ÏÖ¸ü¶àµÄ»ùÕ¾£¬Ñ¡È¡¸½½üµÄ»ùÕ¾×ö²Î¿¼¡£ ÓÉÓÚʱ¼ä¹Øϵ£¬Õâ¸ö²¿·Ö¿ÉÄÜÁô¸ø¸÷λ¿´¹ÙÁË¡£
¹ØÓÚÓ²¼þ£¬Ä¿Ç°ÎÒÃǵĴúÂ룬»ùÓÚÓ²¼þÊÇÎÒÃÇ×ÔÑеÄBP30£¬Ê¹ÓÃÖ÷¿ØÊÇF4¡£Í¬Ê±¿ÉÒÔÎÞ·ìÔÚBP400 ÉÏʹÓᣠÈç¹ûûÓÐÎÒÃǵÄÓ²¼þ£¬¿ÉÒÔÊʵ±½øÐÐÒÆÖ²£¬Æ¥ÅäÖ÷¿Ø¡£
×îºó£¬»¶Ó½»Á÷·ÖÏí£¡
дÔÚ×îºó£¬ÖØÒªÌáʾ£¡£¡
ÎÒÃǵĿªÔ´ÏîÄ¿£¬¹¤³ÌÒÔgit ¹ÜÀí£¬¹¤³ÌÖð²½µü´ú£¬Öð²½Ôö¼Ó¹¦ÄÜ£¬Ê¹ÓôúÂëÇë²Î¿¼hashÌá½»°æ±¾¡£
TWRËã·¨-¶à»ùÕ¾¶à±êÇ©¹Ì¼þ V1.0 °æ±¾ GIT HASHΪ£ºd887386e8ed3d7ac978234c03e3eaf876a058631
|
|