اطلاعیه

Collapse
No announcement yet.

تشخیص دو دیتا با HMTR

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

    تشخیص دو دیتا با HMTR

    سلام
    من از دو ماژول HMTR استفاده میکنم که قراره دو سنسور آنالوگ با ADC بخواند و به یک میکرو
    دیگر ارسال و در ال سی دی نمایش دهد من با دستور زیر اطلاعات فرستادم
    If Pinb.0 = 0 Then
    Gosub Read_ldr
    Waitms 300
    End If
    If Pinb.1 = 0 Then
    Gosub Read_setpoint
    Waitms 300
    End If
    Loop
    End

    Read_ldr:
    Ldr = Getadc(0) : Ldr = Ldr * 4.8828125
    Printbin Ldr
    Return
    Read_setpoint:
    Setpoint = Getadc(2) : Setpoint = Setpoint * 4.8828125
    Printbin Setpoint
    Return

    و با دستور زیر اطلاعات میگیرم
    Do
    LDR = Waitkey()
    Locate 1 , 1
    Lcd "LDR:" ; LDR


    Setpoint = Waitkey()
    Locate 2 , 1
    Lcd "POT:" ; Setpoint


    Loop
    End

    اما مشکل من اینجاست که چون فقط یک بار دستور waitkey فهمیده میشود پس در ال سی دی من در همان قسمت که دیتا LDR دارم دیتا setpoint هم درج میشه و در خط دوم ال سی دی جای مقدار setpoint خالی میماند
    برای حل مشکلم یه کاراکتر را شرط قرار دادم اما نشد کسی میتونه راهنمایی کنه مرسی

    #2
    پاسخ : تشخیص دو دیتا با HMTR

    با سلام شما تمام داده های ارسالی را به یک رشته تبدیل کنید و سپس رشته را ارسال کنید و در گیرنده هم با توابع دیگر سریال (برای دریافت رشته) داده را دریافت و سپس تفکیک کنید و نمایش دهید. اما راه اصولی این است که داده را به صورت وقفه ای و بایت به بایت دریافت کنید و در یک آرایه ذخیره کنید و سپس شروع و پایان آن را تشخیص دهید و داده مورد نظر را از آن استخراج کنید.

    دیدگاه


      #3
      پاسخ : تشخیص دو دیتا با HMTR

      سلام
      اگر من بخواهم برای مثال عدد 823 را با یک حرف مثل a ترکیب کنم و استرینگ کنم و بفرستم و در طرف دیگر
      دریافت کنم و جدا کنم و دقیقا همین عدد و حرف جدا بگیرم میشه برام در بسکام بنویسی چون امتحان کردم
      اما نشد .

      دیدگاه


        #4
        پاسخ : تشخیص دو دیتا با HMTR

        نوشته اصلی توسط nimrar
        سلام
        اگر من بخواهم برای مثال عدد 823 را با یک حرف مثل a ترکیب کنم و استرینگ کنم و بفرستم و در طرف دیگر
        دریافت کنم و جدا کنم و دقیقا همین عدد و حرف جدا بگیرم میشه برام در بسکام بنویسی چون امتحان کردم
        اما نشد .
        برای تبدیل عدد به رشته و ارسال:
        کد:
        Dim S As String*3 , W As Word
        W = 823
        S = Str(W)
        S = Format(S , "000")
        Print "A" ; S
        برای دریافت هم فکر می کنم با دستور Input بتوان رشته دریافت کرد مطمئن نیستم. کد زیر را آزمایش کنید:
        کد:
        Dim S As String*10
        Input S Noecho
        اگر جواب نداد می توانید با دستور Ischarwaiting پورت سریال را برای دریافت کاراکتر چک کنید و در صورت دریافت کاراکتر آن را در یک متغییر ذخیره کنید:
        کد:
        Dim A As Byte , Buff(3) As Byte, W As Word , Index As Byte
        Index = 0
        Do
        A = Ischarwaiting()
        If A = 1 tThen
         A = Waitkey()
         If Index = 0 then
         if A = 65 Then Incr Index
         Else
         Buff(Index) = A - 48
         End If
         If Index = 3 Then
         W = Buff(1) * 100
         A = Buff(2) * 10
         W = W + A
         W = W + Buff(3)
         Index = 0
         End If
        End If
        Loop

        دیدگاه


          #5
          پاسخ : تشخیص دو دیتا با HMTR

          سلام
          ممنون از وقتی که گذاشتید و برنامه ایی که نوشتید .با کمک برنامه شما و تغییراتی در آن برنامم اوکی شد
          فقط یه سوال داشتم این عبارت Noecho در مقابل دستور Input برای چیه چون متوجه نشدم مرسی

          دیدگاه


            #6
            پاسخ : تشخیص دو دیتا با HMTR

            نوشته اصلی توسط nimrar
            سلام
            فقط یه سوال داشتم این عبارت Noecho در مقابل دستور Input برای چیه چون متوجه نشدم مرسی
            دستور Input برای کار با ترمینال است و اگر اشتباه نکنم Noecho باعث می شود که رشته دریافتی دوباره به پورت سریال ارسال نشود، در غیر این صورت به منظور نمایش در برنامه ترمینال، تکرار می شود. در Help بسکام توضیح مفصل با مثال داده شده است.

            دیدگاه

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