اطلاعیه

Collapse
No announcement yet.

ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

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

    ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

    سلام به دوستان.
    من یک سوال پایه ای دارم و البته خیلی مهم.
    در هر ارسال و دریافت با LPC1768 ما فقط یک کاراکتر که برابر یک بایت یا برابر 8 بیت هست رو میآ‌فرستیم. تا اینجا درسته؟؟؟
    میتونه علتش بخاطر استفاده از توابع putchar و getchar باشه؟؟؟یعنی همون طور که از اسمشون پیداست فقط یک character؟
    اما توی دستور ("printf("hello world داره چه اتفاقی میفته؟؟؟؟؟آیا همه را با هم میآ‌فرسته؟یا داره دونه دونه حروف به حرف میآ‌فرسته؟یعنی اول در بایت اول h در بایت دومe و همینطور تا آخر در بایت آخر d رو میفرسته؟یعنی این جمله بالا را بادر نظر گرفتنspace با 11 بایت ارسال میآ‌فرسته؟
    اگر از دوستان کسی میآ‌تونه کمک کنه سپاسگزار خواهم بود.

    #2
    پاسخ : ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

    ظاهرا از دوستان کسی نخواست جواب مارو بده.
    من متوجه شدم وقتی میگن 16 بایت رجیستر ارسال و دریافت داره یعنی همین. اما نمدیدونم چرا وقتی براش بیشتر از 16 کاراکتر میفرستم با دستور UART_ReceiveByte فقط 16 بایت رو میآ‌تونه دریافت کنه .اما با دستور printf بیشتر از 16 بایت یا 16 کاراکتر رو در هر ارسال میآ‌تونم بفرستم.
    چرا؟؟؟؟؟؟
    لطفا راهنمایی بفرمایید.

    دیدگاه


      #3
      پاسخ : ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

      نوشته اصلی توسط 872622101
      ظاهرا از دوستان کسی نخواست جواب مارو بده.
      من متوجه شدم وقتی میگن 16 بایت رجیستر ارسال و دریافت داره یعنی همین. اما نمدیدونم چرا وقتی براش بیشتر از 16 کاراکتر میفرستم با دستور UART_ReceiveByte فقط 16 بایت رو میآ‌تونه دریافت کنه .اما با دستور printf بیشتر از 16 بایت یا 16 کاراکتر رو در هر ارسال میآ‌تونم بفرستم.
      چرا؟؟؟؟؟؟
      لطفا راهنمایی بفرمایید.
      سلام

      اگر یک نگاه به پروتکل UART بندازی:
      http://en.wikipedia.org/wiki/UART

      میبینی که استاندار این پروتکل این طوری تعریف شده که توی هر ارسال بین ۵ تا ۹ بیت دیتا بیشتر نمیشه فرستاد. به طور معمول 8 بیت دیتا در هر فریم ارسال میشه. اگر توابع getchar و printf رو نگاه کنی میبینی که این توابع یک رشته دریافت میکنند و در هر ارسال/دریافت یک کاراکتر از این رشته رو ارسال/دریافت میکنن.

      دیدگاه


        #4
        پاسخ : ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

        مرسی از جوابتون.
        داره بعضی از لحظات به پورت سریال میکرو یک سری اطلاعات میاد.اما من این اطلاعاتو نمیآ‌تونم کامل دریافت کنم. چون طول این اطلاعات زیاده ولی من برای استفاده از این اطلاعات مجبورم که بعد از هر دریافت اونو توی یک آرایه هم ذخیره کنم به صورت زیر و بعد روش تحلیل کنم
        for(i=0;i<100;i++){
        b=getchar();
        a[i]=b;
        }
        اما وقتی اطلاعاتو میآ‌خوام که نمایش بده یا چیزی توی آرایه نیست یا فقط یک بخش کوچکی از اون اطلاعاتو نشون میده.
        نمیدونم آیا روش دیگه ای یا دستور دیگه ای وجود داره تا اطلاعاتو دریافت کنم یا نه؟
        بعضی اوقات هم که ازش میخوام بعد از دریافت یک led برام روشن کنه خیلی خیلی طول میکشه تا اون led روشن بشه.

        دیدگاه


          #5
          پاسخ : ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

          نوشته اصلی توسط 872622101
          مرسی از جوابتون.
          داره بعضی از لحظات به پورت سریال میکرو یک سری اطلاعات میاد.اما من این اطلاعاتو نمیآ‌تونم کامل دریافت کنم. چون طول این اطلاعات زیاده ولی من برای استفاده از این اطلاعات مجبورم که بعد از هر دریافت اونو توی یک آرایه هم ذخیره کنم به صورت زیر و بعد روش تحلیل کنم
          for(i=0;i<100;i++){
          b=getchar();
          a[i]=b;
          }
          اما وقتی اطلاعاتو میآ‌خوام که نمایش بده یا چیزی توی آرایه نیست یا فقط یک بخش کوچکی از اون اطلاعاتو نشون میده.
          نمیدونم آیا روش دیگه ای یا دستور دیگه ای وجود داره تا اطلاعاتو دریافت کنم یا نه؟
          بعضی اوقات هم که ازش میخوام بعد از دریافت یک led برام روشن کنه خیلی خیلی طول میکشه تا اون led روشن بشه.

          یعنی چی نمیتونی دریافت کنی؟؟؟ خوب کاراکتر کارکتر دیتا میاد. شما باید توی آرایه ذخیرش کنی. مثل همین کاری که بالا کردی احتمالا a یا b رو درست تعریف نکردی

          دیدگاه


            #6
            پاسخ : ارسال و دریافت بیش از یک کاراکتر در هر ارسال و دریافت

            مساله اینجاست که باید وقفه رو فعال میآ‌کردم.
            ضمنا من فکر میآ‌کردم شاید یک دستوری وجود داشته باشه که بتونه کل رشته رو دریافت کنه. اما وقتی برنامه ها رو دیدم متوجه شدم که اونا هم از دریافت کاراکتر به کاراکتر استفاده میآ‌کنه.

            دیدگاه

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