ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





  1. #1
    تاریخ عضویت
    2022/04/16
    17
    5

    ارسال آرایه 1600 بایتی توسط UDP

    سلام دوستان
    کسی تجربه کار با پروتکل اترنت و مخصوصا udp برای ارسال یک آرایه 1600 بایتی از میکروکنترلر به سرور(رایانه) را دارد؟
    • تبلیغات
      .

  2. #2
    تاریخ عضویت
    2017/06/13
    1,393
    874

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط REZZA_DEHGHAN98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام دوستان
    کسی تجربه کار با پروتکل اترنت و مخصوصا udp برای ارسال یک آرایه 1600 بایتی از میکروکنترلر به سرور(رایانه) را دارد؟
    سلام
    مشکلتون باهاش چیه؟
  3. #3
    تاریخ عضویت
    2022/04/16
    17
    5

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام
    مشکلتون باهاش چیه؟
    سلام من به تازگی شروع کردم برای کار بر روی این پروژه ....
    من توانسته ام به میکرو کنترلر از طریق udp داده ارسال کنم و یک led روی میکرو را روشن کنم اما در دریافت داده از میکروکنترلر به مشکل خورده ام.
    نمونه کد خاصی یا آموزش خاصی مد نظرتون نیست؟
  4. #4
    تاریخ عضویت
    2017/06/13
    1,393
    874

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط REZZA_DEHGHAN98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام من به تازگی شروع کردم برای کار بر روی این پروژه ....
    من توانسته ام به میکرو کنترلر از طریق udp داده ارسال کنم و یک led روی میکرو را روشن کنم اما در دریافت داده از میکروکنترلر به مشکل خورده ام.
    نمونه کد خاصی یا آموزش خاصی مد نظرتون نیست؟
    ببینید گام اول برای جواب گرفتن از انجمنی مثل اینجا اینه که دقیقا مشکلتون رو تشریح کنید که پاسخ دهنده بفهمه مشکل کجاس. شما نه گفتید میکروکنترلرتون چیه، نه گفتید از چه قطعات جانبی یا استک شبکه استفاده کردید و نه گفتید با کدوم ابزار بیلد کار میکنید. نتیجتا نه میشه گفت مشکل کجا میتونه باشه، نه میشه راهنمایی کرد. فقط میتونم بگم یه جای کارتون حتما ایراد داره!!!
    اگر اولین بارتون هست که با IP دارید کار میکنید، بهتره قبلش در مورد معماری اینترنت، لایه های اون و این که کدوم پروتکل ها در کدوم لایه ها قرار دارن و کارکردشون چیه (نه لزوما به صورت دقیق)، IP Address چیه و پورت چیه مطالعه کنید، بعد دست به کد بشید. احتمالا سعی دارید یک ارتباط دو طرفه بین کامپیوتر و میکروکنترلر برقرار کنید؛ برای این کار میتونید از نرم*افزار

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    استفاده کنید برای تست هاتون و ارسال و دریفات پکت های TCP و UDP. البته این نرم*افزار مشکلاتی توی بافر کردن داده های بزرگ داره ولی کار راه اندازه. برای مانیتور کردن شبکه هم از نرم*افزار Wireshark میتونید استفاده کنید که ببینید داده هایی که میکروکنترلر میفرسته اصلا به کامپیوتر شما میرسه و به پورت مورد نظر میره یا نه؛ البته کار کردن با Wireshark خودش تجربه احتیاج داره ولی اونقدرا هم نباید گنگ باشه.
  5. #5
    تاریخ عضویت
    2022/04/16
    17
    5

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ببینید گام اول برای جواب گرفتن از انجمنی مثل اینجا اینه که دقیقا مشکلتون رو تشریح کنید که پاسخ دهنده بفهمه مشکل کجاس. شما نه گفتید میکروکنترلرتون چیه، نه گفتید از چه قطعات جانبی یا استک شبکه استفاده کردید و نه گفتید با کدوم ابزار بیلد کار میکنید. نتیجتا نه میشه گفت مشکل کجا میتونه باشه، نه میشه راهنمایی کرد. فقط میتونم بگم یه جای کارتون حتما ایراد داره!!!
    اگر اولین بارتون هست که با IP دارید کار میکنید، بهتره قبلش در مورد معماری اینترنت، لایه های اون و این که کدوم پروتکل ها در کدوم لایه ها قرار دارن و کارکردشون چیه (نه لزوما به صورت دقیق)، IP Address چیه و پورت چیه مطالعه کنید، بعد دست به کد بشید. احتمالا سعی دارید یک ارتباط دو طرفه بین کامپیوتر و میکروکنترلر برقرار کنید؛ برای این کار میتونید از نرم*افزار

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    استفاده کنید برای تست هاتون و ارسال و دریفات پکت های TCP و UDP. البته این نرم*افزار مشکلاتی توی بافر کردن داده های بزرگ داره ولی کار راه اندازه. برای مانیتور کردن شبکه هم از نرم*افزار Wireshark میتونید استفاده کنید که ببینید داده هایی که میکروکنترلر میفرسته اصلا به کامپیوتر شما میرسه و به پورت مورد نظر میره یا نه؛ البته کار کردن با Wireshark خودش تجربه احتیاج داره ولی اونقدرا هم نباید گنگ باشه.

    سلام وقتتون بخیر .....حق با شماست و این به خاطر کم تجربگی من در استفاده از این طور انجمن هاست.
    من از میکروکنترلر stm32f767 و آیسی lan8720a و ارتباط udp استفاده میکنم .
    تنظیمات کانفیگ نرم افزار cube mx را به درستی انجام داده ام و توانسته ام یک led روی برد را از طریق ارتباط ethernet و با استفاده از نرم افزار هرکولس ,روشن و خاموش کنم.
    من تا 1319 بایت رو به طور صحیح ارسال کردم
    مشکل من در ارسال آرایه بزرگتر هست مثلا 1600 بایتی
    در ادامه دو قسمت از کد که مربوط به send data و while(1) هست آورده ام. اسم آرایه array هست و تمام درایه های آن با کاراکتر 'A' پر شده است.


    void MY_UdpSendData(void)
    {
    struct pbuf *p;

    while(array[i]=='A')
    {
    i++;
    BufferSize++;
    }

    p = pbuf_alloc(PBUF_TRANSPORT, BufferSize, PBUF_RAM);
    pbuf_take(p, array, sizeof(array[0])*BufferSize);
    udp_send(udp_send_pcb, p);
    pbuf_free(p);

    }
    /// در ادامه

    while (1)
    {
    MX_LWIP_Process();
    cntr++;
    if(cntr > 200000)
    {
    cntr=0;
    MY_UdpSendData();

    }


    }
    ویرایش توسط REZZA_DEHGHAN98 : 2022/04/26 در ساعت 11:10
  6. #6
    تاریخ عضویت
    2017/06/13
    1,393
    874

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط REZZA_DEHGHAN98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام وقتتون بخیر .....حق با شماست و این به خاطر کم تجربگی من در استفاده از این طور انجمن هاست.
    من از میکروکنترلر stm32f767 و آیسی lan8720a و ارتباط udp استفاده میکنم .
    تنظیمات کانفیگ نرم افزار cube mx را به درستی انجام داده ام و توانسته ام یک led روی برد را از طریق ارتباط ethernet و با استفاده از نرم افزار هرکولس ,روشن و خاموش کنم.
    من تا 1319 بایت رو به طور صحیح ارسال کردم
    مشکل من در ارسال آرایه بزرگتر هست مثلا 1600 بایتی
    در ادامه دو قسمت از کد که مربوط به send data و while(1) هست آورده ام. اسم آرایه array هست و تمام درایه های آن با کاراکتر 'A' پر شده است.


    void MY_UdpSendData(void)
    {
    struct pbuf *p;

    while(array[i]=='A')
    {
    i++;
    BufferSize++;
    }

    p = pbuf_alloc(PBUF_TRANSPORT, BufferSize, PBUF_RAM);
    pbuf_take(p, array, sizeof(array[0])*BufferSize);
    udp_send(udp_send_pcb, p);
    pbuf_free(p);

    }
    /// در ادامه

    while (1)
    {
    MX_LWIP_Process();
    cntr++;
    if(cntr > 200000)
    {
    cntr=0;
    MY_UdpSendData();

    }


    }
    سلام مجدد
    ببینید این مشکلی که شما دارید و این اعدادی که اعلام کردید خیلی شبیه به کوچک بودن بافرهای لایه پایینی هستش که باعث میشه پکت های بزرگ به پکت های کوچکتری که داخل بافرها جا بشن، تقسیم و بعد ارسال بشن. این موارد عموما با فعال کردن IP fragmentation حل میشن؛ یعنی با استفاده از این قابلیت، پکت های تقسیم شده به طور خودکار توسط استک شبکه شماره گذاری میشن و توی گیرنده، بعد از دریافت به شکل مرتب توسط استک شبکه اسمبل میشن. اگر IP fragmentation فعال نباشه، پکت ها تقسیم میشن، اما به خاطر عدم شماره گذاری مناسب، گیرنده نمیتونه توالی اون ها رو تشخیص بده و در نتیجه نمیتونه سرهمشون کنه.
    توی کانفیگ های پروژه داخل CubeMX بگردید، احتمال داره IP fragmentation رو برای LWIP غیر فعال بوده باشه که باید فعال بشه.
  7. #7
    تاریخ عضویت
    2022/04/16
    17
    5

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام مجدد
    ببینید این مشکلی که شما دارید و این اعدادی که اعلام کردید خیلی شبیه به کوچک بودن بافرهای لایه پایینی هستش که باعث میشه پکت های بزرگ به پکت های کوچکتری که داخل بافرها جا بشن، تقسیم و بعد ارسال بشن. این موارد عموما با فعال کردن IP fragmentation حل میشن؛ یعنی با استفاده از این قابلیت، پکت های تقسیم شده به طور خودکار توسط استک شبکه شماره گذاری میشن و توی گیرنده، بعد از دریافت به شکل مرتب توسط استک شبکه اسمبل میشن. اگر IP fragmentation فعال نباشه، پکت ها تقسیم میشن، اما به خاطر عدم شماره گذاری مناسب، گیرنده نمیتونه توالی اون ها رو تشخیص بده و در نتیجه نمیتونه سرهمشون کنه.
    توی کانفیگ های پروژه داخل CubeMX بگردید، احتمال داره IP fragmentation رو برای LWIP غیر فعال بوده باشه که باید فعال بشه.

    ممنون خیلی تشکر از راهنماییتون
    ببخشید من هرچی کانفیگ های مربوط به lwip و ethernet در نرم افزار CubeMX رو جست و جو کردم چیزی به اسم IP fragmentation ندیدم ...میشه بگید کدام قسمتش هست؟
  8. #8
    تاریخ عضویت
    2017/06/13
    1,393
    874

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط REZZA_DEHGHAN98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ممنون خیلی تشکر از راهنماییتون
    ببخشید من هرچی کانفیگ های مربوط به lwip و ethernet در نرم افزار CubeMX رو جست و جو کردم چیزی به اسم IP fragmentation ندیدم ...میشه بگید کدام قسمتش هست؟
    یک مقداری کانفیگ کردن استک شبکه مشکله. شاید لازم باشه خیلی باهاش ور برید تا به جواب دلخواه برسید.
    برای فعال کردن این آپشن، باید توی تنظیمات LWIP وارد Key Options بشید و تیک Show Advanced Parameters رو بزنید. حالا باید بگردید دنبال دو گزینه IP_FRAG و IP_REASSEMBLY و فعالشون کنید تا IP fragmentation برای ارسال و دریافت فعال بشه. من زیاد با LWIP روی STM32 درگیر نبودم ولی از یکی از همکارها که تجربه بیشتری دارن، در این مورد پرسیدم، گفتن که اگر توی تنظیمات ETH یا LWIP هم فیلد Checksum Computation دیدید روی Software تنظیمش کنید.
    برای اطمینان از صحت عملکرد IP fragmentation هم میتونید از نرم افزار Wireshark استفاده کنید. کافیه کارت شبکه مورد نظر رو مانتیور و IP میکروکنترلر رو فیلتر کنید که تنها پکت های بین میکروکنترلر و کامپیوتر رو نشون بده. اینطوری میتونید صحت ارتباط رو بررسی کنید.
  9. #9
    تاریخ عضویت
    2022/04/16
    17
    5

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    یک مقداری کانفیگ کردن استک شبکه مشکله. شاید لازم باشه خیلی باهاش ور برید تا به جواب دلخواه برسید.
    برای فعال کردن این آپشن، باید توی تنظیمات LWIP وارد Key Options بشید و تیک Show Advanced Parameters رو بزنید. حالا باید بگردید دنبال دو گزینه IP_FRAG و IP_REASSEMBLY و فعالشون کنید تا IP fragmentation برای ارسال و دریافت فعال بشه. من زیاد با LWIP روی STM32 درگیر نبودم ولی از یکی از همکارها که تجربه بیشتری دارن، در این مورد پرسیدم، گفتن که اگر توی تنظیمات ETH یا LWIP هم فیلد Checksum Computation دیدید روی Software تنظیمش کنید.
    برای اطمینان از صحت عملکرد IP fragmentation هم میتونید از نرم افزار Wireshark استفاده کنید. کافیه کارت شبکه مورد نظر رو مانتیور و IP میکروکنترلر رو فیلتر کنید که تنها پکت های بین میکروکنترلر و کامپیوتر رو نشون بده. اینطوری میتونید صحت ارتباط رو بررسی کنید.

    خیلی ممنون
    دستتون درد نکنه
    مشکل از جایی دیگه هست
    IP_FRAG و IP_REASSEMBLY فعال بودن
    ممنون که زحمت کشیدید
  10. #10
    تاریخ عضویت
    2017/06/13
    1,393
    874

    پاسخ : ارسال آرایه 1600 بایتی توسط UDP

    نقل قول نوشته اصلی توسط REZZA_DEHGHAN98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خیلی ممنون
    دستتون درد نکنه
    مشکل از جایی دیگه هست
    IP_FRAG و IP_REASSEMBLY فعال بودن
    ممنون که زحمت کشیدید
    بهترین راه اینه با wireshark پکت ها رو چک کنید.
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. تقسیم کردن یک عدد دو بایتی بر یک عدد یک بایتی
    توسط leader. در انجمن برنامه نویسی و اینترفیس
    پاسخ: 6
    آخرين نوشته: 2022/03/26, 23:46
  2. ارسال آرایه از نوع int با پورت سریال
    توسط saminco در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2014/03/20, 22:05
  3. تــــجهیزات مورد استفاده در یک تابلو برق ر
    توسط nimaaryamehr در انجمن تاسیسات الکتریکی
    پاسخ: 7
    آخرين نوشته: 2013/11/21, 03:48
  4. ارسال آرایه از طریق spi
    توسط isv10 در انجمن میکروکنترلرهای PIC
    پاسخ: 1
    آخرين نوشته: 2012/09/09, 11:49
  5. مشکل با ارسال آرایه 3 بعدی به تابع
    توسط magician در انجمن میکروکنترلرهای AVR
    پاسخ: 10
    آخرين نوشته: 2009/05/30, 14:01

کاربرانی که این تاپیک را مشاهده کرده اند: 0

هیچ عضوی در لیست وجود ندارد.

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •