اطلاعیه

Collapse
No announcement yet.

دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

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

    دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

    سلام
    چند تا سنسور دارم که میخوام دمای همه رو توی میکرو بخونم بریزم توی یه رشته بعد یکجا بفرستم به لب ویو
    (در بسکام)
    لطفا حرفه ای ها بیان کمک
    mrg

    #2
    پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

    سلام
    کجای کار مشکل دارین
    در موقع ارسال به صورت hex ارسال کنید (بهتره)
    انجمن LABVIEW
    http://www.eca.ir/forum2/index.php?board=279.0
    اموزش ميكروكنترلرهاي AVR به زبان ساده
    http://www.eca.ir/forum2/index.php/topic,7070.0.html

    دیدگاه


      #3
      پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

      سلام
      ممنون که جواب دادین
      من پروژه ای دارم که در بستر اترنت کار میکنه و با ارسال کاراکتری دمای مثلا 16 تا سنسور رو میخونه و تک تک ولی پشت سر هم ارسال میکنه به لب ویو ولی این وسط توی هر سری خوندن دماها ،یکسری از سنسورهارو نمیخونه مثلا بار اول سنسور 1،2،3 و دفعه بعد 5،1،16 و ... به خاطر همین میخام اول توی میکرو اول همه دماها خونده داخل یه رشته ریخته بعد یه دفعه ارسال کنم به لب ویو که اونجا هم راحت همه رو تفکیک و سر جای خودش قرار بدم مثلا با فرمت زیر توی لب ویو دریافت بشه
      T1=23.12T2=-22.45T3=04.58...T16=-18.20
      mrg

      دیدگاه


        #4
        پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

        من قبلا یک همچین کاری رو انجام دادم . پیشنهاد من اینه که پس از اندازه گیری دما ، همه ی دماهای به دست اومده رو تک تک به رشته (string) تبدیل کنی . در مرحله بعد همه رو به هم بچسبونی . به طور مثال 21 33 34 22 20
        که میشه 2133342220 . به همین راحتی . توی labview هم با استفاده از تابع sub string رشته ها رو از هم تفکیک کن
        انجمن LABVIEW
        http://www.eca.ir/forum2/index.php?board=279.0
        اموزش ميكروكنترلرهاي AVR به زبان ساده
        http://www.eca.ir/forum2/index.php/topic,7070.0.html

        دیدگاه


          #5
          پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

          با سلام
          بهتره اطلاعات هر سنسور داخل یک header و trailer مثلا <داده ها> قرار بگیره و بعد ارسال شه، و هر فریم ارسالی هم همین طور(یعنی کل داده ها هم در هر بار ارسال دارای هدر و تریلر باشند)مثل زیر
          کد:
          #<sensor1 data><sensor2 data><sensor3 data>...<sensor n data>*
          اینطوری با هم قاطی نمیشن و قیود اضافه مثلا اینکه حتما دو رقمی باشه از بین میره و برای ذخیره مثلا و یا توسعه اینده بهتره.
          برای استخراج هم از match pattern استفاده کنیدتا اطلاعات میان هدر و تریلر رو استخراج کنید.
          The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

          دیدگاه


            #6
            پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

            با سلام و تشکر از اساتید محترم
            من با بسکام کار میکنم
            سنسورهام ds18b20 هستن
            * استاد nex2004 چطور رشته ها رو به هم بچسبونم میشه یه مثال بزارین با چه تابعی؟
            *استاد hessam2013 این هدر و تریلر توی بسکام هستش؟اگه نه ، معادلش توی بسکام چیه؟
            mrg

            دیدگاه


              #7
              پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

              دوست عزیز هدر و تریلر وابسته به زبان نیست قرار داد شما و برنامتون برای انتقال دیتا هست، یه جور پروتکل برای دسته بندی دیتا.هدر و تریلر در واقع کاراکتر هایی هستند که به اول و آخر دیتاها و فریم هامون اضافه می کنیم.پس اگه بتونید رشته ها رو به هم بچسبونید ساده می تونید اول و اخرشم یه هدر و تریلر بذارین.
              چون بسکام کار نمی کنم نمی دونم چطور میشه رشته ها رو به هم چسبوند.
              The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

              دیدگاه


                #8
                پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

                سلام
                مثل مثال زیر ارسال کن
                کد:
                $regfile = "m32def.dat"
                $crystal = 1000000
                Dim A1 As Byte
                Dim S1 As String * 5
                Dim A2 As Byte
                Dim S2 As String * 5
                Dim S3 As String * 15
                A1 = 255
                A2 = 10
                S1 = Hex(a1)
                S2 = Hex(a2)
                S3 = S1 + S2
                Do
                Print S3
                Loop
                End
                سمت labview با استفاده از تابع substring دوتا دوتا جدا کن و در مرحله بعد با استفاده از از تابع hexadecimalstring to number مقدار رو به عدد تبدیل کن و ازش استفاده کن .
                انجمن LABVIEW
                http://www.eca.ir/forum2/index.php?board=279.0
                اموزش ميكروكنترلرهاي AVR به زبان ساده
                http://www.eca.ir/forum2/index.php/topic,7070.0.html

                دیدگاه


                  #9
                  پاسخ : دمای چند تا سنسور رو خوند و یکجا ارسال کرد به لب ویو(اساتید اکرمی وحسین وردی

                  با سلام
                  ممنون از راهنماییهای بیدریغتان
                  من با برنامه زیر با ارسال عدد یک t1 رو و با ارسال عدد 2 دمای t2 رو فراخوانی میکنم ولی میخوام با ارسال عدد 3 ،t1 و t2 رو بزاره تو یک رشته با هم ارسال کنه


                  $regfile = "m16def.dat"
                  $crystal = 7372800
                  $baud = 9600

                  Dim Byte0 As Byte
                  Dim Byte1 As Byte
                  Dim Sign As String * 1
                  Dim T As String * 20

                  Dim T1 As Single
                  Dim T2 As Single


                  '================================================

                  Dim Portb_rx As Bit , Data_rx As Byte , Tr_enable As Bit

                  '**************
                  Stat:
                  On Urxc Rec_isr
                  Enable Urxc
                  Enable Interrupts

                  Do
                  Loop

                  Rec_isr:
                  Data_rx = Udr 'for read t1
                  If Data_rx = "1" Then
                  Goto St
                  Else

                  If Data_rx = "2" Then ' For Read T2
                  Goto Rt
                  Else
                  If Data_rx = "3" Then 'for call t1&t2
                  Goto Tt

                  St:
                  'Then Tr_enable = 1
                  'If Tr_enable = 1 Then

                  1wreset Pinb , 7
                  If Err = 1 Then

                  Print "No DS18B20"
                  Wait 1
                  Else
                  1wwrite &HCC , 1 , Pinb , 7
                  1wwrite &H44 , 1 , Pinb , 7
                  Waitms 250
                  1wreset Pinb , 7
                  1wwrite &HCC , 1 , Pinb , 7
                  1wwrite &HBE , 1 , Pinb , 7

                  Byte0 = 1wread(1 , Pinb , 7 )
                  Byte1 = 1wread(4 , Pinb , 7)

                  If Byte1 > 248 Then
                  Byte0 = &HFF - Byte0
                  Byte1 = &HFF - Byte1
                  Sign = "-"
                  Else
                  Sign = "+"
                  End If
                  T1 = Byte0 / 16
                  T2 = Byte1 * 16
                  T1 = T1 + T2
                  If Sign = "-" Then
                  'T= T1+1
                  T1 = T1 + 0.1
                  End If

                  T = Fusing(t1 , "#.&&&quot

                  Print "T1=" ; Sign ; T
                  جدیدترین ویرایش توسط MRGMRG; ۱۵:۴۴ ۱۳۹۵/۰۵/۰۱.
                  mrg

                  دیدگاه

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