اطلاعیه

Collapse
No announcement yet.

مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

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

    #16
    پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

    نوشته اصلی توسط baby_1
    سلام
    یه کاری کنین.یه دکمه جدید تعریف کنین و این خط رو در تابع دکمه بنویسین
    MSComm1.Output = "1234567890" & vbcrlf

    حال در میکرو هم آرایه بافر رو با مقدار 20 تعریف کنین

    برنامه گیرنده رو به این صورت تغییر بدین

    کد:
    char buffer[20];
    unsigned char i;
    i=0;
    while (1)
       {
           buffer[i]= getchar();
       i=i+1;
    if(i>=9){
    for(i=0;i<=9;i++)
    {
    lcd_puts(buffer[i]);
    }
    i=0;
    }
       };
    سلام
    بالاخره یه پروگرمر پیدا کردم. کرک پروتئوس هم که لطف کردین گذاشتین کار نکرد، فکر کنم چون ورژن پروتئوس من فرق میکرد . حالا فعلا خداروشکر یه پروگرمر دیگه یافتم

    آقا این برنامه ای که دادی رو گذاشتم تو میکرو (البته یه تیکه ش اصلاح میخواست چون ورودی lcd_puts باید string باشه که تو برنامه شما کاراکتر میشد، که اصلاحش کردم:


    کد:
    char buffer[20];
    unsigned char i;
    i=0;
    while (1)
       {
           buffer[i]= getchar();
       i=i+1;
    if(i>=9){
    
    [color=red]lcd_gotoxy(0,0);[/color]
    
    lcd_puts(buffer);
    i=0;
    }
       };
    [/quote]


    ، اون دکمه جدید رو هم تعریف کردم. جواب داد ، یعنی بیشتر از چهار کاراکتر میفرسته. البته یه مشکل دیگه بوجود اومده، کاراکترها روی lcd منظم نمایش داده نمیشن. دفعه اول که کلا انگار چینی ژاپنی مینویسه! بعدش روی خط اول lcd یه حرف j میاد روی خط دومش 1234567، دفعه دوم که میزنم خط دوم سر جاشه، روی خط اول بقیه ش میاد یعنی 890 دفعه سوم خط دوم سر جاشه، خط اول 234567890 رو مینویسه یعنی 1 رو جا میندازه!! oo: کلا قاطیه، ظاهرا اطلاعات رو به طور مرتب از پورت سریال دریافت نمیکنه

    دستور lcd_gotoxy(0,0) هم که گذاشتم کلا انگار کار نمیکنه، گذاشتم که یعنی همیشه از اول شروع کنه ولی کار نمیکنه.

    هیچ وقت همه عددها 1234567890 باهم نمیان، فکر کنم اومدیم ابرو شو درست کنیم زدیم چششو کور کردیم.

    دیدگاه


      #17
      پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

      از اینکه پروگرامر گرفتیو داره کارت درست میشه خوشحالم دوستم.

      شما LCD رو پاک نمیکنید.
      اینه دلیلش.وگرنه برنامه OK.
      ?Why not

      دیدگاه


        #18
        پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

        سلام

        هیچ وقت همه عددها 1234567890 باهم نمیان، فکر کنم اومدیم ابرو شو درست کنیم زدیم چششو کور کردیم
        من AVR رو با بسکام و PIC رو با C کار می کنم دیدم به جز دوست عزیزمون QUARK کسی همراهی نمی کنن گفتم به نحوی کمک کرده باشم

        (البته یه تیکه ش اصلاح میخواست چون ورودی lcd_puts باید string باشه که تو برنامه شما کاراکتر میشد، که اصلاحش کردم
        چون توابع رو دقیقا روی کامپیوتر ندارم نمی دونم که آرگومان ورودی و خروجیشون دقیقا چی هست و بابت همین شرمنده اگر در مقدار ورودی تابع اشتباه کردم

        مشکلات از اینجاها می تونه باشه
        1-مطابق حرف QUARK حتما بعد از هر بار چاپ و برای نمایش مجدد ال سی دی رو پاک و مجددا کارکترهای جدید رو چاپ کنین
        2-احتمالا تابع getchar در صورت وجود نداشتن کارکتر مقداری رو بر می گردونه یا کارکترهای کنترلی RS232 رو هم بر می گردونه، و کارکترهای نامفهوم و ... احتمالا از همین مشکل ناشی می شن در زبان C و کدویژن دستوری برای چک کردن وجود بایتی در USART وجود نداره که ابتدا چک کنین ببینین که کارکتر وجود داره یا خیر؟ و سپس در صورت وجود داشتن با تابع getchar دریافت و در متغییر buffer بریزین

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

        دیدگاه


          #19
          پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

          نوشته اصلی توسط baby_1
          سلام

          من AVR رو با بسکام و PIC رو با C کار می کنم دیدم به جز دوست عزیزمون QUARK کسی همراهی نمی کنن گفتم به نحوی کمک کرده باشم

          من منظوری نداشتم، شوخی کردم. واقعا از کمکتون ممنون، کدی که شما دادید درست کار کرد. ایراد از یه جای دیگه برنامه س که باید بگردم پیداش کنم، در واقع خودم زدم چششو کور کردم

          ایراد فکر کنم از این دو خط باشه

          buffer[i]=getchar
          i=i+1

          وقتی به جای buffer[i] میذارم buffer[0] در واقع میشه همون حالت اول.
          دارم باهاش ور میرم ببینم چی میشه. ایراد از برنامه vb نیست.

          دیدگاه


            #20
            پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

            پیداش کردم!!!

            تو برنامه کدویژن یه delay_ms(200) گذاشته بودم که باعث میشد دیتا رو پست سر هم نخونه و یه سری اطلاعات از بین میرفت، الان دارم کامل جواب میگیرم.

            واقعا از کمکتون ممنون

            دیدگاه


              #21
              پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

              با عرض سلام و خسته نباشید خدمت دوستان, راستش من توی پورت سریال با مشکل برخوردم جریان از این قراره که از کامپیوتر به میکرو جواب میده بدون هیچ مشکلی اما از میکرو به کامپیوتر هر کاری میکنم جواب نمیده هر جایی که بلد بودم تست کردم(ترمینال کدویژن,هایپر ترمینال ویندوز)برنامه بیسیکم بدین صورت هست


              Private Sub Command1_Click()
              p.Output = Text1.Text
              Text1.Text = ""
              End Sub

              Private Sub Command2_Click()
              End
              End Sub

              Private Sub Command4_Click()
              Text3.Text = p.Input
              End Sub

              Private Sub Exit_Click()
              End
              End Sub

              Private Sub Form_Load()
              p.CommPort = 1
              p.PortOpen = True
              End Sub

              اما جواب نمیده
              نرخ ارسال هم 9600,
              لطفا کمک کنید.

              دیدگاه


                #22
                پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

                Text3.Text = p.Input

                این چیه؟

                راستی این فایلو خوندی؟


                http://zaqak.persiangig.com/document/Document1.rar


                برنامه میکرو هم بذارید.
                ?Why not

                دیدگاه


                  #23
                  پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

                  دوباره سلام


                  گفتید برای اینکه ارسال اول درست بشه راهی نیست؟

                  دیدگاه


                    #24
                    پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

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

                    دیدگاه


                      #25
                      پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

                      کد:
                      Private Sub Form_Load()
                        MSComm1.CommPort = 1 ' Set the port number
                        MSComm1.Settings = "2400,N,8,1" ' Set UART parameters
                        MSComm1.PortOpen = True ' Required, might lock port
                        Dim s As String * 2
                        Dim x As String * 2
                           
                      End Sub
                      
                      Private Sub Command1_Click()
                      x = Text1.Text
                      MSComm1.Output = Text2.Text
                      s = MSComm1.Input
                      Text1.Text = Text1.Text + s + vbNewLine
                      End Sub

                      تو ارسال اول همیشه کاراکترهای نامفهوم نمایش داده میشه، ولی بعدش دیگه درست میشه تا وقتی که سیستم ریست بشه.

                      دیدگاه


                        #26
                        پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

                        سلام
                        اگر استانداردهایی اتباطی rs232 دستگاهای مختلف رو دیده باشین کارکترهای ارسالی رو بین دو کارکتر کنترولی قرار می دن و ارسال می کنن و در گیرنده با حذف این دو کارکتر و در آوردن رشته مابین از بروز خطاهای احتمالی در حین دریافت و ارسال جلوگیری می کنن ، رشته های کنترلی مثل اینتر ، ابتدای خط و .... همون کاکترهای ناآشنا روی صفحه lcd تون هست سعی کنین با روش توضیحی بالا برنامه تون رو تغییر بدین
                        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                        دیدگاه


                          #27
                          پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

                          مجددا سلام

                          من میخواستم همین برنامه ارتباط میکرو با ویژوال بیسیک رو با وقفه راه بندازم ولی کار نمیکنه:

                          کد:
                          while (1)
                             {
                              // buffer[i]=getchar();
                              // i=i+1;
                              lcd_puts("enter data");
                              delay_ms(1);
                              lcd_gotoxy(0,0);
                              
                              lcd_puts(buffer);
                              if(f==16)
                                { 
                                lcd_clear();
                                
                                 for(z=0;z<16;z++)
                                  {
                                   buffer[z]=0;
                                  }
                                 
                                f=0;
                                }
                              lcd_gotoxy(0,1);  
                              sprintf(string,"%d",i);
                              lcd_puts(string);
                                    
                             };


                          این دو خط رو حذف کردم:
                          buffer[i]=getchar();
                          i=i+1;

                          این هم برنامه وقفه:

                          interrupt [USART_RXC] void usart_rx_isr(void)
                          {
                          buffer[i]=UDR;
                          f++;
                          }

                          اولش که هنوز هیچی از کامپیوتر نفرستادم اون جمله هایی که میخوام رو صفحه Lcd میاد ولی وقتی میفرستم انگار Lcd هی ریست میشه، سطر اولش هی خاموش و روشن میشه و هیچ چیزی هم نشون نمیده.

                          کسی میدونه مشکل از کجاست؟

                          دیدگاه


                            #28
                            پاسخ : مشکل در برقراری ارتباط سریال بین میکرو و ویژوال بیسیک

                            کسی نظری نداشت؟ :read:

                            دیدگاه

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