اطلاعیه

Collapse
No announcement yet.

چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

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

    چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

    سلام
    چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟
    می خوام وقتی داده ای وارد بافر سریال میکرو میشه شروع به خوندنش کنم و زمانی که داده ای توی بافر نیست به یک کاره دیگه بپردازم. :cry2:
    Gracias A La Vida
    [glow=red,2,300]ساخت فرز CNC[/glow]
    http://www.eca.ir/forum2/index.php?topic=56308.0
    http://up9.iranblog.com/images/4xd21f8vemt8g46011fx.jpg
    زمین سفت است و آب شلست و هوا نرم است و همه چیز عالیست در این حوالی...

    #2
    پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

    سلام
    شما اول وقفه عمومی رو فعال میکنید
    بعد از اون برچسبی که باید در هنگام دریافت سریال به اون بپره رو تعیین میکنید ، توی این مثال var مقدار دریافتی از پورت سریال رو در خودش نگه میداره.

    کد:
    $regfile = "2313def.dat"
    $crystal = 4000000
    $baud = 9600
    On Urxc recive_s
    Enable Interrupts
    Enable Urxc
    
    recive_s :
    var=udr
    return

    دیدگاه


      #3
      پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

      مرسی از پاسختون
      یه سوال دیگم داشتم. اگر با کتاب خونه ی avr-dos کار کردید می خوام با دستور put یه آرایه رو ذخیره کنم . اما عملا همچین دستوری رو نمیدونم چجوری بنویسم .وقتی از دستور write هم استفاده می کنم وقتی زمان ذخیره از 3 ثانیه بیشتر میشه دیگه فایلی روی مموری کارت باقی نمیمونه / :cry2:
      Gracias A La Vida
      [glow=red,2,300]ساخت فرز CNC[/glow]
      http://www.eca.ir/forum2/index.php?topic=56308.0
      http://up9.iranblog.com/images/4xd21f8vemt8g46011fx.jpg
      زمین سفت است و آب شلست و هوا نرم است و همه چیز عالیست در این حوالی...

      دیدگاه


        #4
        پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

        سلام ، نه متاسقانه با avr-dos فقط از روی مموری خوندم ( کدهای بچه های سایت رو استفاده کردم ) در مورد نوشتن تجربه ای ندارم :(

        دیدگاه


          #5
          پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

          سلام

          این مثال مال خود بسکام هست تست کن خبرش رو هم به ما بده

          'for the binary file demo we need some variables of different types

          Dim B AsByte, W AsWord, L AsLong, Sn AsSingle, Ltemp AsLong

          Dim Stxt AsString* 10

          B = 1 : W = 50000 : L = 12345678 : Sn = 123.45 : Stxt ="test"



          'open the file in BINARY mode

          Open"test.biN"ForBinaryAs#2

          Put#2 , B ' write a byte

          Put#2 , W ' write a word

          Put#2 , L ' write a long

          Ltemp =Loc(#2)+ 1 ' get the position of the next byte

          Print Ltemp ;" LOC"' store the location of the file pointer

          Print Seek(#2);" = LOC+1"



          PrintLof(#2);" length of file"

          PrintFileattr(#2);" file mode"' should be 32 for binary

          Put#2 , Sn ' write a single

          Put#2 , Stxt ' write a string



          Flush#2 ' flush to disk

          Close#2



          'now open the file again and write only the single

          Open"test.bin"ForBinaryAs#2

          L = 1 'specify the file position

          B =Seek(#2 , L)' reset is the same as using SEEK #2,L

          Get#2 , B ' get the byte

          Get#2 , W ' get the word

          Get#2 , L ' get the long

          Get#2 , Sn ' get the single

          Get#2 , Stxt ' get the string

          Close#2

          منبع http://members.aon.at/voegel/
          انجام پروژه های برنامه نویسی اندروید
          [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
          http://cafebazaar.ir/app/?id=com.atxdroid

          دیدگاه


            #6
            پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

            نوشته اصلی توسط mohsen.HEX
            سلام

            این مثال مال خود بسکام هست تست کن خبرش رو هم به ما بده

            سلام
            مرسی
            اما من داده هارو پشت سر هم میگیرم و میریزم تو یه رشته . بعد اونو با put عین دستور بالا می خوام بریزم تو فایل. یه بار 4 تا عدد میریزه یه بار اصلا فایل ها 0 کیلیو بایته . کلا دستور put برای من کار نمیکنه :cry2:
            می خوام داده هارو از پورت سریال بگیرم و بریزم تو یه رشته یا آرایه بعد با دستور put یا هرچی دیگه توی فایل ذخیره کنم . وقتی تو رشته میریزم با دستور mid وقتی write هم استفاده می کنم هیچی ذخیره نمی کنه.
            کلا با بسکام با دستور write فقط تونستم داده ها رو بگیرم ذخیره کنم . اونم فقط تا 2 ثانیه کار می کنه بعد هنگ می کنه . :cry2: اعصابم رو ریخته بهم :cry2:
            فرضا بعد از فراخوانی کتابخونه ها و ... این دستورات رو می نویسم تا وقتی اینتراپت سریال اومد بیاد و کاراکتر رو از بافر بخونه بریزه تو رشته . یه رشته پر شد اونو بریزه رو کارت حافظه و رشته ی بعدی رو پر کنه و به همین ترتیب الی آخر
            در نهایت فایل های ایجاد شده خالیند :cry2:
            کد:
            On Urxc Rec_isra
            Enable Interrupts
            Enable Urxc
            
            Dim A As Byte
            
            Dim Class1 As String * 20
            Dim Class2 As String * 20
            
            
            Dim Pointer1 As Integer
            Dim Pointer2 As Integer
            Pointer1 = 1
            Pointer2 = 1
            
            Dim Mode1 As Bit
            Dim Mode2 As Bit
            Mode1 = 1
            Mode2 = 0
            این وقتی اینتراپت سریال میاد
            کد:
            Rec_isra:
            
            A = Udr
            
            If Mode1 = 1 Then
              Mid(class1 , Pointer1 , 1) = A
              Incr Pointer1
            End If
            
            If Mode2 = 1 Then
              Mid(class2 , Pointer2 , 1) = A
              Incr Pointer2
            End If
            
            
            If Pointer1 = 21 Then
              Pointer1 = 1
              Mode2 = 1
              Mode1 = 0
              'Print "class1:" ; Class1
            End If
            
            If Pointer2 = 21 Then
              Pointer2 = 1
              Mode2 = 0
              Mode1 = 1
              'Print "class2:" ; Class2
            End If
            
            'A = Waitkey()
            
            Return
            مثلا تو یه حلقه هم می نویسم اگه فلان رشته پر شد بیاد Put کنه تویه فایلی که تو مد باینری باز کردمش.
            البته همین رشته رو هم می خوام write کنه بازم انجام نمیده! شاید مشکل از write!
            ولی وقتی یه رشته input می کنم از پورت سریال و با دستور write میریزم رو کارت حافظه اون درست کار می کنه .(ولی فقط برای 2-3 ثانیه!!!)

            دستور برای ذخیره ی یه آرایه از روی رم رو فایل رو دارید (اسم فایل متغییره واسه همین با bsave هم نمیشه) :sad:
            Gracias A La Vida
            [glow=red,2,300]ساخت فرز CNC[/glow]
            http://www.eca.ir/forum2/index.php?topic=56308.0
            http://up9.iranblog.com/images/4xd21f8vemt8g46011fx.jpg
            زمین سفت است و آب شلست و هوا نرم است و همه چیز عالیست در این حوالی...

            دیدگاه


              #7
              پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

              چه جالب من هم دارم روی یک پروژه مرتبط با ام ام سی کار میکنم ولی مشکل من با یک قطعه دیگه بود این که کار هام رو خوب انجام نمیداد این اخری ها داشت اعصابم رو به هم میریخت تا این که گفتم چند جای برنامه تاخیر بندازم ببینم چی میشه که مشکل من حل شدو شما به نظر من بهتره بعد از هر دستور نوشتن و خوندن یه تاخیر مثلا 50 میلی ثانیه ای بده ببین چی میشه
              منتظر جوابت هستم
              انجام پروژه های برنامه نویسی اندروید
              [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
              http://cafebazaar.ir/app/?id=com.atxdroid

              دیدگاه


                #8
                پاسخ : چطور از اینتراپت دریافت سریال توی bascom استفاده کنم؟

                سلام
                اگه ما بخوایم مثلا 30 کاراکتر بخونیم چی؟ چطور میشه اطلاعات رو بافر کرد؟

                دیدگاه

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