اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    من میخوام یه سری متغیرها رو به وسیله ویژوال بیسیک تو میکرو تغییر بدم. یه برنامه تست نوشتم که ارتباط رو تست کنم

    برنامه ای که برای میکرو نوشتم با ترمینال کدویژن کاملا جواب میده، هم ارسال داره هم دریافت.

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

    کد:
    Private Sub Command1_Click()
      MSComm1.Output = Text2.Text
    End Sub
    
    Private Sub Form_Load()
       MSComm1.CommPort = 1
      MSComm1.PortOpen = True
    
    
    End Sub
    
    Private Sub Text1_Change()
    Dim A As String
    A = 0
    If A = 0 Then
      Text1.Text = MSComm1.Input
      A = 1
     ElseIf A = 1 Then
       Text1.Text = Text1.Text + vbNewLine + MSComm1.Input
      End If
    End Sub
    این نکته رو هم بگم که من کلا اولین بارمه که دارم با ویژوال بیسیک کار کنم.

    برنامه میکرو:

    کد:
    while (1)
       {
        putsf("test 123456");
        buffer[0]= getchar(); 
        lcd_puts(buffer)     
       };
    کسی میدونه ایراد کدی که تو ویژوال بیسیک نوشتم چیه که دریافت نداره؟


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

    این فایلو دانلود کن. &lt
    مفیده.
    http://zaqak.persiangig.com/document/Document1.rar
    ?Why not

    دیدگاه


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

      تشکر
      جواب گرفتم

      حالا دو تا سوال دیگه:
      1- وقتی میخوام داده بفرستم فقط تا چهار کاراکتر قبول میکنه، مثلا اگه 1234567 رو بفرستم فقط 1237 رو میفرسته، یعنی سه تای اول و یه دونه آخر، تنظیماتی داره که بشه کاراکترهای بیشتری رو بفرستم؟

      2- وقتی برای اولین بار میخوام کاراکتر رو بفرستم، روی lcd کاراکترهای عجیب غریب میاد. مثلا اگه 1234 بفرستم به اندازه چهار کاراکتر علائم نامفهوم میاد تو ارسالهای بعد این مشکل حل میشه ولی اولین بار همیشه این مشکل هست. کسی با این مشکل برخورد داشته؟

      ممنون

      دیدگاه


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

        نوشته اصلی توسط rt28
        تشکر
        جواب گرفتم

        حالا دو تا سوال دیگه:
        1- وقتی میخوام داده بفرستم فقط تا چهار کاراکتر قبول میکنه، مثلا اگه 1234567 رو بفرستم فقط 1237 رو میفرسته، یعنی سه تای اول و یه دونه آخر، تنظیماتی داره که بشه کاراکترهای بیشتری رو بفرستم؟

        2- وقتی برای اولین بار میخوام کاراکتر رو بفرستم، روی lcd کاراکترهای عجیب غریب میاد. مثلا اگه 1234 بفرستم به اندازه چهار کاراکتر علائم نامفهوم میاد تو ارسالهای بعد این مشکل حل میشه ولی اولین بار همیشه این مشکل هست. کسی با این مشکل برخورد داشته؟

        ممنون

        1-با کدوم کد.لطفاً کله کد رو بذارید.


        2-آره واسه منم همین اتفاق افتاده بود.
        من فکر میکنم واسه اینه که اطلاعات اول رو ناقص دریافت میکنه بعد که بیتای stop و strat رو میگیره درست میفته رو قلتک.
        ?Why not

        دیدگاه


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

          این کدیه که باهاش جواب گرفتم




          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

          اون اطلاعات قسمت properties رو هم بذارم؟
          outputBuffersize: 512
          inputbuffersize; 1024
          ولی فکر کنم به این دوتا ربطی نداره چون تغییرشون دادم فرقی نکرد

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

          دیدگاه


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

            رفتم جات خالی یه چرت زدم. (:|

            خب شما وقتی میخوای 1234567 رو بفرستی چرا این دستورا رو استفاده میکنی؟
            متغییر x اینجا چیکارست؟

            *Text1.Text = Text1.Text + s + vbNewLine*

            اینا یعنی چی؟
            vbnewline دیگه چیه واسه چی ازش استفاده میکنی؟ I-)
            ?Why not

            دیدگاه


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

              الان s و x چه فرقی میکنن؟ یعنی بالاخره باید از یکی استفاده کنم دیگه؟ یا از هر دو همزمان باید استفاده کنم تا بتونم کاراکترهای بیشتری بفرستم؟

              من این برنامه رو از یه راهنمای دیگه مشابه اون چیزی که بهم دادی نوشتم.

              vbnewline برای اینه که تو باکس text2 که قراره داده رو از میکرو بخونه، تو هر بار خوندن بره خط بعد. یعنی داده قبلی رو پاک نکنه.

              اینطوری نوشته بود، منم که تازه کارم، گفتم حتما خوبه دیگه وبتامین داره.

              حالا این مشکلی ایجاد میکنه؟ یعنی اینکه فقط چهار کاراکتر میفرسته تقصیر اینه؟

              دیدگاه


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

                سلام
                می شه دقیقا بگین برنامه تون چی جوری اعداد رو می گیرین و می فرستین؟
                چون وقتی عبارت vbnewline یا کاکتر 10 رو می فرستین اعداد از هم جدا می شن
                یعنی به جای 12345 اگر بین 4 و 5 باشه vbnewline چاپ می شه
                1234
                5
                به جای
                12345

                اگر می خواین موقع ارسال vbnewline حذف بشه تابه دکمه رو به این صورت بنویسین
                کد:
                Private Sub Command1_Click()
                dim i as integer
                dim x as string
                x = Text1.Text
                for i=1 to len(text1.text)
                if instr(x,vbNewLine)>0 then
                x=replace(x,vbNewLine,"")
                else
                exit for
                end if
                next i
                MSComm1.Output = Text2.Text
                s = MSComm1.Input
                Text1.Text = Text1.Text + s + vbNewLine
                End Sub
                هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                دیدگاه


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

                  سلام
                  دیشب کلا بعد افطار تعطیل شدم


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

                  while (1)
                  {
                  putsf("Test 123456"
                  buffer[0]= getchar();
                  lcd_puts(buffer);
                  };

                  این مشکلی که در مورد vbnewline گفتید برای من پیش نیومده، مشکل اصلی اینجاست که وقتی بیشتر از چهار کاراکتر میفرستم، هر چند تا که باشه فقط سه تای اولی و یه دونه آخر رو میفرسته، گفتم شاید ایراد از متغیری باشه که دارم اطلاعات رو توش میریزم یعنی buffer.

                  من برنامه ای که شما نوشتی رو گذاشتم به جای برنامه خودم ولی همون جواب رو گرفتم. میدونید چرا فقط 4 کاراکتر میفرسته؟

                  دیدگاه


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

                    1.شما ضریبه متغیر String رو بیشترش کن.
                    ببین چی میشه.

                    2.تو خوده برنامه میکروت buffer[0] از چه نوعیه.
                    3.به جای این:
                    Text1.Text = Text1.Text + s + vbNewLine


                    print s
                    این خودش رو فورم مینویسه میاد سطر بعد.
                    ?Why not

                    دیدگاه


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

                      buffer[0] رو مجبورم از نوع char تعریف کنم چون میخوام روی lcd نشون بدم. البته نمیدونم میشه رو یه متغیر دیگه تعریف کرد بعد تبدیلش کرد یا نه.

                      ضریب متغیر string تو vb؟ کجا باید تغییرش بدم؟

                      دیدگاه


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

                        سلام
                        یه کاری کنین.یه دکمه جدید تعریف کنین و این خط رو در تابع دکمه بنویسین
                        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;
                        }
                           };
                        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                        دیدگاه


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

                          char str;
                          float x1;
                          itoa(x1,str);

                          با این میتونی تغییر بدی.(تو اینجا استفاده نکن چون همون Char درسته.)

                          تو فرستنده:dim x as string*2
                          اینو باید اینطور بنویسی:dim x as string*10 یا هر عددی که احتیاجته.

                          ولی اول کاریو که جناب baby_1 گفتند انجام بده چون یه ثابت رو داری میفرستی و مطمئن تره.
                          ?Why not

                          دیدگاه


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

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

                            پروتئوس هم نصب کردم لایسنسش رو قبول نمیکنه :sad: لایسنس برای پروتئوس 7 دارین؟ هر چی از اینترنت میگیرم قبول نمیکنه.

                            به محض اینکه بتونم برنامه رو تست میکنم خبر میدم

                            دیدگاه


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

                              سلام
                              در آدرس زیر براتون کرک پروتئوس 7.8 رو پلود کردم که ان شالله بدردتون بخوره
                              crack.rar - 67.3 Kb
                              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                              دیدگاه

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