اطلاعیه

Collapse
No announcement yet.

CodeVision, ارسال و دریافت رشته

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

    CodeVision, ارسال و دریافت رشته

    با سلام خدمت دوستان

    من توی یه مدار یه ارتباط usart دارم و فقط از پایه های rxd و txd استفاده می کنم. به دلیل اینکه معلوم نیست اطلاعات کی میاد، از وقفه خواندن هم استفاده می کنم.
    این از کلیات مطلب، حالا مشکل کجاست؟ مشکل من با نحوه کار با رشته هاست (متغیرها و توابع ). اطلاعات تو چند خط می رسه و دارای کارامترهای مختلفه که بعدا باید اعداد و ارقام مورد نظر از داخل اونها جدا بشه. وقتی وقفه عملیات خواندن رو انجام میده داده هارو تو چه نوع متغیری و چجوری باید ذخیره کنم؟
    یه سوال دیگه هم داشتم و اون اینکه \r چه کاراکتری هستش و کجا به کار میره؟
    با تشکر از همه دوستان.

    #2
    پاسخ : CodeVision, ارسال و دریافت رشته

    دو کاراکتر خاص در جدول کدهای اسکی داریم با شماره های 0x0d و 0x0a که اولی رو بعنوان "خط جدید" , و دومی رو بعنوان "سر خط" میشناسیم. اکثر نرم افزارهای ادیتور مثل notepad یا نرم افزارهای مانیتور مثل terminal در کدویژن وقتی به کاراکتر اولی میرسند خودشون کاراکتر دومی رو هم اضافه میکنند (و به این ترتیب اطلاعات بعدی رو در خط بعدی نشون میدند) البته میتونی در کدویژن این قابلیت رو کنسل کنی. شما در زبان سی برای نوشتن یه کاراکتر یا از خود کاراکتر استفاده میکنی مثلا 'G' یا از کد اسکی اون0x47 . بعضی از کدهای اسکی معدلی کاراکتری روی صفحه کلید ندارند و شما مجبور با استفاده از کد اسکی اون هستین مثل 0x0a که برای این کدها معادل کاراکتری در نظر گرفته شده با یه بک اسلش قبلش که میشه 'r\' و واسه اونیکی هم n\ معروف هست.
    و حالا مشکلت:
    شما تو روال وقفه فقط کاراکتر ها رو بخون و تو آرایه کاراکتری قرار بده و تو حلقه اصلی برنامه( اگر کاراکتری در آرایه وجود داشت ) با چند تا if else اطلاعات لازم رو از رشته بکش بیرون و تبدیل به عدد کن و ازشون استفاده کن

    دیدگاه


      #3
      پاسخ : CodeVision, ارسال و دریافت رشته

      آقای مجتبی ممنون از توضیحات خوبتون. :agree:
      یه سوال که الان برام پیش اومد و فکر میکنم مشکل از اونجا باشه اینکه آیا وقتی روال خواندن به کاراکترهای خاص مثل 0x0a, 0x0d, 0x1a میرسه، آیا با اونها هم مثل یه کاراکتر عادی برخورد میکنه و اونها رو در کاراکتری که ما گفتیم ذخیره میکنه؟ یا اینکه مثلا بعنوان کاراکتر پایان رشته تلقی میکنه؟

      دیدگاه


        #4
        پاسخ : CodeVision, ارسال و دریافت رشته

        در رشته ها انتهای رشته با کارکتر null یا همون 0 مشخص میشه
        فقط یادت باشه بعضی از گیرنده های پورت سریال مثل همین کدویژن وقتی یه کاراکتر 0x0D ببینند خودشون یه دونه 0x0A بعدش اضافه میکنند. که در تنظیماتشون میشه این قابلیت رو غیر فعال کرد

        دیدگاه

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