اطلاعیه

Collapse
No announcement yet.

دریافت رشته از usart

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

    #16
    پاسخ : دریافت رشته از usart

    نوشته اصلی توسط ERMIA.E نمایش پست ها
    متوجه شدم خیلی ممنون
    فقط یه سوال خب این یه کد اسون بود اگه یه کد طولانی باشه من باید هر سری این کار رو بکنم چون در اون صورت کدم خیلی طولانی و سخت میشه
    راه اسون تری نداره؟
    راه آسون تر اینه که یا انتهای دستور ارسالی یک کاراکتر مشخصی باشه و از طریق اون بشه فهمید رشته تموم شده و عمل شناسایی دستور رو انجام داد، یا اینکه ابتدای رشته چیزی معین کنه رشته چقدر طول داره.
    برای مقایسه رشته ها هم توابع استانداردی وجود دارن مثل strcmp که میتونید ازشون کمک بگیرید.

    دیدگاه


      #17
      پاسخ : دریافت رشته از usart

      نوشته اصلی توسط hossein.m98 نمایش پست ها
      راه آسون تر اینه که یا انتهای دستور ارسالی یک کاراکتر مشخصی باشه و از طریق اون بشه فهمید رشته تموم شده و عمل شناسایی دستور رو انجام داد، یا اینکه ابتدای رشته چیزی معین کنه رشته چقدر طول داره.
      برای مقایسه رشته ها هم توابع استانداردی وجود دارن مثل strcmp که میتونید ازشون کمک بگیرید.

      اها متوجه شدم خیلی ممنون

      دیدگاه


        #18
        پاسخ : دریافت رشته از usart

        نوشته اصلی توسط ERMIA.E نمایش پست ها
        اها متوجه شدم خیلی ممنون
        من تو خصوصی کلی نوشته بودم که به لطف خطا های سایت پاک شد
        ولی ....
        همونطور که دوستان گفتن منم این کار رو تو پروژه هایی که قبلا داشتم با استفاده از وقفه دریافت سریال انجام دادم منتهی با مقداری تفاوت
        اول اینکه لازمه برای راحتی کارتون با کتابخانه string.h آشنا بشید که خیلی بدرد بخوره اینجا
        دوم اینکه ممکنه دستوراتتون زیاد باشه یا طولانی یا هر چیزی
        شما بیا ابتدا ی دستورت یه کاراکتر خاص مثل @ و انتهاش $ بذار
        اینجور هرقت @ دریافت کردی یعنی دستور داره میاد و هر وقت $ دریافت کردی یعنی دستور تموم شده و شما باید بری سراغ تحلیل دستور که با توابع string مثله آب خوردن انجام میشه
        اما دوست عزیز من اطلاع ندارم چرا شما AVR و زیان C رو انتخاب کردی؟ نمیدونم محدودیتی داری یا نه؟
        اما توصیه من به شما اینه که از آردوینو استفاده کنی و این کار جز ساده ترین کار ها با آردوینو هست
        نمیخواد هم که یه برد آردوینو بخرید
        یه میکرو آردوینو ساپورت
        کریستال 16 مگاهرتزی و خازن هاش
        مبدل usb to ttl که خیلی جاهای دیگه هم میتونه استفاده بشه
        و یه پروگرامر ساده فقط برای بوت لودر
        از اون به بعد شما به راحتی خیلی از کار ها رو انجام میدید و سختی کدویژن رو ندارید

        دیدگاه


          #19
          پاسخ : پاسخ : دریافت رشته از usart

          سلام خدمت دوستان بنده می خوام از پورت سربال بصورت رشته دریافت کنم و هر کاری کردم نشده خواهشمندم کاملا توضیح بدید چون اصلا در این موضوع سررشته ندارم.باتشکر

          دیدگاه


            #20
            پاسخ : دریافت رشته از usart

            نوشته اصلی توسط msm74 نمایش پست ها
            سلام خدمت دوستان بنده می خوام از پورت سربال بصورت رشته دریافت کنم و هر کاری کردم نشده خواهشمندم کاملا توضیح بدید چون اصلا در این موضوع سررشته ندارم.باتشکر
            شما بفرمایید که با چه کامپایلری کار می کنید؟
            از چه مازول یا دیوایسی میخواهید سریال رو بخونید؟
            تا اینارو جواب ندید نمیشه کاری کرد.
            eshop-hodhod.ir

            دیدگاه


              #21
              پاسخ : دریافت رشته از usart

              با کامپایلر کدویژن ، میکرو atmega16 و ماژول usb to ttl (pl2303)

              دلیل: ادغام دو پست برای جلوگیری از اسپم

              نوشته اصلی توسط Namvar14 نمایش پست ها
              شما بفرمایید که با چه کامپایلری کار می کنید؟
              از چه مازول یا دیوایسی میخواهید سریال رو بخونید؟
              تا اینارو جواب ندید نمیشه کاری کرد.
              با کامپایلر کدویژن ، میکرو atmega16 و ماژول usb to ttl (pl2303)

              دیدگاه


                #22
                پاسخ : دریافت رشته از usart

                در حافظه سریال در کدویژن با دو دستور میشه با ماژول ارتباط دو طرفه برقرار کرد.
                برای دریافت اطلاعات از دستور getchare() استفاده میشود.
                برای ارسال اطلاعات به ماژول از دستور puفchare()استفاده می شود.
                ---------------------
                دیاگرام کار اینجوریه که در ارتباط سریال اطلاعات فقط و فقط با کد های اسکی جابجا میشه.یعنی یه عددی بین 0تا 127 که اصولا از نوع charمی باشد.بین دو دیوایس فرستنده و گیرنده جابجا میشه.
                برای کدویژن یه حلقه wileوجود داره.داخل حلققه b=getchar می نویسیم.و در زیرش هم یه دستور sitch-caseمیذاریم تا مقدار دریافت شده از حافظه سریال را که یه عددی بین 0تا 127می باشد.را در متفیر bکه ازنوع کارکتری هست قرار میدهیم.
                و براساس فرمت داده دریافتی میاییم رشته خودمونو می سازیم.
                دقت کنید که شما وقتی بخواهید یک رشته دریافت کنید.اول اینکه مقدار دریافتی همانطور که عرض شد یه کداسکی هست.که معمولا تمام حروف انگلیسی و تمام کارکتر ها شامل (اینتر و دابل کوتیشن و ...)و کارکترهای کوچیک و ...یه عدداسکی بین 1تا 126 است.حالا شما هرمقدار که دریافت کردید و در متغیر bریختید باید متغیرbرا تبدیل به رشته کنید.برای اینکار من دستوری نمی شناسم.ولی میتونید یه سویچ کیس بذارید و تمام حروف را بر اساس مقدار اسکی bتبدیل کنید.
                دوم اینکه وقتی رشتته میاد اینجوری نیست که همه رشته یه دفعه ای در سریال میکرو قرار بگیره.ابتدا کارکتر اول میاد.تا زمانی که شما در میکرو این کارکترو دریافت نکنی دومی در بافر سریال قرار نمی گیره.به عبارتی شما باید همیشه یه دونه کارکتر و دریافت میکنید.و خودتون باید زحمت اتصال این رشته ها به یکدیگر را بکشید.
                --------------------
                قسمت سخت افزاری بهم به این صورته که rxماژول به txمیکرو وtxماژول به rxمیکرو
                eshop-hodhod.ir

                دیدگاه

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