اطلاعیه

Collapse
No announcement yet.

مشکل با تابع scanf

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

    مشکل با تابع scanf

    با سلام
    من به یک مشکلی برخوردم که حدود 10 روزه من و الاف خودش کرده
    خدا پدر مادر کسی رو که منو کمک کنه بیامرزه

    مشکلم به این شرحه :
    من 2 تا میکرو دارم که از طریق RXD و TXD و یک پین مستر که به INT0 میکرو اسلیو میره با هم ارتباط برقرار می کنند.
    من یک رشته رو به صورت زیر با تابع printf میخوام برای اسلیو ارسال کنم به این شکل :
    (printf("DAC= %d type= 2 freq= %s ampl= %s arg1= 0 arg2= %s arg3= 0 timer= %s ",DAC,data1,data2,data3,data4

    و برنامه خواندن این عبارت رو که جداسازی میشوند و در متغیرهای مربوطه میریزند در وقفه صفر میکرو اسلیو نوشتیم به این صورت :
    ( scanf("%s%d",command,&temp
    signal.type = temp;
    ( scanf("%s%s",command1,buf
    (signal.freq = str2f(buf
    ( scanf("%s%s",command2,buf
    ( signal.ampl = str2f(buf);
    (scanf("%s%d",command3,&temp
    signal.arg1 = temp;
    (scanf("%s%d",command4,&temp
    signal.arg2 = temp;
    (scanf("%s%d",command5,&temp
    signal.arg3 = temp;
    (scanf("%s%d",command6,&temp
    signal.timer = temp;


    برنامه از نظر وقفه مشکلی نداره چون بجای اینا ال ای دی گذاشتم روشن و خاموش شدنشو دیدم با افتادن وقفه. خیالتون راحت.
    80 درصد احساس میکنم اشکال تو خوندن و دریافت داده هاست. چون از نظر ارسالی یه پورت سریال به مستر وصل کردم و داده ها رو به صورت صحیح در کامپیوتر دیدم.
    خواهشا راهنمایی کنید.

    #2
    پاسخ : مشکل با تابع scanf

    سلام دادا
    نیاز نیست اینقدر کارو سخت کنی
    کافی بود داده ها رو با وقفه سریال دریافت کنی. همین.
    استفاده از وقفه خارجی کارو سخت تر میکنه!
    یه سرچ کوچولو توی همین سایت بزنی کلی مطلب پیدا میکنی.
    تشکر لازم نیست!

    دیدگاه


      #3
      پاسخ : مشکل با تابع scanf

      سلام
      مجبورم چون چند کاناله کار میکنم باید اینطور بنویسم فک کنم درسته؟

      دیدگاه


        #4
        پاسخ : مشکل با تابع scanf

        نه دادا.
        نیازی نیست.
        منظورت از چند کاناله چیه؟
        برای دوتا میکرو نیاز به slave و master نیست.
        هر دوتا میکروها می تونن به هم اطلاعات بدن و دریافت کنن.
        توی میکروی فرستنده که کافیه با همین دستور print اطلاعات رو با یه قالب مشخص ارسال کنی.
        در میکروی گیرنده هم وقفه گیرنده رو فعال کن.
        به محض ورود یه کاراکتر پرچم گیرنده 1 می شه. کافیه یه بافر تعریف کنی و اطلاعات رو توش ذخیره کنی. همین دادا.
        توی کتاب آموزش avr (نویسنده: ره افروز، انتشارات نص) یه مثال خوب داره.
        حتما بخونش.
        تشکر لازم نیست!

        دیدگاه


          #5
          پاسخ : مشکل با تابع scanf

          ممنون
          ولی من مجبورم از وقفه خروجی استفاده کنم. و در داخل وقفه خارجی بنویسم.

          دیدگاه

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