اطلاعیه

Collapse
No announcement yet.

مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

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

    مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

    سلام
    من یه برنامه vb6 ساده دارم که باید هر چند میلی ثانیه بره و یکسری اطلاعات از میکرو بگیره و در متغیر های هم نام با متغیرهای میکرو ذخیره کنه که ما وضعیت سنسورهارو متوجه بشیم

    حالا ما تا اونجایی که اطلاعاتو میکرو به صورت یک رشته بفرسته پیش رفتیم شما لطف کنید بگید که این اطلاعاترو چطور جدا سازی کنیم و در متغیرهای مربوط به خودشون بریزیم :redface:

    البته اگر لازم میبینید که در برنامه میکرو هم تغییری بدیم مشکلی نیست
    اگه کسی روش بهتری هم داره ممنون میشم اگه بهمون بگه
    با مردم همون جوری رفتار کن که دوست داری باهات رفتار کنن




    #2
    پاسخ : مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

    یعنی تا حالا کسی این کارو نکرده؟ :sad: :cry: :cry2:
    رشته ای رو از میکرو به کامپیوتر بفرسته بعد اونجا تیکه تیکش بکنه بعد هر تیکشو تو یه متغیر نگه داره

    البته خودم با دستور split این کارو کردم و خودش یه آرایه ساخت و اونو هم رو یه text box نشون دادم
    ولی مشکل اینجاست که از اون آرایه های ساخته شده نمیتونم استفاده کنم جز نشون دادن توی text box

    :angry: :angry:
    با مردم همون جوری رفتار کن که دوست داری باهات رفتار کنن



    دیدگاه


      #3
      پاسخ : مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

      سلام
      برای همچین کاری سعی کنین ابتدا تمامی مقدار ها رو داخل یک رشته تهیه و برای کامپیوتر ارسال کنین
      مثلا اول @ رو ابتدای جمله بعد مقدار متغییر مثلا عدد 10 و در انتها یه کارکتر دیگه مثلا # و بعد متغییر بعدی مثلا 100 و در انتها هم یه کارکتر دیگه قرار بده حالا %
      داخل vb بیا کاری که کنی اینه(فرض می کنیم که رشته ورودی داخل متغییر STR1 که خودش از نوع string ریخته شده)
      1-@ رو داخل رشته یا دستور INSTR مکانشو پیدا کن و بریز داخل یه متغییر مثلا A
      2-مکان# رو هم باز با همون دستور پیدا کنم و بریز داخل یه متغییر مثلا B
      3-A=A+1
      4-C=B-A
      5-حالا یه متغییر به نام مثلا b از نوع STRING تعریف کن
      6-B=MID(STR1,A,C)

      داخل متغییر B همون مقدار متغییری هست که بین @ , # هست برای بقیه کارکترها هم همین جور کن

      با دستور split هم می شه طوری که باید داده ها رو با یه کارکتر از هم جدا سازی کنین و در انتها با تعریف آرایه داده ها رو جدا از هم کنین
      هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

      دیدگاه


        #4
        پاسخ : مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

        ممنون از راهنماییتون
        هر کاری کردم نتونستم کل اطلاعاتمو به یه رشته تبدیل کنم
        این برنامه میکروه
        کد:
        $regfile = "m8def.dat"
        $crystal = 11059200
        $baud = 9600
        
                 '*-_rah andazie vaghfeha_-*
                 '*-_moarefie lcd_-*
        Config Lcd = 16 * 2
        Config Lcdpin = Pin , Db4 = Pinb.0 , Db5 = Pinb.1 , Db6 = Pinb.2 , Db7 = Pinb.3 , Rs = Pinb.4 , E = Pinb.5
        
        Config Adc = Single , Prescaler = Auto , Reference = Avcc
        
        Dim A As Word
        Dim B As Word
        Dim C As Word
        
        
        
        Dim X As Integer
        Dim D As Integer
        Dim R As Integer
        
        Cls
        Locate 1 , 1
        Lcd "start"
        Waitms 200
        
        Start Adc
        Shoru1:
        
        A = Getadc(0)
        B = Getadc(1)
        C = Getadc(2)
        
        Locate 2 , 1
        Lcd A
        Locate 2 , 7
        Lcd B
        Locate 2 , 13
        Lcd C
        Waitms 2000
        
        Print A
        Print "-"
        Print B
        Print "-"
        Print C
        
        Cls
        Goto Shoru1
        End
        با مردم همون جوری رفتار کن که دوست داری باهات رفتار کنن



        دیدگاه


          #5
          پاسخ : مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

          سلام
          اول همیشه به یاد داشته باشین هیچ گاه دیگه از دستور goto استفاده نکنین حتما سعی کنین از حلقه های تکرار استفاده کنین برنامه به شکل زیر در می یاد

          برنامه :

          کد:
          $regfile = "m8def.dat"
          $crystal = 11059200
          $baud = 9600
          
                   '*-_rah andazie vaghfeha_-*
                   '*-_moarefie lcd_-*
          Config Lcd = 16 * 2
          Config Lcdpin = Pin , Db4 = Pinb.0 , Db5 = Pinb.1 , Db6 = Pinb.2 , Db7 = Pinb.3 , Rs = Pinb.4 , E = Pinb.5
          
          Config Adc = Single , Prescaler = Auto , Reference = Avcc
          
          Dim A As Word
          Dim B As Word
          Dim C As Word
          
          
          
          Dim X As Integer
          Dim D As Integer
          Dim R As Integer
          
          Cls
          Locate 1 , 1
          Lcd "start"
          Waitms 200
          
          Start Adc
          do
          
          A = Getadc(0)
          B = Getadc(1)
          C = Getadc(2)
          
          Locate 2 , 1
          Lcd A
          Locate 2 , 7
          Lcd B
          Locate 2 , 13
          Lcd C
          Waitms 2000
          
          print A;"-";B;"-";c
          
          Cls
          loop



          کارکترهای جداساز - است
          هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

          دیدگاه


            #6
            پاسخ : مشکل در جداسازی اطلاعات دریافتی از می&

            تشکر از راهنماییتون
            حتما اعمال میکنم
            اون برنامه vb هم که گفتم مشکلش حل شد من یه اشتباه کوچیک تو تعریف آرایه داشتم که حل شد

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

            کد:
            Option Explicit
            
            Dim x1 As String
            Dim w As String
            Dim a( ) As String
            
            Dim x As String
            Private Sub Form_Load( )
            
            On Error GoTo end1
            MSComm1.PortOpen = True
            
            end1:
            Text6.Text = "error port"
            Exit Sub
            End Sub
            
            Private Sub Command1_Click( )
            On Error GoTo end1
            Text4.Text = x
            end1:
            Text6.Text = "error dige"
            Exit Sub
            
            End Sub
            
            Private Sub Timer2_Timer( )
            
            On Error GoTo end1
            w = MSComm1.Input
            Text5.Text = w
            a = Split(w, "-")
            
            Text1.Text = a(0)
            x = Text1.Text
            Text2.Text = a(1)
            Text3.Text = a(2)
            end1:
            Text6.Text = "error port w"
            Exit Sub
            
            End Sub
            با مردم همون جوری رفتار کن که دوست داری باهات رفتار کنن



            دیدگاه


              #7
              پاسخ : مشکل در جداسازی اطلاعات دریافتی از میکرو در vb

              سلام
              از اینکه دانشتون رو در اختیار دیگران می زارین ممنون
              آقا برنامه را بهتره با تایمر انجام ندین چون به این صورت یا داده هاتون گم می شه و یا با زیاد شدن حجم داده مقداری از داده هاتون توی بافر کامپیوتر خونده و مابقی در زمان بعدی خوانده می شه(یعنی یه رشته رو از دست می دین)بهتر از کنترل سریال اکتیویکس vb از خاصیت CommEvent برای تشخیص داده های رسیده استفاده کنین

              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

              دیدگاه

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