اطلاعیه

Collapse
No announcement yet.

خوندن analog و فرستادن به وب

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    خوندن analog و فرستادن به وب

    من مثال EMAC و دیدم کتابخونه هاش(library) شبیه نوشتهٔ عدم فضایی بود ! از کجا میآ‌تونم بفهمم؟ خودم که خوندم نمیفهمم چیآ‌ به چیآ‌ !

    باید چیککر کنم؟



    میآ‌خوام مثلا شدت نورو یک کاری کنم بشه از اینترنت دید !

    کلا توی مصلا برای هر چیزی کتاب خون داره که اصلا خوب نیستن مثل Analogread, باید کتاب خونهآ‌ خودمو بنویسم یا از این استفاده کنم؟!


    #2
    پاسخ : خوندن analog و فرستادن به وب

    مصلا کجاست؟
    الان مشکلت شدت نوره یا ارسال مقدار به جایی؟

    دیدگاه


      #3
      پاسخ : خوندن analog و فرستادن به وب

      نوشته اصلی توسط gbg
      مصلا کجاست؟
      الان مشکلت شدت نوره یا ارسال مقدار به جایی؟
      خوندن آنالگ که خیلی راحته ! مشکلم جابحایی ! میخام از تریغ وب براسر ببینم عددش ! هالا هر عدد یا چیزی !

      دیدگاه


        #4
        پاسخ : خوندن analog و فرستادن به وب

        سلام
        می تونید از مثال های LPCOPEN استفاده کنید
        سه تا مثال مربوط به شبکه داره
        یکیش وب سروره
        دو تای دیگه هم یک مثال از lwip هستش که یکیش با freertos هستش
        می تونید حتی از socket های lwip استفاده کنید(برای نوشتن وب سرور خودتون!)lwip حتی کلاینت DHCP هم داره!
        سوکتش استاندارده در حدی که من یه برنامه رو توی VC نوشتم بعد با کمی تغییر روی lpc1768 اجراش کردم(از lwip freertos ش استفاده کردم) ولی یه مشکل داره که حافظش کمه و اگر داده های زیادی رو جا به جا کنید نمی تونید از freertso + lwip استفاده کنید.
        اینم عکس برنامه خودم :mrgreen:

        دیدگاه


          #5
          پاسخ : خوندن analog و فرستادن به وب

          مثال easyweb همین کار رو میکنه
          مقدار ولتاژ رو از adc میخونه و نمایش میده
          مقدار ولتاژ رو هم میشه با یه پت کم و زیاد کرد

          دیدگاه


            #6
            پاسخ : خوندن analog و فرستادن به وب

            میشه با میکرو کنترلر به اینترنت وصل شد و برای کسی کامنت گذاشت فقط با میکروکنترلر نه کامپیوتر

            دیدگاه


              #7
              پاسخ : خوندن analog و فرستادن به وب

              نوشته اصلی توسط alis_a
              سلام
              می تونید از مثال های LPCOPEN استفاده کنید
              سه تا مثال مربوط به شبکه داره
              یکیش وب سروره
              دو تای دیگه هم یک مثال از lwip هستش که یکیش با freertos هستش
              می تونید حتی از socket های lwip استفاده کنید(برای نوشتن وب سرور خودتون!)lwip حتی کلاینت DHCP هم داره!
              سوکتش استاندارده در حدی که من یه برنامه رو توی VC نوشتم بعد با کمی تغییر روی lpc1768 اجراش کردم(از lwip freertos ش استفاده کردم) ولی یه مشکل داره که حافظش کمه و اگر داده های زیادی رو جا به جا کنید نمی تونید از freertso + lwip استفاده کنید.
              اینم عکس برنامه خودم :mrgreen:
              من از lpcopen خوشم نمیاد بخاطر اینکه فقط مال لپک هست !



              و، من easyweb و دیدم نفهمیدم زیاد چیزی من هیچیآ‌ درمورد netowrk-internet-ect نمیدونم فقط یکیم چیزی ساده! freertos چیآ‌؟ من تازه واردم !



              میآ‌شه بگین برای که من مبتدی همون چیزیکه شما ساختین شبیهشو بسازم (روشن کردن led یا ect) باید از اول چه چیزییآ‌ دبگیرم و شروع کنم کلا چیکار کنم ؟

              دیدگاه


                #8
                پاسخ : خوندن analog و فرستادن به وب

                سلام
                مثال easy وب خیلی ساده تره. متن html صفحه رو توی یه آرایه char ذخیره کرده بعد برای جا هایی که تغییر می کنن(مثل مقدار که قراره از ADC خونده بشه) یه عبارت خاص گذاشته توی اون آرایه بعد با یه تابعی اومده اون جا هایی که اون کاراکترای خاص هستند رو مقدار توشون قرار می ده و می فرسته
                LPCOPEN چیز خاصی نیست NXP فقط اومده کتابخانه های مهم مثل lwip و fatfs و freertos رو برای میکرو ی خودش درایور نوشته.
                اونی که من عکسشو گذاشتم قسمتی که توی مرورگره با jQuery کار می کنه به خاطر همین وب سرورش باید متد پست هم پشتیبانی کنه که من نگشتم دنبالش ولی فکر نکنم easyweb بتونه باهاش کار کنه به خاطر همین خودم نوشتمش. درضمن من من خواستم خودم امتحان کنم ببینم چجوریه . درکل وقت خیلی زیادی می گیره. منم اول یه وب سرور رو با visual C++ ساختم با کتابخانه سوکت ویندوز بعدش ریختمش روی lpc1768. شمام اگر وفت زیاد داری می تونی همین کارو بکنی.(باید از سوکت پروگرمینگ شروع کنی)
                در مورد freerots یه جورایی یه سیستم عامل realtime که برای میکروکنترلر ها استفاده میشه
                freertos.org/

                دیدگاه


                  #9
                  پاسخ : خوندن analog و فرستادن به وب

                  نوشته اصلی توسط alis_a
                  سلام
                  مثال easy وب خیلی ساده تره. متن html صفحه رو توی یه آرایه char ذخیره کرده بعد برای جا هایی که تغییر می کنن(مثل مقدار که قراره از ADC خونده بشه) یه عبارت خاص گذاشته توی اون آرایه بعد با یه تابعی اومده اون جا هایی که اون کاراکترای خاص هستند رو مقدار توشون قرار می ده و می فرسته
                  LPCOPEN چیز خاصی نیست NXP فقط اومده کتابخانه های مهم مثل lwip و fatfs و freertos رو برای میکرو ی خودش درایور نوشته.
                  اونی که من عکسشو گذاشتم قسمتی که توی مرورگره با jQuery کار می کنه به خاطر همین وب سرورش باید متد پست هم پشتیبانی کنه که من نگشتم دنبالش ولی فکر نکنم easyweb بتونه باهاش کار کنه به خاطر همین خودم نوشتمش. درضمن من من خواستم خودم امتحان کنم ببینم چجوریه . درکل وقت خیلی زیادی می گیره. منم اول یه وب سرور رو با visual C++ ساختم با کتابخانه سوکت ویندوز بعدش ریختمش روی lpc1768. شمام اگر وفت زیاد داری می تونی همین کارو بکنی.(باید از سوکت پروگرمینگ شروع کنی)
                  در مورد freerots یه جورایی یه سیستم عامل realtime که برای میکروکنترلر ها استفاده میشه
                  freertos.org/
                  خب من فهیدم یه چیزا یی ! ولیآ‌ هنوز نفهمیدم که اون easyweb چجوری کارمیکنه! پیج که زخیره کردم بعدش چیکار کنم خوب ؟ (منظورم اینه چجوری اون وبسیت و تغییر بدم یا یکاری کنم بشه دیدش و رفت بهش و از کجا بفهمم آدرسش(ip) چیآ‌؟)



                  و اینکه استفاده از freertos و lpcopen چه مزیتی داره؟ و از کجا یاد بگیرم ؟


                  ببخشید زیاد سوال میآ‌پرسم

                  دیدگاه


                    #10
                    پاسخ : خوندن analog و فرستادن به وب

                    کد:
                    const unsigned char WebSide[] = {
                    "<html>\r\n"
                    "<head>\r\n"
                    "<meta http-equiv=\"refresh\" content=\"5\">\r\n"
                    "<title>easyWEB - dynamic Webside</title>\r\n"
                    "</head>\r\n"
                    "\r\n"
                    "<body bgcolor=\"#3030A0\" text=\"#FFFF00\">\r\n"
                    "<p><b><font color=\"#FFFFFF\" size=\"6\"><i>SALAM DONYA!</i></font></b></p>\r\n"
                    "\r\n"
                    "<p><b>This is a dynamic website hosted by the embedded Webserver</b> <b>easyWEB.</b></p>\r\n"
                    "<p><b>Hardware:</b></p>\r\n"
                    "<ul>\r\n"
                    "<li><b>Keil MCB1700 board. ARM M3 Cortex running EasyWeb</b></li>\r\n"
                    "<li><b>Embedded EMAC Ethernet Controller</b></li>\r\n"
                    "</ul>\r\n"
                    "\r\n"
                    "<p><b>A/D Converter Input 2 - POT1: AD8% </b></p>\r\n"
                    "\r\n"
                    "<table bgcolor=\"#ff0000\" border=\"5\" cellpadding=\"0\" cellspacing=\"0\" width=\"500\">\r\n"
                    "<tr>\r\n"
                    "<td>\r\n"
                    "<table width=\"AD7%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n"
                    "<tr><td bgcolor=\"#00ff00\"> </td></tr>\r\n"
                    "</table>\r\n"
                    "</td>\r\n"
                    "</tr>\r\n"
                    "</table>\r\n"
                    "\r\n"
                    "<table border=\"0\" width=\"540\">\r\n"
                    "<tr>\r\n"
                    "<td width=\"15%\">0V</td>\r\n"
                    "<td width=\"15%\">0.5V</td>\r\n"
                    "<td width=\"15%\">1V</td>\r\n"
                    "<td width=\"15%\">1.5V</td>\r\n"
                    "<td width=\"15%\">2V</td>\r\n"
                    "<td width=\"15%\">2.5V</td>\r\n"
                    "<td width=\"15%\">3V</td>\r\n"
                    "</tr>\r\n"
                    "</table>\r\n"
                    "\r\n"
                    "<br><br><br><br>\r\n"
                    "<table border=\"0\" width=\"500\">\r\n"
                    "<tr>\r\n"
                    "<td width=\"10%\"></td>\r\n"
                    "<td width=\"45%\">\r\n"
                    "<table bgcolor=\"silver\" border=\"5\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\r\n"
                    "<tr>\r\n"
                    "<td>\r\n"
                    "<p><b><font color=\"#FFFFFF\" size=\"6\"><i>Page Count: AD1%</i></font></b></p>\r\n"
                    "</td>\r\n"
                    "</tr>\r\n"
                    "</table>\r\n"
                    "</td>\r\n"
                    "</tr>\r\n"
                    "</table>\r\n"
                    "\r\n"
                    "\r\n"
                    "\r\n"
                    "</body>\r\n"
                    "</html>\r\n"
                    "\r\n"};
                    این کدیه که تو فایله webpage.h easyweb هستش
                    مثلا به این قسمتش توجه کنید
                    کد:
                    "<p><b>A/D Converter Input 2 - POT1: AD8% </b></p>\r\n"
                    یا این قسمت
                    کد:
                    "<p><b><font color=\"#FFFFFF\" size=\"6\"><i>Page Count: AD1%</i></font></b></p>\r\n"
                    اون AD8% یا AD1% همون عبارت های خاصیه که اون جا گذاشتن. (AD%8 برای مقدار ADC ه)
                    توی فایل easyweb.c تابعvoid InsertDynamicValues(void) نگاه کنید
                    کد:
                    void InsertDynamicValues(void)
                    {
                     unsigned char *Key;
                          char NewKey[5];
                     unsigned int i;
                     
                     if (TCPTxDataCount < 4) return;           // there can't be any special string
                     
                     Key = TCP_TX_BUF;
                     
                     for (i = 0; i < (TCPTxDataCount - 3); i++)
                     {
                      if (*Key == 'A')
                       if (*(Key + 1) == 'D')
                        if (*(Key + 3) == '%')
                         switch (*(Key + 2))
                         {
                          case '8' :                 // "AD8%"?
                          {
                           adcValue = GetAD7Val();         // get AD value
                           sprintf(NewKey, "0x%03X", adcValue);    // insert AD converter value
                           memcpy(Key, NewKey, 5);         
                           break;
                          }
                          case '7' :                 // "AD7%"?
                          {
                           sprintf(NewKey, "%3u", (adcValue*100)/4024);   // copy saved value from previous read
                           memcpy(Key, NewKey, 3);         
                           break;
                          }
                    		  case '1' :                 // "AD1%"?
                          {
                     			 sprintf(NewKey, "%3u", ++pagecounter);  // increment and insert page counter
                           memcpy(Key, NewKey, 3); 
                    			 *(Key + 3) = ' '; 
                           break;
                          }
                         }
                      Key++;
                     }
                    }
                    همون طور که می بینید این تابع میاد AD% ها رو پیدا می کنه بعد از روی عدد بعدش میاد مقادری مختلف رو جاشون میریزه. همون طور که می بینید به جای AD%8 اومده مقدار GetAD7Val() ریخته که GetAD7Val هم میره ADC lpc رو می خونه.
                    پس شما برای کارتون کافیه فقط همون const unsigned char WebSide رو تغییر بدین و ایت تابع InsertDynamicValues به بقیه چیزا هم لازم نیست دست بزنین
                    اگر اشتباه می گم اساتید بگن ممنون میشم :smile:

                    دیدگاه


                      #11
                      پاسخ : خوندن analog و فرستادن به وب

                      freertos رو یادم رفت
                      برای freertos منابع خودش خیلی خوبن ولی قبلش باید با یه کتابخونه multithreading آشنا باشین
                      ریفرنس خود freertos :
                      http://www.freertos.org/a00106.html
                      توی همون سایت توصیه کرده از همون اول شروع نکنید برای پردازندتون پورتش کنید اول از پورت های آماده استفاده کنید. برای lpc ها پورت آمادش تو lpcopen هستش.
                      lpcopn هم یک سری مثالن که کتابخونه ها کنارشونن باید از lpcware دانلودشون کنید

                      دیدگاه


                        #12
                        پاسخ : خوندن analog و فرستادن به وب

                        نوشته اصلی توسط alis_a
                        کد:
                        const unsigned char WebSide[] = {
                        "<html>\r\n"
                        "<head>\r\n"
                        "<meta http-equiv=\"refresh\" content=\"5\">\r\n"
                        "<title>easyWEB - dynamic Webside</title>\r\n"
                        "</head>\r\n"
                        "\r\n"
                        "<body bgcolor=\"#3030A0\" text=\"#FFFF00\">\r\n"
                        "<p><b><font color=\"#FFFFFF\" size=\"6\"><i>SALAM DONYA!</i></font></b></p>\r\n"
                        "\r\n"
                        "<p><b>This is a dynamic website hosted by the embedded Webserver</b> <b>easyWEB.</b></p>\r\n"
                        "<p><b>Hardware:</b></p>\r\n"
                        "<ul>\r\n"
                        "<li><b>Keil MCB1700 board. ARM M3 Cortex running EasyWeb</b></li>\r\n"
                        "<li><b>Embedded EMAC Ethernet Controller</b></li>\r\n"
                        "</ul>\r\n"
                        "\r\n"
                        "<p><b>A/D Converter Input 2 - POT1: AD8% </b></p>\r\n"
                        "\r\n"
                        "<table bgcolor=\"#ff0000\" border=\"5\" cellpadding=\"0\" cellspacing=\"0\" width=\"500\">\r\n"
                        "<tr>\r\n"
                        "<td>\r\n"
                        "<table width=\"AD7%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n"
                        "<tr><td bgcolor=\"#00ff00\"> </td></tr>\r\n"
                        "</table>\r\n"
                        "</td>\r\n"
                        "</tr>\r\n"
                        "</table>\r\n"
                        "\r\n"
                        "<table border=\"0\" width=\"540\">\r\n"
                        "<tr>\r\n"
                        "<td width=\"15%\">0V</td>\r\n"
                        "<td width=\"15%\">0.5V</td>\r\n"
                        "<td width=\"15%\">1V</td>\r\n"
                        "<td width=\"15%\">1.5V</td>\r\n"
                        "<td width=\"15%\">2V</td>\r\n"
                        "<td width=\"15%\">2.5V</td>\r\n"
                        "<td width=\"15%\">3V</td>\r\n"
                        "</tr>\r\n"
                        "</table>\r\n"
                        "\r\n"
                        "<br><br><br><br>\r\n"
                        "<table border=\"0\" width=\"500\">\r\n"
                        "<tr>\r\n"
                        "<td width=\"10%\"></td>\r\n"
                        "<td width=\"45%\">\r\n"
                        "<table bgcolor=\"silver\" border=\"5\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\r\n"
                        "<tr>\r\n"
                        "<td>\r\n"
                        "<p><b><font color=\"#FFFFFF\" size=\"6\"><i>Page Count: AD1%</i></font></b></p>\r\n"
                        "</td>\r\n"
                        "</tr>\r\n"
                        "</table>\r\n"
                        "</td>\r\n"
                        "</tr>\r\n"
                        "</table>\r\n"
                        "\r\n"
                        "\r\n"
                        "\r\n"
                        "</body>\r\n"
                        "</html>\r\n"
                        "\r\n"};
                        این کدیه که تو فایله webpage.h easyweb هستش
                        مثلا به این قسمتش توجه کنید
                        کد:
                        "<p><b>A/D Converter Input 2 - POT1: AD8% </b></p>\r\n"
                        یا این قسمت
                        کد:
                        "<p><b><font color=\"#FFFFFF\" size=\"6\"><i>Page Count: AD1%</i></font></b></p>\r\n"
                        اون AD8% یا AD1% همون عبارت های خاصیه که اون جا گذاشتن. (AD%8 برای مقدار ADC ه)
                        توی فایل easyweb.c تابعvoid InsertDynamicValues(void) نگاه کنید
                        کد:
                        void InsertDynamicValues(void)
                        {
                         unsigned char *Key;
                              char NewKey[5];
                         unsigned int i;
                         
                         if (TCPTxDataCount < 4) return;           // there can't be any special string
                         
                         Key = TCP_TX_BUF;
                         
                         for (i = 0; i < (TCPTxDataCount - 3); i++)
                         {
                          if (*Key == 'A')
                           if (*(Key + 1) == 'D')
                            if (*(Key + 3) == '%')
                             switch (*(Key + 2))
                             {
                              case '8' :                 // "AD8%"?
                              {
                               adcValue = GetAD7Val();         // get AD value
                               sprintf(NewKey, "0x%03X", adcValue);    // insert AD converter value
                               memcpy(Key, NewKey, 5);         
                               break;
                              }
                              case '7' :                 // "AD7%"?
                              {
                               sprintf(NewKey, "%3u", (adcValue*100)/4024);   // copy saved value from previous read
                               memcpy(Key, NewKey, 3);         
                               break;
                              }
                        		  case '1' :                 // "AD1%"?
                              {
                         			 sprintf(NewKey, "%3u", ++pagecounter);  // increment and insert page counter
                               memcpy(Key, NewKey, 3); 
                        			 *(Key + 3) = ' '; 
                               break;
                              }
                             }
                          Key++;
                         }
                        }
                        همون طور که می بینید این تابع میاد AD% ها رو پیدا می کنه بعد از روی عدد بعدش میاد مقادری مختلف رو جاشون میریزه. همون طور که می بینید به جای AD%8 اومده مقدار GetAD7Val() ریخته که GetAD7Val هم میره ADC lpc رو می خونه.
                        پس شما برای کارتون کافیه فقط همون const unsigned char WebSide رو تغییر بدین و ایت تابع InsertDynamicValues به بقیه چیزا هم لازم نیست دست بزنین
                        اگر اشتباه می گم اساتید بگن ممنون میشم :smile:
                        مرسی ! بجز دو سوال آخر!

                        استفاده از این library برای همهیه proejct ها خوبه؟ و بقیه کد چی؟ اصلی تویه easyweb !

                        دیدگاه


                          #13
                          پاسخ : خوندن analog و فرستادن به وب

                          و بقیه کد چی؟ اصلی تویه easyweb !
                          چیزی که شما خیلی راحت می تونید تغییر بدید و کارتون راه بیفته تو همون تابع هست و تابعی که صداش می زنه.بقیه کد easyweb خیلی سخته :mrgreen: چون بقیش پیاده سازی لایه های شبکست. یه تاپیک توی eca هست که راجع به اون بحث شده. من خوندمش اصلا نفهمیدم :mrgreen: ولی یکم تو کدش بچرخید خودتون می فهمید چیاشو باید تغییر بدید.
                          استفاده از این library برای همهیه proejct ها خوبه؟
                          فکر نمی کنم همیشه خوب باشن قبلا گفتم حافظه ی زیادی اونا اشغال می کنن و به خاطر مشکل حافظه میکروتون ممکن هی هنگ کنه(خودم تونستم برای این کارم با این موضوع کنار بیام( با واچ داگ و ...) ولی ممکنه جای دیگه نشه اینکارو کرد)

                          دیدگاه


                            #14
                            پاسخ : خوندن analog و فرستادن به وب

                            نوشته اصلی توسط alis_a
                            چیزی که شما خیلی راحت می تونید تغییر بدید و کارتون راه بیفته تو همون تابع هست و تابعی که صداش می زنه.بقیه کد easyweb خیلی سخته :mrgreen: چون بقیش پیاده سازی لایه های شبکست. یه تاپیک توی eca هست که راجع به اون بحث شده. من خوندمش اصلا نفهمیدم :mrgreen: ولی یکم تو کدش بچرخید خودتون می فهمید چیاشو باید تغییر بدید. فکر نمی کنم همیشه خوب باشن قبلا گفتم حافظه ی زیادی اونا اشغال می کنن و به خاطر مشکل حافظه میکروتون ممکن هی هنگ کنه(خودم تونستم برای این کارم با این موضوع کنار بیام( با واچ داگ و ...) ولی ممکنه جای دیگه نشه اینکارو کرد)
                            mercy!

                            دیدگاه


                              #15
                              پاسخ : خوندن analog و فرستادن به وب

                              نوشته اصلی توسط kamhagh
                              mercy!
                              توی نت سرچ کردم نفهمیدم lpc1768 دارم میشه بگین چه سیمی به کجا وسل بشه (easyweb)
                              یک کابل ethernet پاره دارم

                              دیدگاه

                              لطفا صبر کنید...
                              X