اطلاعیه

Collapse
No announcement yet.

ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

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

    ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

    سلام

    من یک وب سرور به کمک ENC28j60 و کتابخانه tuxgraphics راه اندازی کردم و بدون مشکل مثال های سایت مورد نظر را تست کردم حالا در دو جا مشکل دارم :
    1- در کتابخانه tuxgraphics یک بافر تعریف شده به سایز مثلاً 500 بایت و تمام صفحات طراحی شده بسیار ساده و با حجم کمتر از 500 بایت هستند اما صفحه من بزرگتر شده مثلاً من منو و سایر بخش های نمایشی دارم اما نمی دانم چگونه باید ارسال کنم به صورت تکه تکه کار نکرد و وقتی در چند مرحله ارسال کردم صفحه مورد نظر در سمت browser لود نشد فکر میکنم خود پروتکل TCP باید کاری کند. مثالی از ارسال اینگونه صفحات با کتابخانه tuxهست؟
    2-وقتی برد را روشن می کنم ping می دهد و وب سرور هم کار میکند اما بعد از گذشت تقریباً 1 ساعت یا کمی بیشتر از کار افتاده و ping هم نمی دهد (unreachable میدهد) و باید میکرو را ریست کنم تا دوبره به کار افتد چرا؟ مشکل از کجاست؟

    ممنون

    #2
    پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

    آیسی ENC28j60 رو خود میکروچیپ واسه PIC طراحی کرده...من با یه کتابخونه دیگه راش انداختم ولی بدون مشکله ...واسه ارسال صفحات بزرگتر هم بهتره که اون وب پیج رو روی SD ذخیره کنید و از اونجا بخونیدش...
    اندازه بافر الزامه نباید به اندازه وب پیجتون باشه...مثلا بافر رو خودم 1024 تنظیم کردم...صفحات بزرگتر رو هم لود میکرد...
    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

    www.intelart.ir


    ساخت کنترلر دما PID فازي با AVR [آموزشی]

    دیدگاه


      #3
      پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

      ممنون از پاسختون
      خوب نهایتاً که روی sd کارت ذخیره می کنم محتوی صفحه رو مشکلی با دخیره کردن ندارم این بافر بر طبق TCP تعریف نشده مگه؟ اگه این بافر هر سایزی بخواد باشه خوب مشکل رم پیدا می کنم خیلی رم بالایی در دسترس ندارم شما کل صفحه رو یک دفعه ارسال می کردید یا در چند پارت؟
      از چه کتابخونه ای استفاده کردید؟
      میشه کمی بیشتر توضیح بدید؟
      ممنون

      دیدگاه


        #4
        پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

        کتابخونه ای که من استفاده کردم با مال شما تفاوت داره...حداقل اسمشون که تفاوت داره...حدس میزنم داخلش هم فرق داشته باشه
        من از یه متد استفاده کردم...وب پیج رو یه جای دیگه به صورت یه رشته ذخیره کردم...بعدش با اون متد ارسال رشته رو ارسال کردم..اینکه چجوری ارسال کنه و چقد از بافر مصرف کنه به عهده کتابخونه و آیسی هستش...ما کاری به اونش نداریم...من با مگا 32 راه انداختمش و بافر رو 1024 گرفتم..شما میتونید کمترش کنید...پیشنهادم اینه اگه کارهای دیگه هم قراره با میکرو انجام بدید که اونا هم رم لازم دارن بهتره یه میکرو با رم 2کیلو انتخاب کنید...
        اگه مشکلی بود بگید کتابخونه خودمو بزارم اینجا
        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

        www.intelart.ir


        ساخت کنترلر دما PID فازي با AVR [آموزشی]

        دیدگاه


          #5
          پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

          خوب من همین الان با atmega128 کار میکنم و 3 کیلو رم مصرف شده همینطوری
          توی این کتابخونه یه بافر به صورت global تعریف شده و وقتی می خوایم شروع کنیم به ارسال ابتدا اون بافر پر میشه و بعد با یه تابع ارسال میشه مثل این:

          کد:
          fill_tcp_data_p(buf,0,"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n");
          plen=fill_tcp_data_p(buf,plen,"<a href=/h>[Home]</a> <a href=/t>[Temperature]</a> <a href=/u>[Humidity]</a> <a href=/p>[Pressure]</a> <a href=/v>[vds]</a> <a href=/i>[I/O]</a> <a href=/c>[Confirm]</a>");
          www_server_reply(buf,plen); // send web page data
          اگه امکان داره روش ارسالتون و همچنین کتابخونه رو بزارید اینجا

          خیلی ممنون

          دیدگاه


            #6
            پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

            ....اوکی..پیداش میکنم میذارم واستون...
            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

            www.intelart.ir


            ساخت کنترلر دما PID فازي با AVR [آموزشی]

            دیدگاه


              #7
              پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

              بفرما...:

              http://uplod.ir/ki04113ruvht/ethernet.h.htm
              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

              www.intelart.ir


              ساخت کنترلر دما PID فازي با AVR [آموزشی]

              دیدگاه


                #8
                پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                ممنون بابت کتابخونه
                برای اینکه نحوه عملکردش و استفاده از توابع رو بفهمم امکانش هست یه مثال خیلی ساده از وب سرور معرفی کنی یا اگه سایتی هست که مثال داره بگی برم پیدا کنم
                خوبی کتابخونه tux این بود که مثال داشت سریع جواب داد

                بازم تشکر

                دیدگاه


                  #9
                  پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                  خواهش میکنم
                  خب مگه با وب سرور کار نکردین؟
                  یه روتین تعریف کرده داخلش که شما باید اونو داخل تابع مین پروژه تون قرار بدین و کد هایی که واسه پروژه قبلیتون استفاده کردید رو توی این یکی بزارید...کاری نداره که...فک کنم همون اولش هم نوشته High level functions ...شما فقط با همونا سر و کار دارید...
                  تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                  www.intelart.ir


                  ساخت کنترلر دما PID فازي با AVR [آموزشی]

                  دیدگاه


                    #10
                    پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                    خوب راه انداختم! الان یه کد کوچیک نوشتم واسه تست فعلاً از GET و یا POST استفاده نکردم...
                    فقط یک منو درست کردم برای اینکه حجم کد کم بشه و سرعت اجرا بالا بره از CSS استفاده کردم
                    CSS کار نکرد اومدم از کلاس خود HTML استفاده کردم شد اما فهمیدم یه مشکل دیگه داره تعداد خط های برنامه که زیاد شد وقتی request میاد از طرف browser دیگه time out و بعدش unreachable میده. یعنی تعداد خط ها که کمه مشکلی نیست از یه حدی به بعد مشکل ایجاد میشه فکر کنم مشکل همون حافظه است. چون وقتی به جای 1024 تبدیل کردم به 2048 دیگه time out نمی ده اما صفحه درست لود نمیشه و درست اجرا نمیشه. من باید همون 1024 بزارم اما مشکل محدودیت تعداد خط رو باید چیکار کنم
                    کذ اول اجرا میشه اما کد دوم مشکل داره


                    کد:
                    <!DOCTYPE html>
                    <html>
                    <head>
                    <style>
                    div.menuStyle{
                    	 height: 40px; border-bottom-width:0px; text-align:center; background-color:aqua; text-align:center; vertical-align:bottom; 
                    }
                    </style>
                    </head>
                    	<body>		
                    	<table style="width: 100%">
                    		<tr>
                    			<td><div class="menuStyle"><a href=/h>Home</a></div></td>
                    			<td><div class="menuStyle"><a href=/t>Temperature</a></div></td>
                    			<td><div class="menuStyle"><a href=/u>Humidity</a></div></td>
                    			<td><div class="menuStyle"><a href=/p>Pressure</a></div></td>
                    			<td><div class="menuStyle"><a href=/v>vds</a></div></td>
                    			<td><div class="menuStyle"><a href=/i>I/O</a></div></td>
                    			<td><div class="menuStyle"><a href=/c>Confirm</a></div></td>
                    		</tr>
                    		<tr>
                    			<td colspan="7">
                    				<div style="height:500px;"></div>
                    			</td>
                    		</tr>
                    		<tr>
                    			<td colspan="7"><hr></td>
                    		</tr>
                    		<tr>
                    			<td colspan="7" style="background-color:white">BFG Co.</td>
                    		</tr>
                    	</table>
                    				
                    	</body>
                    </html>
                    --------------------------------------------

                    کد:
                    <!DOCTYPE html>
                    <html>
                    <head>
                    <style>
                    div.menuStyle{
                    	 height: 40px; border-bottom-width:0px; text-align:center; background-color:aqua; text-align:center; vertical-align:bottom; 
                    }
                    </style>
                    </head>
                    	<body>		
                    	<table style="width: 100%">
                    		<tr>
                    			<td><div class="menuStyle"><a href=/h>Home</a></div></td>
                    			<td><div class="menuStyle"><a href=/t>Temperature</a></div></td>
                    			<td><div class="menuStyle"><a href=/u>Humidity</a></div></td>
                    			<td><div class="menuStyle"><a href=/p>Pressure</a></div></td>
                    			<td><div class="menuStyle"><a href=/v>vds</a></div></td>
                    			<td><div class="menuStyle"><a href=/i>I/O</a></div></td>
                    			<td><div class="menuStyle"><a href=/c>Confirm</a></div></td>
                    		</tr>
                    		<tr>
                    			<td><div class="menuStyle"><a href=/h>Home</a></div></td>
                    			<td><div class="menuStyle"><a href=/t>Temperature</a></div></td>
                    			<td><div class="menuStyle"><a href=/u>Humidity</a></div></td>
                    			<td><div class="menuStyle"><a href=/p>Pressure</a></div></td>
                    			<td><div class="menuStyle"><a href=/v>vds</a></div></td>
                    			<td><div class="menuStyle"><a href=/i>I/O</a></div></td>
                    			<td><div class="menuStyle"><a href=/c>Confirm</a></div></td>
                    
                    		</tr>
                    		<tr>
                    			<td colspan="7">
                    				<div style="height:500px;"></div>
                    			</td>
                    		</tr>
                    		<tr>
                    			<td colspan="7"><hr></td>
                    		</tr>
                    		<tr>
                    			<td colspan="7" style="background-color:white">BFG Co.</td>
                    		</tr>
                    	</table>
                    				
                    	</body>
                    </html>

                    دیدگاه


                      #11
                      پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                      یعنی کدتون رو به همین شکل مینویسید و به تابع میدید؟؟؟
                      هر جا میخاید بره خط بعد از n\ استفاده کنید.
                      هرجا قراره از کوتیشن مارک استفاده کنید باید به جاش "\ بزارید
                      الان من همچین چیزی ندیدم تو کدتون....من خودم تا این کارو نکردم درست نشد...اولش حتی چند خط کد ساده هم نمیفرستاد...

                      مثلا:
                      این خط باید اصلاح بشه :
                      [code=c]<td><div class="menuStyle"><a href=/h>Home</a></div></td>[/code]

                      به این شکل در بیاد :


                      [code=c]<td><div class= \"menuStyle\"><a href=/h>Home</a></div></td> \n[/code]
                      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                      www.intelart.ir


                      ساخت کنترلر دما PID فازي با AVR [آموزشی]

                      دیدگاه


                        #12
                        پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                        من برای اینکه قابل خوندن بشه خود HTML رو دادم میدونم که برای " باید "\ گذاشت البته n\ رو نه نمی زنم توی یه خط همه رو می فرستم فکر کنم یه بار n\ رو هم گذاشتم تفاوتی نکرد یعنی شما میگید مشکل حافظه نیست؟
                        یه نکته دیگه وقتی 1024 بایت تعریف شده بافر تا زمانی که حجم صفحه زیر این عدد مقدار رم مصرفی ماکزیمم همینه اما وقتی بیشتر شه خوب مصرف رم میره بالا چون توی کتابخونه ای که دیدم متغییر رو global تعریف کرده (که به شدت مخالفم) از نظر مصرف رم بهینه نیست و وابسته به سایز صفحه میشه شما این مشکل رو چطوری حل کردید؟
                        من توی برنامه نویسی های خودم داینامیک از رم استفاده می کنم به طور مثال یه برنامه دارم بیش از 10000 خط روی xmega است که وظایف پیچیده ای رو انجام میده و از تمامی امکاناتش هم تقریباً استفاده کردم وکلی هم انتقال اطلاعات توی حافظه دارم اما فقط با 4 کیلو رم.
                        شما چند پست قبل گفتید که حجم صفحه مهم نیست و توایع TCP مدیریت میکنند اینو خوب صفحه شما چقدر بوده و دوم اینکه بالاخره رم که مصرف میشه اونو چیکار کردید؟
                        چیزی که من فهمیدم اینه هم این کتابخونه و هم TUXGRAPHICS فقط یک پکیت می فرستند برای یه صفحه بزرگ باید چندین بار فرستاد اطلاعات رو منطقی اش اینه که رم بهینه مصرف شه. شما تجربه اش رو داشتید؟ مثل اینکه uIPاین قابلیت رو داره اما کتابخونه ای که من ازش دیدم و حتی راه هم انداختم توسط یک نفر برای enc28j60 و AVR پورت شده بود که خیلی روش کار نشده....
                        چیکار باید بکنم به نظر شما ارسال چند تکته ای صفحه رو شما ایده ای دارید براش؟
                        ممنون

                        دیدگاه


                          #13
                          پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                          ببخشید من یه سوال دارم
                          امکانش هست وقتی enc به مودم وصل میکنید بشه مستقیم آدرس سایت بزنیم و به سایت وصل بشیم
                          توی حالت عادی باید آی پی ولید بخریم و آدرس آی پی بدیم ولی من میخام مستقیم آدرس سایت بزنم وصل بشم بهش

                          دیدگاه


                            #14
                            پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                            نوشته اصلی توسط meysam_b
                            من برای اینکه قابل خوندن بشه خود HTML رو دادم میدونم که برای " باید "\ گذاشت البته n\ رو نه نمی زنم توی یه خط همه رو می فرستم فکر کنم یه بار n\ رو هم گذاشتم تفاوتی نکرد یعنی شما میگید مشکل حافظه نیست؟
                            یه نکته دیگه وقتی 1024 بایت تعریف شده بافر تا زمانی که حجم صفحه زیر این عدد مقدار رم مصرفی ماکزیمم همینه اما وقتی بیشتر شه خوب مصرف رم میره بالا چون توی کتابخونه ای که دیدم متغییر رو global تعریف کرده (که به شدت مخالفم) از نظر مصرف رم بهینه نیست و وابسته به سایز صفحه میشه شما این مشکل رو چطوری حل کردید؟
                            من توی برنامه نویسی های خودم داینامیک از رم استفاده می کنم به طور مثال یه برنامه دارم بیش از 10000 خط روی xmega است که وظایف پیچیده ای رو انجام میده و از تمامی امکاناتش هم تقریباً استفاده کردم وکلی هم انتقال اطلاعات توی حافظه دارم اما فقط با 4 کیلو رم.
                            شما چند پست قبل گفتید که حجم صفحه مهم نیست و توایع TCP مدیریت میکنند اینو خوب صفحه شما چقدر بوده و دوم اینکه بالاخره رم که مصرف میشه اونو چیکار کردید؟
                            چیزی که من فهمیدم اینه هم این کتابخونه و هم TUXGRAPHICS فقط یک پکیت می فرستند برای یه صفحه بزرگ باید چندین بار فرستاد اطلاعات رو منطقی اش اینه که رم بهینه مصرف شه. شما تجربه اش رو داشتید؟ مثل اینکه uIPاین قابلیت رو داره اما کتابخونه ای که من ازش دیدم و حتی راه هم انداختم توسط یک نفر برای enc28j60 و AVR پورت شده بود که خیلی روش کار نشده....
                            چیکار باید بکنم به نظر شما ارسال چند تکته ای صفحه رو شما ایده ای دارید براش؟
                            ممنون
                            سلام..خوبید؟
                            واسه این که چند تکه ای ارسال بشه فکر کنم باید از متد POST استفاده بشه...منم طرز کار این متد رو نمیدونم چند بار هم تو انجمن پرسیدم کسی جواب نداد...
                            با GET اگه قرار باشه بفرستید فکر نکنم بشه
                            [code=c]unsigned int ethernet_tcp(unsigned char* request, unsigned char* response)[/code]
                            اینو وقتی اجرا کنید همه چی رو از نو میفرسته...پس امکان ارسال چند باره وجود نداره...
                            در مورد POST چیزی میدونید؟
                            تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                            www.intelart.ir


                            ساخت کنترلر دما PID فازي با AVR [آموزشی]

                            دیدگاه


                              #15
                              پاسخ : ارسال صفحات بزرگ HTML به کمک وب سرور و ENC28j60

                              نوشته اصلی توسط S S
                              ببخشید من یه سوال دارم
                              امکانش هست وقتی enc به مودم وصل میکنید بشه مستقیم آدرس سایت بزنیم و به سایت وصل بشیم
                              توی حالت عادی باید آی پی ولید بخریم و آدرس آی پی بدیم ولی من میخام مستقیم آدرس سایت بزنم وصل بشم بهش
                              یه جا بحثش شده بود و طرف گفته بود که نمیشه همچین کاری کرد و در هر صورت باید هزینه آیپی رو بدین...البته این نقل قول بود...
                              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                              www.intelart.ir


                              ساخت کنترلر دما PID فازي با AVR [آموزشی]

                              دیدگاه

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