双代号网络图节点编号原则_Ë«´úºÅÍøÂçͼµÄ»æÖÆ»ù±¾¹æÔò

本文详细介绍了网络图绘制的基本规则,包括网络图的逻辑结构、起点与终点设定、节点编号顺序、避免回路、线条方向一致性、无头尾线、禁止线中交点等方面。遵循这些规则能确保网络图的清晰性和正确性,对于理解和优化工作流程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ë«´úºÅÍøÂçͼµÄ»æÖÆ»ù±¾¹æÔò

¡¡1£©ÍøÂçͼ±ØÐë°´ÕÕÒѶ¨µÄÂß¼­¹ØÏµ»æÖÆ¡£

¡¡¡¡2£©ÍøÂçͼӦֻÓÐÒ»¸öÆðµã½ÚµãºÍÒ»¸öÖÕµã½Úµã£¨¶àÄ¿±êÍøÂç¼Æ»®³ýÍ⣩¡£³ýÖÕµãºÍÆðµã½ÚµãÍ⣬²»ÔÊÐí³öÏÖûÓÐÄÚÏò¼ýÏߵĽڵãºÍûÓÐÍâÏò¼ýÏߵĽڵ㡣

¡¡¡¡3£©ÍøÂçͼÖÐËùÓнڵ㶼±ØÐë±àºÅ£¬²¢Ó¦Ê¹¼ýβ½ÚµãµÄ±àºÅСÓÚ¼ýÍ·½ÚµãµÄ±àºÅ¡£

¡¡¡¡4£©ÍøÂçͼÖв»ÔÊÐí³öÏÖ´ÓÒ»¸ö½Úµã³ö·¢Ë³¼ýÏß·½ÏòÓֻص½Ô­³ö·¢µãµÄÑ­»·»ØÂ·¡£

¡¡¡¡5£©¹¤×÷»òʼþµÄ×Öĸ´úºÅ»òÊý×Ö±àºÅ£¬ÔÚͬһÈÎÎñµÄÍøÂçͼÖУ¬²»ÔÊÐíÖØ¸´Ê¹Óá£

¡¡¡¡6£©ÍøÂçͼÖеļýÏߣ¨°üÀ¨Ðé¼ýÏߣ¬ÒÔÏÂͬ£©Ó¦±£³Ö×Ô×óÏòÓҵķ½Ïò£¬²»Ó¦³öÏÖ¼ýÍ·Ïò×ó»òÆ«Ïò×󷽵ļýÏß¡£Èô×ñÑ­¸Ã¹æÔò»æÖÆÍøÂçͼ£¬¾Í²»»á³öÏÖÑ­»·»ØÂ·¡£

¡¡¡¡7£©ÍøÂçͼÖв»ÔÊÐí³öÏÖûÓмýβ½ÚµãµÄ¼ýÏߺÍûÓмýÍ·½ÚµãµÄ¼ýÏß¡£

¡¡¡¡8£©ÑϽûÔÚ¼ýÏßÉÏÒýÈë»òÒý³ö¼ýÏß¡£

¡¡¡¡9£©Ó¦¾¡Á¿±ÜÃâÍøÂçͼÖй¤×÷¼ýÏߵĽ»²æ¡£

//ÍøÂçÉ豸Çý¶¯ #include "esp8266.h" //Ó²&frac14;þÇý¶¯ #include "delay.h" #include "oled.h" #include "led.h" //C¿â #include <string.h> #include <stdio.h> unsigned char esp8266_buf[buf_len]; unsigned char data_buf[buf_len]; unsigned short esp8266_cnt = 0; unsigned short esp8266_cntPre = 0; extern char Flagout; //========================================================== // º¯ÊýÃû³Æ£º ESP8266_Clear // // º¯Êý&sup1;¦ÄÜ£º Çå¿Õ»º´æ // // Èë¿Ú²ÎÊý£º ÎÞ // // ·µ»Ø²ÎÊý£º ÎÞ // // ˵Ã÷£º //========================================================== void ESP8266_Clear(void) { memset(esp8266_buf, 0, sizeof(esp8266_buf)); esp8266_cnt = 0; } //========================================================== // º¯ÊýÃû³Æ£º ESP8266_Init // // º¯Êý&sup1;¦ÄÜ£º ³õÊ&frac14;»¯ESP8266 // // Èë¿Ú²ÎÊý£º ÎÞ // // ·µ»Ø²ÎÊý£º ÎÞ // // ˵Ã÷£º //========================================================= void ESP8266_Init(unsigned int bound) { #if Bamfa_USART1 //GPIO¶Ë¿ÚÉèÖà GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //Ê&sup1;ÄÜUSART1£¬GPIOAʱÖÓ //USART1_TX GPIOA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö GPIO_Init(GPIOA, &GPIO_InitStructure);//³õÊ&frac14;»¯GPIOA.9 //USART1_RX GPIOA.10³õÊ&frac14;»¯ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë GPIO_Init(GPIOA, &GPIO_InitStructure);//³õÊ&frac14;»¯GPIOA.10 //Usart1 NVIC ÅäÖà NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//ÇÀÕ&frac14;ÓÅÏÈ&frac14;¶3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //×ÓÓÅÏÈ&frac14;¶3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨµÀÊ&sup1;ÄÜ NVIC_Init(&NVIC_InitStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õÊ&frac14;»¯VIC&frac14;Ä´æÆ÷ //USART ³õÊ&frac14;»¯ÉèÖà USART_InitStructure.USART_BaudRate = bound;//´®¿Ú²¨ÌØÂÊ USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñÊ&frac12; USART_InitStructure.USART_StopBits = USART_StopBits_1;//Ò»¸öÍ£Ö&sup1;λ USART_InitStructure.USART_Parity = USART_Parity_No;//ÎÞÆæÅ&frac14;УÑéλ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎÞÓ²&frac14;þÊý¾ÝÁ÷¿ØÖÆ USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //ÊÕ·¢Ä£Ê&frac12; USART_Init(USART1, &USART_InitStructure); //³õÊ&frac14;»¯´®¿Ú1 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿ªÆô´®¿Ú&frac12;ÓÊÜÖÐ¶Ï USART_Cmd(USART1, ENABLE); //Ê&sup1;ÄÜ´®¿Ú1 #elif Bamfa_USART2 GPIO_InitTypeDef gpio_initstruct; USART_InitTypeDef usart_initstruct; NVIC_InitTypeDef nvic_initstruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //PA2 TXD gpio_initstruct.GPIO_Mode = GPIO_Mode_AF_PP; gpio_initstruct.GPIO_Pin = GPIO_Pin_2; gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpio_initstruct); //PA3 RXD gpio_initstruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; gpio_initstruct.GPIO_Pin = GPIO_Pin_3; gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpio_initstruct); usart_initstruct.USART_BaudRate = bound; usart_initstruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //ÎÞÓ²&frac14;þÁ÷¿Ø usart_initstruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //&frac12;ÓÊպͷ¢ËÍ usart_initstruct.USART_Parity = USART_Parity_No; //ÎÞУÑé usart_initstruct.USART_StopBits = USART_StopBits_1; //1λͣÖ&sup1;λ usart_initstruct.USART_WordLength = USART_WordLength_8b; //8λÊý¾Ýλ USART_Init(USART2, &usart_initstruct); USART_Cmd(USART2, ENABLE); //Ê&sup1;ÄÜ´®¿Ú USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); //Ê&sup1;ÄÜ&frac12;ÓÊÕÖÐ¶Ï nvic_initstruct.NVIC_IRQChannel = USART2_IRQn; nvic_initstruct.NVIC_IRQChannelCmd = ENABLE; nvic_initstruct.NVIC_IRQChannelPreemptionPriority = 1; nvic_initstruct.NVIC_IRQChannelSubPriority = 0; NVIC_Init(&nvic_initstruct); #elif Bamfa_USART3 NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // GPIOBʱÖÓ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); USART_DeInit(USART3); //¸´Î»´®? //USART2_TX PB10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB10 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö GPIO_Init(GPIOB, &GPIO_InitStructure); //³õÊ&frac14;»¯PB10 //USART3_RX PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë GPIO_Init(GPIOB, &GPIO_InitStructure); //³õÊ&frac14;»¯PB11 USART_InitStructure.USART_BaudRate = bound;//Ò»°ãÉèÖÃΪ9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñÊ&frac12; USART_InitStructure.USART_StopBits = USART_StopBits_1;//Ò»¸öÍ£Ö&sup1;λ USART_InitStructure.USART_Parity = USART_Parity_No;//ÎÞÆæÅ&frac14;УÑéλ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎÞÓ²&frac14;þÊý¾ÝÁ÷¿ØÖÆ USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //ÊÕ·¢Ä£Ê&frac12; USART_Init(USART3, &USART_InitStructure); //³õÊ&frac14;»¯´®¿Ú 3 USART_Cmd(USART3, ENABLE); //Ê&sup1;ÄÜ´®¿Ú //Ê&sup1;ÄÜ&frac12;ÓÊÕÖÐ¶Ï USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//¿ªÆôÖÐ¶Ï NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//ÇÀÕ&frac14;ÓÅÏÈ&frac14;¶2 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //×ÓÓÅÏÈ&frac14;¶0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨµÀÊ&sup1;ÄÜ NVIC_Init(&NVIC_InitStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õÊ&frac14;»¯VIC&frac14;Ä´æÆ÷ #endif GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(ESP01S_RST_RCC_CLK, ENABLE); //Ê&sup1;ÄÜA¶Ë¿ÚʱÖÓ GPIO_InitStructure.GPIO_Pin = ESP01S_RST_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//ËÙ¶È50MHz GPIO_Init(ESP01S_RST_PROT, &GPIO_InitStructure); //³õÊ&frac14;»¯GPIOA GPIO_ResetBits(ESP01S_RST_PROT,ESP01S_RST_PIN);//esp8266µÍµçÆ&frac12;¸´Î» delay_ms(200); GPIO_SetBits(ESP01S_RST_PROT,ESP01S_RST_PIN); ESP8266_Clear(); OLED_ShowCHinese(0, 3,15);//Õý OLED_ShowCHinese(18,3,16);//ÔÚ OLED_ShowCHinese(36,3,17);//Á¬ OLED_ShowCHinese(54,3,18);//&frac12;Ó OLED_ShowString (72,3,"WIFI",16); OLED_ShowString (108,3,"..",16); OLED_ShowCHinese(0, 6, 19);//&frac12;ø OLED_ShowCHinese(18,6, 20);//¶È OLED_ShowCHinese(36,6,21);//£º // printf("1. AT\r\n"); OLED_ShowString(44,6,"10%",16); while(ESP8266_SendCmd("AT\r\n","OK")&&Flagout) delay_ms(100); // printf("2. CWMODE\r\n"); OLED_ShowString(44,6,"20%",16); while(ESP8266_SendCmd("AT+CWMODE=3\r\n", "OK")&&Flagout) delay_ms(100); // printf( "3. Á¬&frac12;Ó·ÓÉÆ÷¡£\r\n"); OLED_ShowString(44,6,"30%",16); while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "OK")&&Flagout) delay_ms(100); // printf("4. ¿ªÆô͸Ã÷´«ÊäÄ£Ê&frac12;¡£\r\n"); OLED_ShowString(44,6,"30%",16); while(ESP8266_SendCmd("AT+CIPMODE=1\r\n", "OK")&&Flagout) delay_ms(100); // printf( "5. Á¬&frac12;Ó°Í·¨ÔÆ¡£\r\n"); OLED_ShowString(44,6,"50%",16); while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT")&&Flagout) delay_ms(100); // printf( "6. &frac12;øÈë͸´«Ä£Ê&frac12;£¬ÏÂÃæ·¢µÄ¶&frac14;»áÎÞÌõ&frac14;þ´«Êä¡£\r\n"); OLED_ShowString(44,6,"80%",16); while(ESP8266_SendCmd("AT+CIPSEND\r\n", "OK")&&Flagout) delay_ms(100); // printf( "7.¶©ÔÄÖ÷Ìâ¡£\r\n"); OLED_ShowString(44,6,"90%",16); while(ESP8266_SendCmd(ESP8266_TOPIC, "cmd=1&res=1")&&Flagout) delay_ms(100); Flagout=3; // printf("8. ESP8266 ³õÊ&frac14;»¯Íê³É£¡\r\n"); OLED_ShowString(44,6,"100%",16); Flagout=0; delay_ms(2000); ESP8266_Clear(); OLED_Clear(0); } //========================================================== // º¯ÊýÃû³Æ£º ESP8266_WaitRecive // // º¯Êý&sup1;¦ÄÜ£º µÈ´ý&frac12;ÓÊÕÍê³É // // Èë¿Ú²ÎÊý£º ÎÞ // // ·µ»Ø²ÎÊý£º REV_OK-&frac12;ÓÊÕÍê³É REV_WAIT-&frac12;ÓÊÕ³¬Ê±Î´Íê³É // // ˵Ã÷£º Ñ­»·µ÷ÓÃ&frac14;ì²âÊÇ·ñ&frac12;ÓÊÕÍê³É //========================================================== _Bool ESP8266_WaitRecive(void) { if(esp8266_cnt == 0) //Èç&sup1;û&frac12;ÓÊÕ&frac14;ÆÊýΪ0 Ôò˵Ã÷ûÓд¦ÓÚ&frac12;ÓÊÕÊý¾ÝÖУ¬ËùÒÔÖ±&frac12;ÓÌø³ö£¬&frac12;áÊøº¯Êý return REV_WAIT; if(esp8266_cnt == esp8266_cntPre) //Èç&sup1;ûÉÏÒ»´ÎµÄÖµºÍÕâ´ÎÏàͬ£¬Ôò˵Ã÷&frac12;ÓÊÕÍê±Ï { esp8266_cnt = 0; //Çå0&frac12;ÓÊÕ&frac14;ÆÊý return REV_OK; //·µ»Ø&frac12;ÓÊÕÍê³É±êÖ¾ } esp8266_cntPre = esp8266_cnt; //ÖÃΪÏàͬ return REV_WAIT; //·µ»Ø&frac12;ÓÊÕδÍê³É±êÖ¾ } /************************************************************ * º¯ÊýÃû³Æ£º Usart_SendString * * º¯Êý&sup1;¦ÄÜ£º ´®¿ÚÊý¾Ý·¢ËÍ * * Èë¿Ú²ÎÊý£º USARTx£º´®¿Ú×é * str£ºÒª·¢Ë͵ÄÊý¾Ý * len£ºÊý¾Ý³¤¶È * * ·µ»Ø²ÎÊý£º ÎÞ * * ˵Ã÷£º ************************************************************ */ void Usart_SendString(USART_TypeDef *USARTx, unsigned char *str, unsigned short len) { unsigned short count = 0; for(; count < len; count++) { USART_SendData(USARTx, *str++); //·¢ËÍÊý¾Ý while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET); //µÈ´ý·¢ËÍÍê³É } } //========================================================== // º¯ÊýÃû³Æ£º ESP8266_SendCmd // // º¯Êý&sup1;¦ÄÜ£º ·¢ËÍÃüÁî // // Èë¿Ú²ÎÊý£º cmd£ºÃüÁî // res£ºÐèÒª&frac14;ì²éµÄ·µ»ØÖ¸Áî // // ·µ»Ø²ÎÊý£º 0-³É&sup11-ʧ°Ü // // ˵Ã÷£º //========================================================== _Bool ESP8266_SendCmd(char *cmd, char *res) { unsigned char timeOut = 200; Usart_SendString(Bamfa_USART, (unsigned char *)cmd, strlen((const char *)cmd)); while(timeOut--) { if(ESP8266_WaitRecive() == REV_OK) //Èç&sup1;ûÊÕµ&frac12;Êý¾Ý { if(strstr((const char *)esp8266_buf, res) != NULL) //Èç&sup1;û&frac14;ìË÷µ&frac12;&sup1;Ø&frac14;ü´Ê { ESP8266_Clear(); //Çå¿Õ»º´æ return 0; } } delay_ms(10); } return 1; } //========================================================== // º¯ÊýÃû³Æ£º ESP8266_SendData // // º¯Êý&sup1;¦ÄÜ£º ·¢ËÍÊý¾Ý // // Èë¿Ú²ÎÊý£º data£ºÊý¾Ý // len£º³¤¶È // // ·µ»Ø²ÎÊý£º ÎÞ // // ˵Ã÷£º //========================================================== void ESP8266_SendData(unsigned char *data) { ESP8266_Clear(); //Çå¿Õ&frac12;ÓÊÕ»º´æ Usart_SendString(Bamfa_USART, (unsigned char *)data, strlen((const char *)data)); //·¢ËÍÉ豸Á¬&frac12;ÓÇëÇóÊý¾Ý } //========================================================== // º¯ÊýÃû³Æ£º USART2_IRQHandler // // º¯Êý&sup1;¦ÄÜ£º ´®¿Ú2ÊÕ·¢ÖÐ¶Ï // // Èë¿Ú²ÎÊý£º ÎÞ // // ·µ»Ø²ÎÊý£º ÎÞ // // ˵Ã÷£º //========================================================== #if Bamfa_USART1 void USART1_IRQHandler(void) { if(USART_GetITStatus(Bamfa_USART, USART_IT_RXNE) != RESET) //&frac12;ÓÊÕÖÐ¶Ï { if(esp8266_cnt >= sizeof(esp8266_buf)) esp8266_cnt = 0; //·ÀÖ&sup1;´®¿Ú±»Ë¢±¬ esp8266_buf[esp8266_cnt++] = USART_ReceiveData(Bamfa_USART); } USART_ClearFlag(Bamfa_USART, USART_FLAG_RXNE); } #elif Bamfa_USART2 void USART2_IRQHandler(void) { if(USART_GetITStatus(Bamfa_USART, USART_IT_RXNE) != RESET) //&frac12;ÓÊÕÖÐ¶Ï { if(esp8266_cnt >= sizeof(esp8266_buf)) esp8266_cnt = 0; //·ÀÖ&sup1;´®¿Ú±»Ë¢±¬ esp8266_buf[esp8266_cnt++] = USART_ReceiveData(Bamfa_USART); } USART_ClearFlag(Bamfa_USART, USART_FLAG_RXNE); } #elif Bamfa_USART3 void USART3_IRQHandler(void) { if(USART_GetITStatus(Bamfa_USART, USART_IT_RXNE) != RESET) //&frac12;ÓÊÕÖÐ¶Ï { if(esp8266_cnt >= sizeof(esp8266_buf)) esp8266_cnt = 0; //·ÀÖ&sup1;´®¿Ú±»Ë¢±¬ esp8266_buf[esp8266_cnt++] = USART_ReceiveData(Bamfa_USART); } USART_ClearFlag(Bamfa_USART, USART_FLAG_RXNE); } #endif 根据以上代码帮我画一个流程框图
最新发布
05-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值