






Started logging.

>>>
Content-Length: 3209

{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"processId":9912,"clientInfo":{"name":"vscode","version":"1.53.2"},"rootPath":"C:\\Users\\Administrator\\AppData\\Local\\Temp\\arduino-language-server2263143238\\sketch","rootUri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch","initializationOptions":{},"capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional"},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true},"textDocument":{"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}},"contextSupport":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"isPreferredSupport":true},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"colorProvider":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true,"tagSupport":{"valueSet":[1,2]}},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}},"window":{"workDoneProgress":true}},"trace":"off","workspaceFolders":[{"uri":"file:///e%3A/5-%E6%95%99%E7%A8%8B/1.tutorial/ZYC0088%E8%B6%8A%E9%87%8E%E7%BA%A2%E5%A4%96%E7%89%88%E5%85%94%E5%AD%90%E8%BD%A6/code_infrared/rabbit_car1","name":"rabbit_car1"}]}}
<<<
Content-Length: 1905

{"id":"1","jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"allCommitCharacters":[" ","\t","(",")","[","]","{","}","<",">",":",";",",","+","-","/","*","%","^","&","#","?",".","=","\"","'","|"],"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"implementationProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 14.0.0 windows x86_64-pc-windows-msvc"}}}
>>>
Content-Length: 52

{"jsonrpc":"2.0","method":"initialized","params":{}}Content-Length: 24067

{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp","languageId":"cpp","version":1,"text":"#include \u003cArduino.h\u003e\n#line 1 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\n#include \u003cAdafruit_NeoPixel.h\u003e\n#include \u003cIRremote.h\u003e\n\nstatic const uint8_t LFA = 8;\nstatic const uint8_t LFB = 9;\nstatic const uint8_t LBA = 10;\nstatic const uint8_t LBB = 11;\nstatic const uint8_t RFA = 12;\nstatic const uint8_t RFB = 13;\nstatic const uint8_t RBA = 14;\nstatic const uint8_t RBB = 15;\n\nstatic const uint8_t BUZZER = 16;\n\nstatic const uint8_t led = 25;\n\nstatic const uint8_t Track0 = 26; // ADC0\nstatic const uint8_t Track1 = 27; // ADC1\nstatic const uint8_t Track2 = 28; // ADC2\n\nstatic const uint8_t TRIG = 6;\nstatic const uint8_t ECHO = 7;\n\nstatic const int RECV = 18;\n\n#define NUM_LEDS 15       // LED灯珠数量\n#define LED_DT 17         // Arduino输出控制信号引脚\n#define LED_TYPE WS2812   // LED灯带型号\n#define COLOR_ORDER GRB   // RGB灯珠中红色、绿色、蓝色LED的排列顺序\nuint8_t max_bright = 127; // LED亮度控制变量，可使用数值为 0 ～ 255， 数值越大则光带亮度越高\n\nbyte rabbit_model = 0;\nint Black_Line = 200;\nuint64_t delaytime;\nbyte IR_DATA = 0;\n\nAdafruit_NeoPixel strip(NUM_LEDS, LED_DT, NEO_GRB + NEO_KHZ800);\n\nenum em_dir\n{\n    stop = 0,\n    forward,\n    backward,\n    turnleft,\n    turnright,\n    l_up,\n    l_down,\n    r_up,\n    r_down,\n    Contrarotate, // 逆时针\n    Clockwise     // 顺时针\n};\n\n#line 54 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid setup();\n#line 93 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid loop();\n#line 137 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid tracking_model();\n#line 365 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid follow_model();\n#line 489 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid obstacle_avoidance_model();\n#line 522 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nbool delay50ms(uint32_t ms);\n#line 557 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid free_model();\n#line 639 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid buzzer_sound(unsigned int time_ms);\n#line 651 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nfloat SR04(int Trig, int Echo);\n#line 663 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid car_movement(em_dir direction);\n#line 54 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid setup()\n{\n    Serial1.begin(9600);\n    Serial1.setTimeout(60);\n\n    IrReceiver.begin(RECV, DISABLE_LED_FEEDBACK);\n\n    pinMode(LFA, OUTPUT);\n    pinMode(LFB, OUTPUT);\n    pinMode(LBA, OUTPUT);\n    pinMode(LBB, OUTPUT);\n    pinMode(RFA, OUTPUT);\n    pinMode(RFB, OUTPUT);\n    pinMode(RBA, OUTPUT);\n    pinMode(RBB, OUTPUT);\n\n    pinMode(BUZZER, OUTPUT);\n\n    pinMode(led, OUTPUT);\n\n    pinMode(TRIG, OUTPUT);\n    pinMode(ECHO, INPUT);\n\n    strip.begin();\n    strip.setBrightness(max_bright);\n    for (size_t i = 0; i \u003c 15; i++)\n    {\n        strip.setPixelColor(i, 255, 0, 0);\n        strip.show();\n        delay(200);\n        strip.clear();\n        strip.show();\n    }\n\n    delaytime = millis();\n\n    Serial1.print(\"asdadad: \");\n}\n\nvoid loop()\n{\n    IR_DATA = 0;\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n//         Serial1.println(IrReceiver.decodedIRData.command, HEX); //打印遥控按键编码\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        default:\n            break;\n        }\n        \n    }\n    switch (rabbit_model)\n    {\n    case 1:\n        obstacle_avoidance_model();\n        break;\n    case 2:\n        follow_model();\n        break;\n    case 3:\n        tracking_model();\n        break;\n    default:\n        free_model();\n        break;\n    }\n}\n\nvoid tracking_model() // 循迹模式\n{\n    while(3 == rabbit_model)\n    {\n        int T0 = analogRead(Track0);\n        int T1 = analogRead(Track1);\n        int T2 = analogRead(Track2);\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;  \n             }\n        }\n        Serial1.print(\"IR_DATA:  \");\n        Serial1.println(IR_DATA);\n        Serial1.print(\"rabbit_model:  \");\n        Serial1.println(rabbit_model);\n        Serial1.println();\n        Serial1.println();\n        strip.fill(0x00ffff, 0, 15);\n        strip.show();\n        if (T0 \u003e Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(forward);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(Clockwise);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(Clockwise);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(Contrarotate);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break; \n                } \n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(Contrarotate);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(forward);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(stop);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break; \n                } \n            }\n        }\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }\n            \n        }\n        Serial1.print(IR_DATA);\n    }\n}\n\nvoid follow_model() // 跟随模式\n{\n    int Avoidance_distance = SR04(TRIG, ECHO);\n    strip.fill(0x8B00FF, 0, 15);\n    strip.show();\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        }   \n    }\n    if (Avoidance_distance \u003c= 15)\n    {\n        buzzer_sound(100);\n        car_movement(backward);\n    }\n    else if (15 \u003c= Avoidance_distance \u0026\u0026 Avoidance_distance \u003c= 20)\n    {\n        car_movement(stop); // 停止\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    else if (20 \u003c= Avoidance_distance \u0026\u0026 Avoidance_distance \u003c= 35)\n    {\n        car_movement(forward);\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    else\n    {\n        car_movement(stop); // 停止\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        }   \n    }\n}\n\nvoid obstacle_avoidance_model() // 避障模式\n{\n    int Avoidance_distance = SR04(TRIG, ECHO);\n    strip.fill(0x0000ff, 0, 15);\n    strip.show();\n    if (Avoidance_distance \u003c= 25)\n    {\n        buzzer_sound(100);\n        if (Avoidance_distance \u003c= 15)\n        {\n            car_movement(stop); // 停止\n            if(false == delay50ms(5)) return;\n            car_movement(backward);\n            if(false == delay50ms(5)) return;\n            car_movement(Clockwise);\n            if(false == delay50ms(2)) return;\n        }\n        else\n        {\n            car_movement(stop); // 停止\n            if(false == delay50ms(5)) return;\n            car_movement(backward);\n            if(false == delay50ms(6)) return;\n            car_movement(Contrarotate);\n            if(false == delay50ms(5)) return;\n        }\n    }\n    else\n    {\n        car_movement(forward);\n    }\n}\n\nbool delay50ms(uint32_t ms)\n{\n    for(; ms\u003e0; ms--)\n    {\n        delay(50);  \n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                return false;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                return false;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                return false;\n                break;\n            default:\n                break;\n            }\n            \n        }   \n    } \n    return true;\n}\n\nvoid free_model() // 遥控模式\n{\n    if (IR_DATA == 0x15) // 顺时针\n    {\n        car_movement(Clockwise);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x47) // 喇叭\n    {\n        buzzer_sound(100);\n    }\n    else if (IR_DATA == 0x40) // 前进\n    {\n        car_movement(forward);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x19) // 后退\n    {\n        car_movement(backward);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x7) // 左平移\n    {\n        car_movement(turnleft);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x9) // 右平移\n    {\n        car_movement(turnright);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x44) // 左上\n    {\n        car_movement(l_up);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x16) // 左下\n    {\n        car_movement(l_down);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x43) // 右上\n    {\n        car_movement(r_up);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0xD) // 右下\n    {\n        car_movement(r_down);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else\n    {\n        car_movement(stop); // 停止\n        if ((millis() - delaytime) \u003e 1000)\n        {\n            delaytime = millis();\n            strip.fill(random(1, 16777215), 0, 15);\n            strip.show();\n        }\n    }\n    IR_DATA = 0;\n}\n\nvoid buzzer_sound(unsigned int time_ms)\n{\n    while (time_ms)\n    {\n        time_ms--;\n        digitalWrite(BUZZER, 1);\n        delayMicroseconds(600);\n        digitalWrite(BUZZER, 0);\n        delayMicroseconds(400);\n    }\n}\n\nfloat SR04(int Trig, int Echo)\n{\n    digitalWrite(Trig, LOW);\n    delayMicroseconds(2);\n    digitalWrite(Trig, HIGH);\n    delayMicroseconds(10);\n    digitalWrite(Trig, LOW);\n    float distance = pulseIn(Echo, HIGH) / 58.00;\n    delay(10);\n    return distance;\n}\n\nvoid car_movement(em_dir direction)\n{\n    switch (direction)\n    {\n    case forward:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case backward:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case turnleft:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case turnright:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case l_up:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    case l_down:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case r_up:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case r_down:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    case Clockwise:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case Contrarotate:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    default:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    }\n}\n\n"}}}Content-Length: 311

{"jsonrpc":"2.0","id":"2","method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp"},"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"context":{"diagnostics":[]}}}
<<<
Content-Length: 188

{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[],"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/.clangd"}}Content-Length: 111

{"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}}
>>>
Content-Length: 38

{"jsonrpc":"2.0","id":0,"result":null}
<<<
Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}}Content-Length: 141

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/35","percentage":5}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/35","percentage":5}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/35","percentage":8}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/35","percentage":8}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/35","percentage":11}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/35","percentage":11}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/35","percentage":14}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/35","percentage":14}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/35","percentage":17}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/35","percentage":17}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/35","percentage":20}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/35","percentage":20}}}Content-Length: 785

{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"pp_hash_error","message":"In included file: \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"","range":{"end":{"character":10,"line":0},"start":{"character":9,"line":0}},"relatedInformation":[{"location":{"range":{"end":{"character":10,"line":89},"start":{"character":5,"line":89}},"uri":"file:///C:/Users/Administrator/AppData/Local/Arduino15/packages/rp2040/hardware/rp2040/2.6.3/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Core/Include/core_cm0plus.h"},"message":"Error occurred here"}],"severity":1,"source":"clang"}],"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp","version":1}}Content-Length: 38

{"id":"2","jsonrpc":"2.0","result":[]}
>>>
Content-Length: 212

{"jsonrpc":"2.0","id":"3","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp"}}}
<<<
Content-Length: 11642

{"id":"3","jsonrpc":"2.0","result":[{"detail":"const uint8_t","kind":13,"name":"LFA","range":{"end":{"character":28,"line":5},"start":{"character":0,"line":5}},"selectionRange":{"end":{"character":24,"line":5},"start":{"character":21,"line":5}}},{"detail":"const uint8_t","kind":13,"name":"LFB","range":{"end":{"character":28,"line":6},"start":{"character":0,"line":6}},"selectionRange":{"end":{"character":24,"line":6},"start":{"character":21,"line":6}}},{"detail":"const uint8_t","kind":13,"name":"LBA","range":{"end":{"character":29,"line":7},"start":{"character":0,"line":7}},"selectionRange":{"end":{"character":24,"line":7},"start":{"character":21,"line":7}}},{"detail":"const uint8_t","kind":13,"name":"LBB","range":{"end":{"character":29,"line":8},"start":{"character":0,"line":8}},"selectionRange":{"end":{"character":24,"line":8},"start":{"character":21,"line":8}}},{"detail":"const uint8_t","kind":13,"name":"RFA","range":{"end":{"character":29,"line":9},"start":{"character":0,"line":9}},"selectionRange":{"end":{"character":24,"line":9},"start":{"character":21,"line":9}}},{"detail":"const uint8_t","kind":13,"name":"RFB","range":{"end":{"character":29,"line":10},"start":{"character":0,"line":10}},"selectionRange":{"end":{"character":24,"line":10},"start":{"character":21,"line":10}}},{"detail":"const uint8_t","kind":13,"name":"RBA","range":{"end":{"character":29,"line":11},"start":{"character":0,"line":11}},"selectionRange":{"end":{"character":24,"line":11},"start":{"character":21,"line":11}}},{"detail":"const uint8_t","kind":13,"name":"RBB","range":{"end":{"character":29,"line":12},"start":{"character":0,"line":12}},"selectionRange":{"end":{"character":24,"line":12},"start":{"character":21,"line":12}}},{"detail":"const uint8_t","kind":13,"name":"BUZZER","range":{"end":{"character":32,"line":14},"start":{"character":0,"line":14}},"selectionRange":{"end":{"character":27,"line":14},"start":{"character":21,"line":14}}},{"detail":"const uint8_t","kind":13,"name":"led","range":{"end":{"character":29,"line":16},"start":{"character":0,"line":16}},"selectionRange":{"end":{"character":24,"line":16},"start":{"character":21,"line":16}}},{"detail":"const uint8_t","kind":13,"name":"Track0","range":{"end":{"character":32,"line":18},"start":{"character":0,"line":18}},"selectionRange":{"end":{"character":27,"line":18},"start":{"character":21,"line":18}}},{"detail":"const uint8_t","kind":13,"name":"Track1","range":{"end":{"character":32,"line":19},"start":{"character":0,"line":19}},"selectionRange":{"end":{"character":27,"line":19},"start":{"character":21,"line":19}}},{"detail":"const uint8_t","kind":13,"name":"Track2","range":{"end":{"character":32,"line":20},"start":{"character":0,"line":20}},"selectionRange":{"end":{"character":27,"line":20},"start":{"character":21,"line":20}}},{"detail":"const uint8_t","kind":13,"name":"TRIG","range":{"end":{"character":29,"line":22},"start":{"character":0,"line":22}},"selectionRange":{"end":{"character":25,"line":22},"start":{"character":21,"line":22}}},{"detail":"const uint8_t","kind":13,"name":"ECHO","range":{"end":{"character":29,"line":23},"start":{"character":0,"line":23}},"selectionRange":{"end":{"character":25,"line":23},"start":{"character":21,"line":23}}},{"detail":"const int","kind":13,"name":"RECV","range":{"end":{"character":26,"line":25},"start":{"character":0,"line":25}},"selectionRange":{"end":{"character":21,"line":25},"start":{"character":17,"line":25}}},{"detail":"uint8_t","kind":13,"name":"max_bright","range":{"end":{"character":24,"line":31},"start":{"character":0,"line":31}},"selectionRange":{"end":{"character":18,"line":31},"start":{"character":8,"line":31}}},{"detail":"byte","kind":13,"name":"rabbit_model","range":{"end":{"character":21,"line":33},"start":{"character":0,"line":33}},"selectionRange":{"end":{"character":17,"line":33},"start":{"character":5,"line":33}}},{"detail":"int","kind":13,"name":"Black_Line","range":{"end":{"character":20,"line":34},"start":{"character":0,"line":34}},"selectionRange":{"end":{"character":14,"line":34},"start":{"character":4,"line":34}}},{"detail":"uint64_t","kind":13,"name":"delaytime","range":{"end":{"character":18,"line":35},"start":{"character":0,"line":35}},"selectionRange":{"end":{"character":18,"line":35},"start":{"character":9,"line":35}}},{"detail":"byte","kind":13,"name":"IR_DATA","range":{"end":{"character":16,"line":36},"start":{"character":0,"line":36}},"selectionRange":{"end":{"character":12,"line":36},"start":{"character":5,"line":36}}},{"detail":"Adafruit_NeoPixel","kind":13,"name":"strip","range":{"end":{"character":63,"line":38},"start":{"character":0,"line":38}},"selectionRange":{"end":{"character":23,"line":38},"start":{"character":18,"line":38}}},{"children":[{"detail":"em_dir","kind":22,"name":"stop","range":{"end":{"character":12,"line":42},"start":{"character":4,"line":42}},"selectionRange":{"end":{"character":8,"line":42},"start":{"character":4,"line":42}}},{"detail":"em_dir","kind":22,"name":"forward","range":{"end":{"character":11,"line":43},"start":{"character":4,"line":43}},"selectionRange":{"end":{"character":11,"line":43},"start":{"character":4,"line":43}}},{"detail":"em_dir","kind":22,"name":"backward","range":{"end":{"character":12,"line":44},"start":{"character":4,"line":44}},"selectionRange":{"end":{"character":12,"line":44},"start":{"character":4,"line":44}}},{"detail":"em_dir","kind":22,"name":"turnleft","range":{"end":{"character":12,"line":45},"start":{"character":4,"line":45}},"selectionRange":{"end":{"character":12,"line":45},"start":{"character":4,"line":45}}},{"detail":"em_dir","kind":22,"name":"turnright","range":{"end":{"character":13,"line":46},"start":{"character":4,"line":46}},"selectionRange":{"end":{"character":13,"line":46},"start":{"character":4,"line":46}}},{"detail":"em_dir","kind":22,"name":"l_up","range":{"end":{"character":8,"line":47},"start":{"character":4,"line":47}},"selectionRange":{"end":{"character":8,"line":47},"start":{"character":4,"line":47}}},{"detail":"em_dir","kind":22,"name":"l_down","range":{"end":{"character":10,"line":48},"start":{"character":4,"line":48}},"selectionRange":{"end":{"character":10,"line":48},"start":{"character":4,"line":48}}},{"detail":"em_dir","kind":22,"name":"r_up","range":{"end":{"character":8,"line":49},"start":{"character":4,"line":49}},"selectionRange":{"end":{"character":8,"line":49},"start":{"character":4,"line":49}}},{"detail":"em_dir","kind":22,"name":"r_down","range":{"end":{"character":10,"line":50},"start":{"character":4,"line":50}},"selectionRange":{"end":{"character":10,"line":50},"start":{"character":4,"line":50}}},{"detail":"em_dir","kind":22,"name":"Contrarotate","range":{"end":{"character":16,"line":51},"start":{"character":4,"line":51}},"selectionRange":{"end":{"character":16,"line":51},"start":{"character":4,"line":51}}},{"detail":"em_dir","kind":22,"name":"Clockwise","range":{"end":{"character":13,"line":52},"start":{"character":4,"line":52}},"selectionRange":{"end":{"character":13,"line":52},"start":{"character":4,"line":52}}}],"detail":"enum","kind":10,"name":"em_dir","range":{"end":{"character":1,"line":53},"start":{"character":0,"line":40}},"selectionRange":{"end":{"character":11,"line":40},"start":{"character":5,"line":40}}},{"detail":"void ()","kind":12,"name":"setup","range":{"end":{"character":12,"line":56},"start":{"character":0,"line":56}},"selectionRange":{"end":{"character":10,"line":56},"start":{"character":5,"line":56}}},{"detail":"void ()","kind":12,"name":"loop","range":{"end":{"character":11,"line":58},"start":{"character":0,"line":58}},"selectionRange":{"end":{"character":9,"line":58},"start":{"character":5,"line":58}}},{"detail":"void ()","kind":12,"name":"tracking_model","range":{"end":{"character":21,"line":60},"start":{"character":0,"line":60}},"selectionRange":{"end":{"character":19,"line":60},"start":{"character":5,"line":60}}},{"detail":"void ()","kind":12,"name":"follow_model","range":{"end":{"character":19,"line":62},"start":{"character":0,"line":62}},"selectionRange":{"end":{"character":17,"line":62},"start":{"character":5,"line":62}}},{"detail":"void ()","kind":12,"name":"obstacle_avoidance_model","range":{"end":{"character":31,"line":64},"start":{"character":0,"line":64}},"selectionRange":{"end":{"character":29,"line":64},"start":{"character":5,"line":64}}},{"detail":"bool (uint32_t)","kind":12,"name":"delay50ms","range":{"end":{"character":27,"line":66},"start":{"character":0,"line":66}},"selectionRange":{"end":{"character":14,"line":66},"start":{"character":5,"line":66}}},{"detail":"void ()","kind":12,"name":"free_model","range":{"end":{"character":17,"line":68},"start":{"character":0,"line":68}},"selectionRange":{"end":{"character":15,"line":68},"start":{"character":5,"line":68}}},{"detail":"void (unsigned int)","kind":12,"name":"buzzer_sound","range":{"end":{"character":39,"line":70},"start":{"character":0,"line":70}},"selectionRange":{"end":{"character":17,"line":70},"start":{"character":5,"line":70}}},{"detail":"float (int, int)","kind":12,"name":"SR04","range":{"end":{"character":30,"line":72},"start":{"character":0,"line":72}},"selectionRange":{"end":{"character":10,"line":72},"start":{"character":6,"line":72}}},{"detail":"void (em_dir)","kind":12,"name":"car_movement","range":{"end":{"character":35,"line":74},"start":{"character":0,"line":74}},"selectionRange":{"end":{"character":17,"line":74},"start":{"character":5,"line":74}}},{"detail":"void ()","kind":12,"name":"setup","range":{"end":{"character":1,"line":113},"start":{"character":0,"line":76}},"selectionRange":{"end":{"character":10,"line":76},"start":{"character":5,"line":76}}},{"detail":"void ()","kind":12,"name":"loop","range":{"end":{"character":1,"line":157},"start":{"character":0,"line":115}},"selectionRange":{"end":{"character":9,"line":115},"start":{"character":5,"line":115}}},{"detail":"void ()","kind":12,"name":"tracking_model","range":{"end":{"character":1,"line":385},"start":{"character":0,"line":159}},"selectionRange":{"end":{"character":19,"line":159},"start":{"character":5,"line":159}}},{"detail":"void ()","kind":12,"name":"follow_model","range":{"end":{"character":1,"line":509},"start":{"character":0,"line":387}},"selectionRange":{"end":{"character":17,"line":387},"start":{"character":5,"line":387}}},{"detail":"void ()","kind":12,"name":"obstacle_avoidance_model","range":{"end":{"character":1,"line":542},"start":{"character":0,"line":511}},"selectionRange":{"end":{"character":29,"line":511},"start":{"character":5,"line":511}}},{"detail":"bool (uint32_t)","kind":12,"name":"delay50ms","range":{"end":{"character":1,"line":577},"start":{"character":0,"line":544}},"selectionRange":{"end":{"character":14,"line":544},"start":{"character":5,"line":544}}},{"detail":"void ()","kind":12,"name":"free_model","range":{"end":{"character":1,"line":659},"start":{"character":0,"line":579}},"selectionRange":{"end":{"character":15,"line":579},"start":{"character":5,"line":579}}},{"detail":"void (unsigned int)","kind":12,"name":"buzzer_sound","range":{"end":{"character":1,"line":671},"start":{"character":0,"line":661}},"selectionRange":{"end":{"character":17,"line":661},"start":{"character":5,"line":661}}},{"detail":"float (int, int)","kind":12,"name":"SR04","range":{"end":{"character":1,"line":683},"start":{"character":0,"line":673}},"selectionRange":{"end":{"character":10,"line":673},"start":{"character":6,"line":673}}},{"detail":"void (em_dir)","kind":12,"name":"car_movement","range":{"end":{"character":1,"line":800},"start":{"character":0,"line":685}},"selectionRange":{"end":{"character":17,"line":685},"start":{"character":5,"line":685}}}]}
>>>
Content-Length: 239

{"jsonrpc":"2.0","id":"4","method":"textDocument/hover","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp"},"position":{"line":5,"character":6}}}
<<<
Content-Length: 270

{"id":"4","jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"### variable `LFA`  \n\n---\nType: `const uint8_t`  \nValue = `8`  \n\n---\n```cpp\nstatic const uint8_t LFA = 8\n```"},"range":{"end":{"character":6,"line":5},"start":{"character":0,"line":5}}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/35","percentage":22}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/35","percentage":22}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/35","percentage":25}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/35","percentage":25}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"10/35","percentage":28}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"10/35","percentage":28}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"11/35","percentage":31}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"11/35","percentage":31}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"12/35","percentage":34}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"12/35","percentage":34}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"13/35","percentage":37}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"13/35","percentage":37}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"14/35","percentage":40}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"14/35","percentage":40}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"15/35","percentage":42}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"15/35","percentage":42}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"16/35","percentage":45}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"16/35","percentage":45}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"17/35","percentage":48}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"17/35","percentage":48}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"18/35","percentage":51}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"18/35","percentage":51}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"19/35","percentage":54}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"19/35","percentage":54}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"20/35","percentage":57}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"20/35","percentage":57}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"21/35","percentage":60}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"21/35","percentage":60}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"22/35","percentage":62}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"22/35","percentage":62}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"23/35","percentage":65}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"23/35","percentage":65}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"24/35","percentage":68}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"24/35","percentage":68}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"25/35","percentage":71}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"25/35","percentage":71}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"26/35","percentage":74}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"26/35","percentage":74}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"27/35","percentage":77}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"27/35","percentage":77}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"28/35","percentage":80}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"28/35","percentage":80}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"29/35","percentage":82}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"29/35","percentage":82}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"30/35","percentage":85}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"31/35","percentage":88}}}
>>>
Content-Length: 196

{"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp"}}}Content-Length: 24071

{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp","version":2},"contentChanges":[{"text":"#include \u003cArduino.h\u003e\n#line 1 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\n#include \u003cAdafruit_NeoPixel.h\u003e\n#include \u003cIRremote.h\u003e\n\nstatic const uint8_t LFA = 8;\nstatic const uint8_t LFB = 9;\nstatic const uint8_t LBA = 10;\nstatic const uint8_t LBB = 11;\nstatic const uint8_t RFA = 12;\nstatic const uint8_t RFB = 13;\nstatic const uint8_t RBA = 14;\nstatic const uint8_t RBB = 15;\n\nstatic const uint8_t BUZZER = 16;\n\nstatic const uint8_t led = 25;\n\nstatic const uint8_t Track0 = 26; // ADC0\nstatic const uint8_t Track1 = 27; // ADC1\nstatic const uint8_t Track2 = 28; // ADC2\n\nstatic const uint8_t TRIG = 6;\nstatic const uint8_t ECHO = 7;\n\nstatic const int RECV = 18;\n\n#define NUM_LEDS 15       // LED灯珠数量\n#define LED_DT 17         // Arduino输出控制信号引脚\n#define LED_TYPE WS2812   // LED灯带型号\n#define COLOR_ORDER GRB   // RGB灯珠中红色、绿色、蓝色LED的排列顺序\nuint8_t max_bright = 127; // LED亮度控制变量，可使用数值为 0 ～ 255， 数值越大则光带亮度越高\n\nbyte rabbit_model = 0;\nint Black_Line = 200;\nuint64_t delaytime;\nbyte IR_DATA = 0;\n\nAdafruit_NeoPixel strip(NUM_LEDS, LED_DT, NEO_GRB + NEO_KHZ800);\n\nenum em_dir\n{\n    stop = 0,\n    forward,\n    backward,\n    turnleft,\n    turnright,\n    l_up,\n    l_down,\n    r_up,\n    r_down,\n    Contrarotate, // 逆时针\n    Clockwise     // 顺时针\n};\n\n#line 54 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid setup();\n#line 93 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid loop();\n#line 137 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid tracking_model();\n#line 365 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid follow_model();\n#line 489 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid obstacle_avoidance_model();\n#line 522 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nbool delay50ms(uint32_t ms);\n#line 557 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid free_model();\n#line 639 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid buzzer_sound(unsigned int time_ms);\n#line 651 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nfloat SR04(int Trig, int Echo);\n#line 663 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid car_movement(em_dir direction);\n#line 54 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\code_infrared\\\\rabbit_car1\\\\rabbit_car1.ino\"\nvoid setup()\n{\n    Serial1.begin(9600);\n    Serial1.setTimeout(60);\n\n    IrReceiver.begin(RECV, DISABLE_LED_FEEDBACK);\n\n    pinMode(LFA, OUTPUT);\n    pinMode(LFB, OUTPUT);\n    pinMode(LBA, OUTPUT);\n    pinMode(LBB, OUTPUT);\n    pinMode(RFA, OUTPUT);\n    pinMode(RFB, OUTPUT);\n    pinMode(RBA, OUTPUT);\n    pinMode(RBB, OUTPUT);\n\n    pinMode(BUZZER, OUTPUT);\n\n    pinMode(led, OUTPUT);\n\n    pinMode(TRIG, OUTPUT);\n    pinMode(ECHO, INPUT);\n\n    strip.begin();\n    strip.setBrightness(max_bright);\n    for (size_t i = 0; i \u003c 15; i++)\n    {\n        strip.setPixelColor(i, 255, 0, 0);\n        strip.show();\n        delay(200);\n        strip.clear();\n        strip.show();\n    }\n\n    delaytime = millis();\n\n    Serial1.print(\"asdadad: \");\n}\n\nvoid loop()\n{\n    IR_DATA = 0;\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n//         Serial1.println(IrReceiver.decodedIRData.command, HEX); //打印遥控按键编码\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        default:\n            break;\n        }\n        \n    }\n    switch (rabbit_model)\n    {\n    case 1:\n        obstacle_avoidance_model();\n        break;\n    case 2:\n        follow_model();\n        break;\n    case 3:\n        tracking_model();\n        break;\n    default:\n        free_model();\n        break;\n    }\n}\n\nvoid tracking_model() // 循迹模式\n{\n    while(3 == rabbit_model)\n    {\n        int T0 = analogRead(Track0);\n        int T1 = analogRead(Track1);\n        int T2 = analogRead(Track2);\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;  \n             }\n        }\n        Serial1.print(\"IR_DATA:  \");\n        Serial1.println(IR_DATA);\n        Serial1.print(\"rabbit_model:  \");\n        Serial1.println(rabbit_model);\n        Serial1.println();\n        Serial1.println();\n        strip.fill(0x00ffff, 0, 15);\n        strip.show();\n        if (T0 \u003e Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(forward);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(Clockwise);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(Clockwise);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(Contrarotate);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break; \n                } \n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(Contrarotate);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(forward);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(stop);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break; \n                } \n            }\n        }\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }\n            \n        }\n        Serial1.print(IR_DATA);\n    }\n}\n\nvoid follow_model() // 跟随模式\n{\n    int Avoidance_distance = SR04(TRIG, ECHO);\n    strip.fill(0x8B00FF, 0, 15);\n    strip.show();\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        }   \n    }\n    if (Avoidance_distance \u003c= 15)\n    {\n        buzzer_sound(100);\n        car_movement(backward);\n    }\n    else if (15 \u003c= Avoidance_distance \u0026\u0026 Avoidance_distance \u003c= 20)\n    {\n        car_movement(stop); // 停止\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    else if (20 \u003c= Avoidance_distance \u0026\u0026 Avoidance_distance \u003c= 35)\n    {\n        car_movement(forward);\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    else\n    {\n        car_movement(stop); // 停止\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        }   \n    }\n}\n\nvoid obstacle_avoidance_model() // 避障模式\n{\n    int Avoidance_distance = SR04(TRIG, ECHO);\n    strip.fill(0x0000ff, 0, 15);\n    strip.show();\n    if (Avoidance_distance \u003c= 25)\n    {\n        buzzer_sound(100);\n        if (Avoidance_distance \u003c= 15)\n        {\n            car_movement(stop); // 停止\n            if(false == delay50ms(5)) return;\n            car_movement(backward);\n            if(false == delay50ms(5)) return;\n            car_movement(Clockwise);\n            if(false == delay50ms(2)) return;\n        }\n        else\n        {\n            car_movement(stop); // 停止\n            if(false == delay50ms(5)) return;\n            car_movement(backward);\n            if(false == delay50ms(6)) return;\n            car_movement(Contrarotate);\n            if(false == delay50ms(5)) return;\n        }\n    }\n    else\n    {\n        car_movement(forward);\n    }\n}\n\nbool delay50ms(uint32_t ms)\n{\n    for(; ms\u003e0; ms--)\n    {\n        delay(50);  \n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                return false;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                return false;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                return false;\n                break;\n            default:\n                break;\n            }\n            \n        }   \n    } \n    return true;\n}\n\nvoid free_model() // 遥控模式\n{\n    if (IR_DATA == 0x15) // 顺时针\n    {\n        car_movement(Clockwise);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x47) // 喇叭\n    {\n        buzzer_sound(100);\n    }\n    else if (IR_DATA == 0x40) // 前进\n    {\n        car_movement(forward);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x19) // 后退\n    {\n        car_movement(backward);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x7) // 左平移\n    {\n        car_movement(turnleft);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x9) // 右平移\n    {\n        car_movement(turnright);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x44) // 左上\n    {\n        car_movement(l_up);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x16) // 左下\n    {\n        car_movement(l_down);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x43) // 右上\n    {\n        car_movement(r_up);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0xD) // 右下\n    {\n        car_movement(r_down);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else\n    {\n        car_movement(stop); // 停止\n        if ((millis() - delaytime) \u003e 1000)\n        {\n            delaytime = millis();\n            strip.fill(random(1, 16777215), 0, 15);\n            strip.show();\n        }\n    }\n    IR_DATA = 0;\n}\n\nvoid buzzer_sound(unsigned int time_ms)\n{\n    while (time_ms)\n    {\n        time_ms--;\n        digitalWrite(BUZZER, 1);\n        delayMicroseconds(600);\n        digitalWrite(BUZZER, 0);\n        delayMicroseconds(400);\n    }\n}\n\nfloat SR04(int Trig, int Echo)\n{\n    digitalWrite(Trig, LOW);\n    delayMicroseconds(2);\n    digitalWrite(Trig, HIGH);\n    delayMicroseconds(10);\n    digitalWrite(Trig, LOW);\n    float distance = pulseIn(Echo, HIGH) / 58.00;\n    delay(10);\n    return distance;\n}\n\nvoid car_movement(em_dir direction)\n{\n    switch (direction)\n    {\n    case forward:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case backward:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case turnleft:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case turnright:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case l_up:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    case l_down:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case r_up:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case r_down:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    case Clockwise:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case Contrarotate:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    default:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    }\n}\n\n"}]}}
<<<
Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"32/35","percentage":91}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"33/35","percentage":94}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"34/35","percentage":97}}}Content-Length: 107

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"end"}}}
>>>
Content-Length: 315

{"jsonrpc":"2.0","id":"5","method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp"},"range":{"start":{"line":14,"character":33},"end":{"line":14,"character":33}},"context":{"diagnostics":[]}}}
<<<
Content-Length: 38

{"id":"5","jsonrpc":"2.0","result":[]}
>>>
Content-Length: 315

{"jsonrpc":"2.0","id":"6","method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server2263143238/sketch/rabbit_car1.ino.cpp"},"range":{"start":{"line":16,"character":30},"end":{"line":16,"character":30}},"context":{"diagnostics":[]}}}
<<<
Content-Length: 38

{"id":"6","jsonrpc":"2.0","result":[]}
>>>
Content-Length: 60

{"jsonrpc":"2.0","id":"7","method":"shutdown","params":null}
<<<
Content-Length: 40

{"id":"7","jsonrpc":"2.0","result":null}
>>>
Content-Length: 47

{"jsonrpc":"2.0","method":"exit","params":null}






Started logging.

>>>
Content-Length: 3226

{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"processId":4924,"clientInfo":{"name":"vscode","version":"1.53.2"},"rootPath":"C:\\Users\\Administrator\\AppData\\Local\\Temp\\arduino-language-server4176475717\\sketch","rootUri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/sketch","initializationOptions":{},"capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional"},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true},"textDocument":{"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}},"contextSupport":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"isPreferredSupport":true},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"colorProvider":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true,"tagSupport":{"valueSet":[1,2]}},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}},"window":{"workDoneProgress":true}},"trace":"off","workspaceFolders":[{"uri":"file:///e%3A/5-%E6%95%99%E7%A8%8B/1.tutorial/ZYC0088%E8%B6%8A%E9%87%8E%E7%BA%A2%E5%A4%96%E7%89%88%E5%85%94%E5%AD%90%E8%BD%A6/4_Arduino_Code/rabbit_car_infrared","name":"rabbit_car_infrared"}]}}
<<<
Content-Length: 1905

{"id":"1","jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"allCommitCharacters":[" ","\t","(",")","[","]","{","}","<",">",":",";",",","+","-","/","*","%","^","&","#","?",".","=","\"","'","|"],"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"implementationProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 14.0.0 windows x86_64-pc-windows-msvc"}}}
>>>
Content-Length: 52

{"jsonrpc":"2.0","method":"initialized","params":{}}Content-Length: 24279

{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/sketch/rabbit_car_infrared.ino.cpp","languageId":"cpp","version":1,"text":"#include \u003cArduino.h\u003e\n#line 1 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\n#include \u003cAdafruit_NeoPixel.h\u003e\n#include \u003cIRremote.h\u003e\n\nstatic const uint8_t LFA = 8;\nstatic const uint8_t LFB = 9;\nstatic const uint8_t LBA = 10;\nstatic const uint8_t LBB = 11;\nstatic const uint8_t RFA = 12;\nstatic const uint8_t RFB = 13;\nstatic const uint8_t RBA = 14;\nstatic const uint8_t RBB = 15;\n\nstatic const uint8_t BUZZER = 16;\n\nstatic const uint8_t led = 25;\n\nstatic const uint8_t Track0 = 26; // ADC0\nstatic const uint8_t Track1 = 27; // ADC1\nstatic const uint8_t Track2 = 28; // ADC2\n\nstatic const uint8_t TRIG = 6;\nstatic const uint8_t ECHO = 7;\n\nstatic const int RECV = 18;\n\n#define NUM_LEDS 15       // LED灯珠数量\n#define LED_DT 17         // Arduino输出控制信号引脚\n#define LED_TYPE WS2812   // LED灯带型号\n#define COLOR_ORDER GRB   // RGB灯珠中红色、绿色、蓝色LED的排列顺序\nuint8_t max_bright = 127; // LED亮度控制变量，可使用数值为 0 ～ 255， 数值越大则光带亮度越高\n\nbyte rabbit_model = 0;\nint Black_Line = 200;\nuint64_t delaytime;\nbyte IR_DATA = 0;\n\nAdafruit_NeoPixel strip(NUM_LEDS, LED_DT, NEO_GRB + NEO_KHZ800);\n\nenum em_dir\n{\n    stop = 0,\n    forward,\n    backward,\n    turnleft,\n    turnright,\n    l_up,\n    l_down,\n    r_up,\n    r_down,\n    Contrarotate, // 逆时针\n    Clockwise     // 顺时针\n};\n\n#line 54 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid setup();\n#line 93 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid loop();\n#line 137 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid tracking_model();\n#line 365 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid follow_model();\n#line 489 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid obstacle_avoidance_model();\n#line 522 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nbool delay50ms(uint32_t ms);\n#line 557 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid free_model();\n#line 639 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid buzzer_sound(unsigned int time_ms);\n#line 651 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nfloat SR04(int Trig, int Echo);\n#line 663 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid car_movement(em_dir direction);\n#line 54 \"E:\\\\5-教程\\\\1.tutorial\\\\ZYC0088越野红外版兔子车\\\\4_Arduino_Code\\\\rabbit_car_infrared\\\\rabbit_car_infrared.ino\"\nvoid setup()\n{\n    Serial1.begin(9600);\n    Serial1.setTimeout(60);\n\n    IrReceiver.begin(RECV, DISABLE_LED_FEEDBACK);\n\n    pinMode(LFA, OUTPUT);\n    pinMode(LFB, OUTPUT);\n    pinMode(LBA, OUTPUT);\n    pinMode(LBB, OUTPUT);\n    pinMode(RFA, OUTPUT);\n    pinMode(RFB, OUTPUT);\n    pinMode(RBA, OUTPUT);\n    pinMode(RBB, OUTPUT);\n\n    pinMode(BUZZER, OUTPUT);\n\n    pinMode(led, OUTPUT);\n\n    pinMode(TRIG, OUTPUT);\n    pinMode(ECHO, INPUT);\n\n    strip.begin();\n    strip.setBrightness(max_bright);\n    for (size_t i = 0; i \u003c 15; i++)\n    {\n        strip.setPixelColor(i, 255, 0, 0);\n        strip.show();\n        delay(200);\n        strip.clear();\n        strip.show();\n    }\n\n    delaytime = millis();\n\n    Serial1.print(\"asdadad: \");\n}\n\nvoid loop()\n{\n    IR_DATA = 0;\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n//         Serial1.println(IrReceiver.decodedIRData.command, HEX); //打印遥控按键编码\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        default:\n            break;\n        }\n        \n    }\n    switch (rabbit_model)\n    {\n    case 1:\n        obstacle_avoidance_model();\n        break;\n    case 2:\n        follow_model();\n        break;\n    case 3:\n        tracking_model();\n        break;\n    default:\n        free_model();\n        break;\n    }\n}\n\nvoid tracking_model() // 循迹模式\n{\n    while(3 == rabbit_model)\n    {\n        int T0 = analogRead(Track0);\n        int T1 = analogRead(Track1);\n        int T2 = analogRead(Track2);\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;  \n             }\n        }\n        Serial1.print(\"IR_DATA:  \");\n        Serial1.println(IR_DATA);\n        Serial1.print(\"rabbit_model:  \");\n        Serial1.println(rabbit_model);\n        Serial1.println();\n        Serial1.println();\n        strip.fill(0x00ffff, 0, 15);\n        strip.show();\n        if (T0 \u003e Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(forward);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(Clockwise);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(Clockwise);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(Contrarotate);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break; \n                } \n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(Contrarotate);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003e Black_Line \u0026\u0026 T1 \u003e Black_Line \u0026\u0026 T2 \u003e Black_Line)\n        {\n            car_movement(forward);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break;  \n                }\n            }\n        }\n        else if (T0 \u003c= Black_Line \u0026\u0026 T1 \u003c= Black_Line \u0026\u0026 T2 \u003c= Black_Line)\n        {\n            car_movement(stop);\n            if (IrReceiver.decode())\n            {                                                           //当接收到信号时\n                IR_DATA = IrReceiver.decodedIRData.command;\n                IrReceiver.resume();\n                switch (IR_DATA)\n                {\n                case 0xC:\n                    rabbit_model = 0;\n                    break;\n                case 0x18:\n                    rabbit_model = 1;\n                    break;\n                case 0x5E:\n                    rabbit_model = 2;\n                    break;\n                case 0x8:\n                    rabbit_model = 3;\n                    break; \n                } \n            }\n        }\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }\n            \n        }\n        Serial1.print(IR_DATA);\n    }\n}\n\nvoid follow_model() // 跟随模式\n{\n    int Avoidance_distance = SR04(TRIG, ECHO);\n    strip.fill(0x8B00FF, 0, 15);\n    strip.show();\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        }   \n    }\n    if (Avoidance_distance \u003c= 15)\n    {\n        buzzer_sound(100);\n        car_movement(backward);\n    }\n    else if (15 \u003c= Avoidance_distance \u0026\u0026 Avoidance_distance \u003c= 20)\n    {\n        car_movement(stop); // 停止\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    else if (20 \u003c= Avoidance_distance \u0026\u0026 Avoidance_distance \u003c= 35)\n    {\n        car_movement(forward);\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    else\n    {\n        car_movement(stop); // 停止\n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                break;\n            }   \n        }\n    }\n    if (IrReceiver.decode())\n    {                                                           //当接收到信号时\n        IR_DATA = IrReceiver.decodedIRData.command;\n        IrReceiver.resume();\n        switch (IR_DATA)\n        {\n        case 0xC:\n            rabbit_model = 0;\n            break;\n        case 0x18:\n            rabbit_model = 1;\n            break;\n        case 0x5E:\n            rabbit_model = 2;\n            break;\n        case 0x8:\n            rabbit_model = 3;\n            break;\n        }   \n    }\n}\n\nvoid obstacle_avoidance_model() // 避障模式\n{\n    int Avoidance_distance = SR04(TRIG, ECHO);\n    strip.fill(0x0000ff, 0, 15);\n    strip.show();\n    if (Avoidance_distance \u003c= 25)\n    {\n        buzzer_sound(100);\n        if (Avoidance_distance \u003c= 15)\n        {\n            car_movement(stop); // 停止\n            if(false == delay50ms(5)) return;\n            car_movement(backward);\n            if(false == delay50ms(5)) return;\n            car_movement(Clockwise);\n            if(false == delay50ms(2)) return;\n        }\n        else\n        {\n            car_movement(stop); // 停止\n            if(false == delay50ms(5)) return;\n            car_movement(backward);\n            if(false == delay50ms(6)) return;\n            car_movement(Contrarotate);\n            if(false == delay50ms(5)) return;\n        }\n    }\n    else\n    {\n        car_movement(forward);\n    }\n}\n\nbool delay50ms(uint32_t ms)\n{\n    for(; ms\u003e0; ms--)\n    {\n        delay(50);  \n        if (IrReceiver.decode())\n        {                                                           //当接收到信号时\n            IR_DATA = IrReceiver.decodedIRData.command;\n            IrReceiver.resume();\n            switch (IR_DATA)\n            {\n            case 0xC:\n                rabbit_model = 0;\n                return false;\n                break;\n            case 0x18:\n                rabbit_model = 1;\n                break;\n            case 0x5E:\n                rabbit_model = 2;\n                return false;\n                break;\n            case 0x8:\n                rabbit_model = 3;\n                return false;\n                break;\n            default:\n                break;\n            }\n            \n        }   \n    } \n    return true;\n}\n\nvoid free_model() // 遥控模式\n{\n    if (IR_DATA == 0x15) // 顺时针\n    {\n        car_movement(Clockwise);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x47) // 喇叭\n    {\n        buzzer_sound(100);\n    }\n    else if (IR_DATA == 0x40) // 前进\n    {\n        car_movement(forward);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x19) // 后退\n    {\n        car_movement(backward);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x7) // 左平移\n    {\n        car_movement(turnleft);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x9) // 右平移\n    {\n        car_movement(turnright);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x44) // 左上\n    {\n        car_movement(l_up);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x16) // 左下\n    {\n        car_movement(l_down);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0x43) // 右上\n    {\n        car_movement(r_up);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else if (IR_DATA == 0xD) // 右下\n    {\n        car_movement(r_down);\n        delay(100);\n        strip.fill(0x00ff00, 0, 15);\n        strip.show();\n    }\n    else\n    {\n        car_movement(stop); // 停止\n        if ((millis() - delaytime) \u003e 1000)\n        {\n            delaytime = millis();\n            strip.fill(random(1, 16777215), 0, 15);\n            strip.show();\n        }\n    }\n    IR_DATA = 0;\n}\n\nvoid buzzer_sound(unsigned int time_ms)\n{\n    while (time_ms)\n    {\n        time_ms--;\n        digitalWrite(BUZZER, 1);\n        delayMicroseconds(600);\n        digitalWrite(BUZZER, 0);\n        delayMicroseconds(400);\n    }\n}\n\nfloat SR04(int Trig, int Echo)\n{\n    digitalWrite(Trig, LOW);\n    delayMicroseconds(2);\n    digitalWrite(Trig, HIGH);\n    delayMicroseconds(10);\n    digitalWrite(Trig, LOW);\n    float distance = pulseIn(Echo, HIGH) / 58.00;\n    delay(10);\n    return distance;\n}\n\nvoid car_movement(em_dir direction)\n{\n    switch (direction)\n    {\n    case forward:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case backward:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case turnleft:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case turnright:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case l_up:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    case l_down:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case r_up:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    case r_down:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    case Clockwise:\n        digitalWrite(LFA, 1);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 1);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 1);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 1);\n        digitalWrite(RBB, 0);\n        break;\n    case Contrarotate:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 1);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 1);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 1);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 1);\n        break;\n    default:\n        digitalWrite(LFA, 0);\n        digitalWrite(LFB, 0);\n        digitalWrite(LBA, 0);\n        digitalWrite(LBB, 0);\n        digitalWrite(RFA, 0);\n        digitalWrite(RFB, 0);\n        digitalWrite(RBA, 0);\n        digitalWrite(RBB, 0);\n        break;\n    }\n}\n\n"}}}Content-Length: 323

{"jsonrpc":"2.0","id":"2","method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/sketch/rabbit_car_infrared.ino.cpp"},"range":{"start":{"line":686,"character":1},"end":{"line":686,"character":1}},"context":{"diagnostics":[]}}}
<<<
Content-Length: 188

{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[],"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/.clangd"}}Content-Length: 111

{"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}}
>>>
Content-Length: 38

{"jsonrpc":"2.0","id":0,"result":null}
<<<
Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}}Content-Length: 141

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/35","percentage":0}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"1/35","percentage":2}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/35","percentage":5}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"2/35","percentage":5}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/35","percentage":8}}}Content-Length: 142

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"3/35","percentage":8}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/35","percentage":11}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"4/35","percentage":11}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/35","percentage":14}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"5/35","percentage":14}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/35","percentage":17}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"6/35","percentage":17}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/35","percentage":20}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"7/35","percentage":20}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/35","percentage":22}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"8/35","percentage":22}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/35","percentage":25}}}Content-Length: 143

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"9/35","percentage":25}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"10/35","percentage":28}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"10/35","percentage":28}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"11/35","percentage":31}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"11/35","percentage":31}}}Content-Length: 793

{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"pp_hash_error","message":"In included file: \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"","range":{"end":{"character":10,"line":0},"start":{"character":9,"line":0}},"relatedInformation":[{"location":{"range":{"end":{"character":10,"line":89},"start":{"character":5,"line":89}},"uri":"file:///C:/Users/Administrator/AppData/Local/Arduino15/packages/rp2040/hardware/rp2040/2.6.3/pico-sdk/src/rp2_common/cmsis/stub/CMSIS/Core/Include/core_cm0plus.h"},"message":"Error occurred here"}],"severity":1,"source":"clang"}],"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/sketch/rabbit_car_infrared.ino.cpp","version":1}}Content-Length: 38

{"id":"2","jsonrpc":"2.0","result":[]}
>>>
Content-Length: 220

{"jsonrpc":"2.0","id":"3","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/sketch/rabbit_car_infrared.ino.cpp"}}}
<<<
Content-Length: 11642

{"id":"3","jsonrpc":"2.0","result":[{"detail":"const uint8_t","kind":13,"name":"LFA","range":{"end":{"character":28,"line":5},"start":{"character":0,"line":5}},"selectionRange":{"end":{"character":24,"line":5},"start":{"character":21,"line":5}}},{"detail":"const uint8_t","kind":13,"name":"LFB","range":{"end":{"character":28,"line":6},"start":{"character":0,"line":6}},"selectionRange":{"end":{"character":24,"line":6},"start":{"character":21,"line":6}}},{"detail":"const uint8_t","kind":13,"name":"LBA","range":{"end":{"character":29,"line":7},"start":{"character":0,"line":7}},"selectionRange":{"end":{"character":24,"line":7},"start":{"character":21,"line":7}}},{"detail":"const uint8_t","kind":13,"name":"LBB","range":{"end":{"character":29,"line":8},"start":{"character":0,"line":8}},"selectionRange":{"end":{"character":24,"line":8},"start":{"character":21,"line":8}}},{"detail":"const uint8_t","kind":13,"name":"RFA","range":{"end":{"character":29,"line":9},"start":{"character":0,"line":9}},"selectionRange":{"end":{"character":24,"line":9},"start":{"character":21,"line":9}}},{"detail":"const uint8_t","kind":13,"name":"RFB","range":{"end":{"character":29,"line":10},"start":{"character":0,"line":10}},"selectionRange":{"end":{"character":24,"line":10},"start":{"character":21,"line":10}}},{"detail":"const uint8_t","kind":13,"name":"RBA","range":{"end":{"character":29,"line":11},"start":{"character":0,"line":11}},"selectionRange":{"end":{"character":24,"line":11},"start":{"character":21,"line":11}}},{"detail":"const uint8_t","kind":13,"name":"RBB","range":{"end":{"character":29,"line":12},"start":{"character":0,"line":12}},"selectionRange":{"end":{"character":24,"line":12},"start":{"character":21,"line":12}}},{"detail":"const uint8_t","kind":13,"name":"BUZZER","range":{"end":{"character":32,"line":14},"start":{"character":0,"line":14}},"selectionRange":{"end":{"character":27,"line":14},"start":{"character":21,"line":14}}},{"detail":"const uint8_t","kind":13,"name":"led","range":{"end":{"character":29,"line":16},"start":{"character":0,"line":16}},"selectionRange":{"end":{"character":24,"line":16},"start":{"character":21,"line":16}}},{"detail":"const uint8_t","kind":13,"name":"Track0","range":{"end":{"character":32,"line":18},"start":{"character":0,"line":18}},"selectionRange":{"end":{"character":27,"line":18},"start":{"character":21,"line":18}}},{"detail":"const uint8_t","kind":13,"name":"Track1","range":{"end":{"character":32,"line":19},"start":{"character":0,"line":19}},"selectionRange":{"end":{"character":27,"line":19},"start":{"character":21,"line":19}}},{"detail":"const uint8_t","kind":13,"name":"Track2","range":{"end":{"character":32,"line":20},"start":{"character":0,"line":20}},"selectionRange":{"end":{"character":27,"line":20},"start":{"character":21,"line":20}}},{"detail":"const uint8_t","kind":13,"name":"TRIG","range":{"end":{"character":29,"line":22},"start":{"character":0,"line":22}},"selectionRange":{"end":{"character":25,"line":22},"start":{"character":21,"line":22}}},{"detail":"const uint8_t","kind":13,"name":"ECHO","range":{"end":{"character":29,"line":23},"start":{"character":0,"line":23}},"selectionRange":{"end":{"character":25,"line":23},"start":{"character":21,"line":23}}},{"detail":"const int","kind":13,"name":"RECV","range":{"end":{"character":26,"line":25},"start":{"character":0,"line":25}},"selectionRange":{"end":{"character":21,"line":25},"start":{"character":17,"line":25}}},{"detail":"uint8_t","kind":13,"name":"max_bright","range":{"end":{"character":24,"line":31},"start":{"character":0,"line":31}},"selectionRange":{"end":{"character":18,"line":31},"start":{"character":8,"line":31}}},{"detail":"byte","kind":13,"name":"rabbit_model","range":{"end":{"character":21,"line":33},"start":{"character":0,"line":33}},"selectionRange":{"end":{"character":17,"line":33},"start":{"character":5,"line":33}}},{"detail":"int","kind":13,"name":"Black_Line","range":{"end":{"character":20,"line":34},"start":{"character":0,"line":34}},"selectionRange":{"end":{"character":14,"line":34},"start":{"character":4,"line":34}}},{"detail":"uint64_t","kind":13,"name":"delaytime","range":{"end":{"character":18,"line":35},"start":{"character":0,"line":35}},"selectionRange":{"end":{"character":18,"line":35},"start":{"character":9,"line":35}}},{"detail":"byte","kind":13,"name":"IR_DATA","range":{"end":{"character":16,"line":36},"start":{"character":0,"line":36}},"selectionRange":{"end":{"character":12,"line":36},"start":{"character":5,"line":36}}},{"detail":"Adafruit_NeoPixel","kind":13,"name":"strip","range":{"end":{"character":63,"line":38},"start":{"character":0,"line":38}},"selectionRange":{"end":{"character":23,"line":38},"start":{"character":18,"line":38}}},{"children":[{"detail":"em_dir","kind":22,"name":"stop","range":{"end":{"character":12,"line":42},"start":{"character":4,"line":42}},"selectionRange":{"end":{"character":8,"line":42},"start":{"character":4,"line":42}}},{"detail":"em_dir","kind":22,"name":"forward","range":{"end":{"character":11,"line":43},"start":{"character":4,"line":43}},"selectionRange":{"end":{"character":11,"line":43},"start":{"character":4,"line":43}}},{"detail":"em_dir","kind":22,"name":"backward","range":{"end":{"character":12,"line":44},"start":{"character":4,"line":44}},"selectionRange":{"end":{"character":12,"line":44},"start":{"character":4,"line":44}}},{"detail":"em_dir","kind":22,"name":"turnleft","range":{"end":{"character":12,"line":45},"start":{"character":4,"line":45}},"selectionRange":{"end":{"character":12,"line":45},"start":{"character":4,"line":45}}},{"detail":"em_dir","kind":22,"name":"turnright","range":{"end":{"character":13,"line":46},"start":{"character":4,"line":46}},"selectionRange":{"end":{"character":13,"line":46},"start":{"character":4,"line":46}}},{"detail":"em_dir","kind":22,"name":"l_up","range":{"end":{"character":8,"line":47},"start":{"character":4,"line":47}},"selectionRange":{"end":{"character":8,"line":47},"start":{"character":4,"line":47}}},{"detail":"em_dir","kind":22,"name":"l_down","range":{"end":{"character":10,"line":48},"start":{"character":4,"line":48}},"selectionRange":{"end":{"character":10,"line":48},"start":{"character":4,"line":48}}},{"detail":"em_dir","kind":22,"name":"r_up","range":{"end":{"character":8,"line":49},"start":{"character":4,"line":49}},"selectionRange":{"end":{"character":8,"line":49},"start":{"character":4,"line":49}}},{"detail":"em_dir","kind":22,"name":"r_down","range":{"end":{"character":10,"line":50},"start":{"character":4,"line":50}},"selectionRange":{"end":{"character":10,"line":50},"start":{"character":4,"line":50}}},{"detail":"em_dir","kind":22,"name":"Contrarotate","range":{"end":{"character":16,"line":51},"start":{"character":4,"line":51}},"selectionRange":{"end":{"character":16,"line":51},"start":{"character":4,"line":51}}},{"detail":"em_dir","kind":22,"name":"Clockwise","range":{"end":{"character":13,"line":52},"start":{"character":4,"line":52}},"selectionRange":{"end":{"character":13,"line":52},"start":{"character":4,"line":52}}}],"detail":"enum","kind":10,"name":"em_dir","range":{"end":{"character":1,"line":53},"start":{"character":0,"line":40}},"selectionRange":{"end":{"character":11,"line":40},"start":{"character":5,"line":40}}},{"detail":"void ()","kind":12,"name":"setup","range":{"end":{"character":12,"line":56},"start":{"character":0,"line":56}},"selectionRange":{"end":{"character":10,"line":56},"start":{"character":5,"line":56}}},{"detail":"void ()","kind":12,"name":"loop","range":{"end":{"character":11,"line":58},"start":{"character":0,"line":58}},"selectionRange":{"end":{"character":9,"line":58},"start":{"character":5,"line":58}}},{"detail":"void ()","kind":12,"name":"tracking_model","range":{"end":{"character":21,"line":60},"start":{"character":0,"line":60}},"selectionRange":{"end":{"character":19,"line":60},"start":{"character":5,"line":60}}},{"detail":"void ()","kind":12,"name":"follow_model","range":{"end":{"character":19,"line":62},"start":{"character":0,"line":62}},"selectionRange":{"end":{"character":17,"line":62},"start":{"character":5,"line":62}}},{"detail":"void ()","kind":12,"name":"obstacle_avoidance_model","range":{"end":{"character":31,"line":64},"start":{"character":0,"line":64}},"selectionRange":{"end":{"character":29,"line":64},"start":{"character":5,"line":64}}},{"detail":"bool (uint32_t)","kind":12,"name":"delay50ms","range":{"end":{"character":27,"line":66},"start":{"character":0,"line":66}},"selectionRange":{"end":{"character":14,"line":66},"start":{"character":5,"line":66}}},{"detail":"void ()","kind":12,"name":"free_model","range":{"end":{"character":17,"line":68},"start":{"character":0,"line":68}},"selectionRange":{"end":{"character":15,"line":68},"start":{"character":5,"line":68}}},{"detail":"void (unsigned int)","kind":12,"name":"buzzer_sound","range":{"end":{"character":39,"line":70},"start":{"character":0,"line":70}},"selectionRange":{"end":{"character":17,"line":70},"start":{"character":5,"line":70}}},{"detail":"float (int, int)","kind":12,"name":"SR04","range":{"end":{"character":30,"line":72},"start":{"character":0,"line":72}},"selectionRange":{"end":{"character":10,"line":72},"start":{"character":6,"line":72}}},{"detail":"void (em_dir)","kind":12,"name":"car_movement","range":{"end":{"character":35,"line":74},"start":{"character":0,"line":74}},"selectionRange":{"end":{"character":17,"line":74},"start":{"character":5,"line":74}}},{"detail":"void ()","kind":12,"name":"setup","range":{"end":{"character":1,"line":113},"start":{"character":0,"line":76}},"selectionRange":{"end":{"character":10,"line":76},"start":{"character":5,"line":76}}},{"detail":"void ()","kind":12,"name":"loop","range":{"end":{"character":1,"line":157},"start":{"character":0,"line":115}},"selectionRange":{"end":{"character":9,"line":115},"start":{"character":5,"line":115}}},{"detail":"void ()","kind":12,"name":"tracking_model","range":{"end":{"character":1,"line":385},"start":{"character":0,"line":159}},"selectionRange":{"end":{"character":19,"line":159},"start":{"character":5,"line":159}}},{"detail":"void ()","kind":12,"name":"follow_model","range":{"end":{"character":1,"line":509},"start":{"character":0,"line":387}},"selectionRange":{"end":{"character":17,"line":387},"start":{"character":5,"line":387}}},{"detail":"void ()","kind":12,"name":"obstacle_avoidance_model","range":{"end":{"character":1,"line":542},"start":{"character":0,"line":511}},"selectionRange":{"end":{"character":29,"line":511},"start":{"character":5,"line":511}}},{"detail":"bool (uint32_t)","kind":12,"name":"delay50ms","range":{"end":{"character":1,"line":577},"start":{"character":0,"line":544}},"selectionRange":{"end":{"character":14,"line":544},"start":{"character":5,"line":544}}},{"detail":"void ()","kind":12,"name":"free_model","range":{"end":{"character":1,"line":659},"start":{"character":0,"line":579}},"selectionRange":{"end":{"character":15,"line":579},"start":{"character":5,"line":579}}},{"detail":"void (unsigned int)","kind":12,"name":"buzzer_sound","range":{"end":{"character":1,"line":671},"start":{"character":0,"line":661}},"selectionRange":{"end":{"character":17,"line":661},"start":{"character":5,"line":661}}},{"detail":"float (int, int)","kind":12,"name":"SR04","range":{"end":{"character":1,"line":683},"start":{"character":0,"line":673}},"selectionRange":{"end":{"character":10,"line":673},"start":{"character":6,"line":673}}},{"detail":"void (em_dir)","kind":12,"name":"car_movement","range":{"end":{"character":1,"line":800},"start":{"character":0,"line":685}},"selectionRange":{"end":{"character":17,"line":685},"start":{"character":5,"line":685}}}]}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"12/35","percentage":34}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"12/35","percentage":34}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"13/35","percentage":37}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"13/35","percentage":37}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"14/35","percentage":40}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"14/35","percentage":40}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"15/35","percentage":42}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"15/35","percentage":42}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"16/35","percentage":45}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"16/35","percentage":45}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"17/35","percentage":48}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"17/35","percentage":48}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"18/35","percentage":51}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"18/35","percentage":51}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"19/35","percentage":54}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"19/35","percentage":54}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"20/35","percentage":57}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"20/35","percentage":57}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"21/35","percentage":60}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"21/35","percentage":60}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"22/35","percentage":62}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"22/35","percentage":62}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"23/35","percentage":65}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"23/35","percentage":65}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"24/35","percentage":68}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"24/35","percentage":68}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"25/35","percentage":71}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"25/35","percentage":71}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"26/35","percentage":74}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"26/35","percentage":74}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"27/35","percentage":77}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"27/35","percentage":77}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"28/35","percentage":80}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"28/35","percentage":80}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"29/35","percentage":82}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"29/35","percentage":82}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"30/35","percentage":85}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"31/35","percentage":88}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"32/35","percentage":91}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"33/35","percentage":94}}}Content-Length: 144

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"34/35","percentage":97}}}Content-Length: 107

{"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"end"}}}
>>>
Content-Length: 249

{"jsonrpc":"2.0","id":"4","method":"textDocument/hover","params":{"textDocument":{"uri":"file:///C:/Users/Administrator/AppData/Local/Temp/arduino-language-server4176475717/sketch/rabbit_car_infrared.ino.cpp"},"position":{"line":18,"character":29}}}
<<<
Content-Length: 297

{"id":"4","jsonrpc":"2.0","result":{"contents":{"kind":"markdown","value":"### variable `Track0`  \n\n---\nType: `const uint8_t`  \nValue = `26 (0x1a)`  \nADC0  \n\n---\n```cpp\nstatic const uint8_t Track0 = 26\n```"},"range":{"end":{"character":29,"line":18},"start":{"character":28,"line":18}}}}
>>>
Content-Length: 60

{"jsonrpc":"2.0","id":"5","method":"shutdown","params":null}
<<<
Content-Length: 40

{"id":"5","jsonrpc":"2.0","result":null}
>>>
Content-Length: 47

{"jsonrpc":"2.0","method":"exit","params":null}