اطلاعیه

Collapse
No announcement yet.

ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

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

    #76
    پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

    سلام :biggrin: احسان می دونستی الان 4 نفر اینجاند که از به نتیجه نرسیدنت سخت در تعجبند :rolleyes:
    الان ما پرتمون رو برای binary باز کردیم ...
    در درجه ی اول اینکه وقتی شما می نویسی chr(60) i کاراکتر > ارسال می شه و udr مقدار این کاراکتر رو دوباره به اسکی بر می گردونه و نمایش میده حلا اگه میکرو بهت نشون می ده 250 و 251 یعنی داره به جای دریافت کاراکتر > کاراکتر نقطه و رادیکال رو دریافت می کنه یعنی اینکه مداری رو که برای دریافت اطلاعات ساختی باید بازیافتش کنی
    اصلا" احسان بیا یه کاری کن ..اول مدار rs232 رو کامل ببند ..بعدش با میکرو برای کامپیوتر با این برنامه ای که بهت می دم دیتا بفرست ..ببینیم توی فرستادن دیتا هم مدار مشکل داره یا نداره :agree: با این تست تکلیفمون مشخص می شه :redface:(شاید)
    $regfile = "M64def.dat "
    $crystal = 11059200
    $baud = 38400
    $baud1 = 38400

    Dim F As Byte
    Dim R As Integer

    Open "com1:38400,8,n,1" For Binary As #2


    Do

    Waitms 100

    Waitms 10
    Printbin #2 , 77
    Waitms 1
    Print #2 , 77

    Waitms 100

    Printbin #2 , 78
    Waitms 1
    Print #2 , 78

    Waitms 100

    Printbin #2 , 79
    Waitms 1
    Print #2 ,


    Waitms 300

    Loop

    End
    این برنامه هم مثل قبلی تست کردم اینم عکس از ترمینال bascom هنوز خشک نشده :biggrin: راستی baud رو توی bascom با برنامت یکی کن
    اگه این جواب نداد .خربزه فرووش رو پیدا کردی :redface:
    در ضمن اگه دقت کرده باشی متوجه شدی که lcd هیچ وقت از 255 رو نشون نمیده و دلیلش اینه که ما در کل 256 کاراکتر داریم و معادل با اون کد اسکی از 0 تا 255 که در نهایت وقتی udr بیشترین مقدار رو نشون بده نشون می ده 255
    1.5

    دیدگاه


      #77
      پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

      نوشته اصلی توسط روناک
      سلام :biggrin: احسان می دونستی الان 4 نفر اینجاند که از به نتیجه نرسیدنت سخت در تعجبند :rolleyes:
      اینجا هم چند نفر تعجب کردن :surprised:

      من خودم هم به اندازه چند نفر تعجب کردم :surprised: :surprised: :surprised: :surprised: :smile:\

      الان من میبندمش(همین که گفتین) فقط
      میشه لطفا فوری شماتیک max232 رو (شماتیک صحیح) اینجا قرار بدین؟(و ارتباطش با میکرو) و خازن ها و ارتباط پایه هاش با میکرو

      من خودم خیلی رو این max232 شک دارم
      حس میکنم مشکوک میزنه

      تو این برنامه هم از همون tx , rx میکرو استفاده کنم؟
      پس این چیه؟
      Open "com1:38400,8,n,1" For Binary As #2
      ( تو برنامه نفهمیدم)
      ببخشید من سوالای عجیب غریب میکنم دیشب کم خوابیدم تا الانم کلاس بودم :sad:
      مغزم یاری نمیکنه

      دیدگاه


        #78
        پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

        سلام
        من چند وقت اینجا رو ندیده بودم ... اینجا چه خبره

        چی رو میخواید بفرستید

        یه نکته: اگه بخواین داده بفرستید حتما باید توی این برنامه هایی که دارید کار میکنید در قالب اسکی بفرستید

        یعنی

        print "ali"

        print "78"

        اگه عدده عادیه

        print var
        که خود بیسکام به اسکی میفرسته

        توی vb هم اون کامپوننت mscomm به همین طریقه

        اگه بخواید عدد توی vb بفرستید

        mscomm1.output=str(var)

        برای دریافت هم

        input var
        خودش تبدیل میکنه به عدد معمولی

        برای vb هم

        str=mscomm1.input

        که str یه رشته هست و برای تبدیل به عدد

        var=val(str)

        اگه میبینید توی این ترمینال ایمولاتورها همه چیز text بخاطر اینکه اینا فقط با اسکی کار میکنن

        در ضمن دستورهای print و input نسبت به ورودی ها و خروجی های شما رفتارشون عوض میشه

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

        مثل printf و scanf که با اون % شما رقتارشون رو عوض میکنید

        و فکر میکنم اگه یه عدد خالص خارج از اسکی داره دریافت میشه بهتره از waitkey یا inkey استفاده کنید

        dim a as long
        dim ptr as word
        dim i as byte
        dim indta as byte

        ptr=varptr(a)

        for i=0 to 3
        indta=waitkey()
        out ptr,indta
        incr ptr
        next

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

        دیدگاه


          #79
          پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو


          نوشته اصلی توسط alitaroosheh
          سلام
          من چند وقت اینجا رو ندیده بودم ... اینجا چه خبره

          چی رو میخواید بفرستید
          سلام علی جان
          اون مداری بود که با rc5 بود و با راهنمایی های تو جواب داد یادته ؟
          تو تابیک زیر :
          http://www.eca.ir/forum2/index.php?topic=27619.45

          من میخوام kepad رو بردارم و به جای اون با rs232 به میکرو فرمان بدم
          vb واسه واسظ کاربریش هست
          یعنی میخوام به هر سیستمی زدیم (فرستنده که به rs232 وصل میشه) بتونیم با یه برنامه که تو vb مینویسیم با کلیک رو یه کلید تو برنامه
          از ظریق rs232 کد به میکرو ارسال بشه
          از از اون به بعد هم با rc5 کد رو میفرستیم

          دیدگاه


            #80
            پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

            سلام
            من بالاخره موفق شدم از طریق VB با RS232 ارتباط برقرار کنم :wow:

            حالا یه مشکلی هست و اون اینکه میخوام برنامه رو EXE کنم تا رو هر سیستمی که حتی vb نداره کار کنه
            من واسه تست برنامه خیلی ساده زیر رو نوشتم

            Private Sub Command1_Click()
            MSComm1.Output = Chr(10)
            End Sub

            Private Sub Command2_Click()
            MSComm1.Output = Chr(25)
            End Sub

            Private Sub Command3_Click()
            MSComm1.Output = Chr(60)
            End Sub

            Private Sub Command4_Click()
            MSComm1.Output = Chr(202)
            End Sub

            Private Sub Form_Load()
            MSComm1.CommPort = 1
            MSComm1.PortOpen = True
            MSComm1.Settings = "19200,n,8,1"
            End Sub

            4 تا کلید هست که رو هر کدوم میزنیم یه عدد خاص ارسال میشه و اون طرف روی مداری که به rs232 وصل میشه روی lcd نشون میده
            میخوام مدار رو به rs232 هر کامپیوتری وصل کردم با اجرای برنامه exe کار کنه (حتی اگه کامپیوتر vb نداشته باشه)

            برای ساخت exe از منوی فایل روی گزینه make project1.exe زدم و ظاهرا exe ساخته شد
            exe که ساخت روی سیستم خودم کار کرد ولی وقتی اون رو با یه سیستم دیگه چک کردم error زیر رو داد :
            component "mscomm32.ocx or one of its dependencies not correctly registere afile is mystery or invalid

            باید چکار کنم که برنامه بدون هیچ مشکلی روی هر سیستمی اجرا بشه؟

            دیدگاه


              #81
              پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

              سلام

              وقتی از کامپوننت mscomm32.ocx استفاده میکنید یا اصلا بطور کلی هر نوع dll یا oxc یا هر چیزی استفاده میشه توی vb.6 باید با پروژه کپی بشه یا توی مسیر windows کامپیوتر کپی بشه

              اگه بخوای از پروژه install درست کنی این کار رو انجام میده و همه دپندنسیها رو توی پروژه میاره من توی vb6 تا بحال ستاپ درست نکردم ولی بهترین راه اینه که اون activx یا dll رو توی شاخه ویندوز پیدا کنی و با پروژه اینور اونور کپی کنی

              توی .net هم شما به پروژه توی reference ها هر چی اضافه کنی میاره توی ست پ بغیر از اونایی که تنها یه dll یا ocx نیستن مثل .netframework یا directx که توی لیست وابستگی ها یا dependency ها هست ولی باید آدرس نرم افزار رو بهش بدی
              به وبلاگم سر بزنید

              دیدگاه


                #82
                پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                سلام
                من یه برنامه تو vb نوشتم که 4 تا کلید داره

                یه مدار فرستنده infrared هم به پورت Rs232 وصل میشه و یه مدار گیرنده هم داریم
                تو مدار گیرنده یه led و یه alarm داریم
                برنامه vb این طوریه که کلید اول led رو روشن کلید دوم led رو خاموش کلید سوم alarm رو روشن و کلید چهارم alarm رو خاموش میکنه
                برنامه کار میکنه و جواب میده
                مشکل اینجاست بعضی وقتا تو برنامه که با vb نوشتیم رو کلید ها کلیک میکنیم همون موقع اون کاری که میخوایم رو انجام نمیده و باید مثلا جند بار کلیک کنیم تا led تو گیرنده خاموش بشه یا alarm روشن بشه و ...
                باود 19200 هست
                برنامه فرستنده و گیرنده به صورت زیر هست :

                فرستنده :
                $regfile = "m32def.dat"
                $crystal = 8000000
                $baud = 19200
                $hwstack = 32
                $swstack = 32
                $framesize = 40

                Dim Togbit As Byte , Command As Byte , Address As Byte

                Togbit = 0
                Address = 23

                Do
                Command = Waitkey()
                Waitms 200
                Rc5send Togbit , Address , Command
                Loop
                End

                گیرنده :

                $regfile = "m16def.dat"
                $crystal = 8000000
                $baud = 19200
                $hwstack = 32
                $swstack = 10
                $framesize = 40
                $lib "mcsbyte.lbx"
                Config Portd = Output


                Config Rc5 = Pinb.0
                Enable Interrupts

                Dim Address As Byte , Command As Byte


                Do
                Getrc5(address , Command)
                If Address = 23 Then
                Select Case Command
                Case 10 : Set Portd.5
                Case 20 : Reset Portd.5
                Case 30 : Set Portd.6
                Case 40 : Reset Portd.6
                End Select
                End If
                Loop

                End

                برنامه vb :
                Private Sub Command1_Click()
                MSComm1.Output = Chr(10)
                End Sub

                Private Sub Command2_Click()
                MSComm1.Output = Chr(20)
                End Sub

                Private Sub Command3_Click()
                MSComm1.Output = Chr(30)
                End Sub

                Private Sub Command4_Click()
                MSComm1.Output = Chr(40)
                End Sub

                Private Sub Form_Load()
                MSComm1.CommPort = 1
                MSComm1.PortOpen = True
                MSComm1.Settings = "19200,n,8,1"
                End Sub
                چه کار کنم که با یک بار کلیک روی دکمه مورد نظرم اون کاری که میخوام انجام بشه و لازم نباشه بعضی وقتا چند بار کلیک کنم؟

                دیدگاه


                  #83
                  پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                  سلام ...........................
                  اول لینکه خوشحالم که به نتایجی رسیدی :icon_razz:
                  دوم اینکه برای اجرا شدن برنامت روی هر کامپیوتری باید installshild رو نصب کنی بعد به واسطه ی اون بر نامت رو هر طور که خواستی pack کنی اموزش اون هم روی سایت های تخصصی کامپیوتر هست .. با خود vb هم می شه ایسن کار رو انجام داد .. ولی قابلیت اون به پای installshild هم نمی رسه .اصلا" اگه نخواستی این کار ها رو انجام بدی ..رو هر کامپیوتری خواستی انجام بشه .vb6 رو روش نصب کن ..
                  راستی صحبت اقای alitarooshe رو در مورد جا به جا کردن ocx خیلی جدی نگیر جایی هم نگو :biggrin: .. چون این فایل ها باید رجیستر بشند ..و تا موقعی که vb6 رو نصب نکنی اصلا" نمی تونی ارتباطی بین اونها و برنامت برقرار کنی .÷س برو طرف installshilld
                  اما در مورد پروژه :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:
                  ما نزدیک به یک ماه در مورد این صحبت کردیم که برای این که ارتباطمون کمترین خطا رو داشته باشه از چه کریستال و از چه baud rate ایییییی استفاده کنیم و حتی من به شما در مورد ضریب خطا ی ارتباط در پروتکل ها ی ارتباطی مثل modbus-rtu صحبت کردم حالا شما برداشتی
                  اول اینکه از کریسنال داخلی استفاده کردی
                  دوم اینکه فرکانس کریستالت ضریب کاملی از baud ارتباطیت نمی ده
                  سوم اینکه برا فرستادن چهار دیتا اومدی از baud rate 19200 استفاده کردی که با اون کریستالت ضریب خطات چند برابر بشه



                  میدونم که اخرشم کار خودتو می کنی شما پسرا همتون همین طورید فکر می کنید همین کاری که می کنید اخر درسته
                  برا همین روش غیر اصولی رو هم بهت می گم
                  توی برنامه ی vb با یه تایمر کدت رو چند با بفرست
                  یا اصلا" چند با زیر هم دیتا رو بفرست این طوری

                  Private Sub Command2_Click()
                  MSComm1.Output = Chr(20)
                  MSComm1.Output = Chr(20
                  MSComm1.Output = Chr(20
                  MSComm1.Output = Chr(20
                  MSComm1.Output = Chr(20
                  MSComm1.Output = Chr(20
                  MSComm1.Output = Chr(20
                  End Sub
                  جواب می گیری
                  ولی بازم می گم باید ببینی اجل کجاست .. در مورد بر نامه میکرو هم اگه به من 5 تا اب نبات چوبی هم بدند اینطوری نمی نویسمش :biggrin:
                  در هر صورت پیرووز باشی
                  من فردا صبح سا عت 8 اخرین امتحانم رو میدم باید زود بخوابم
                  byeeeeeeeeeeee

                  دیدگاه


                    #84
                    پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                    سلام بچه ها
                    بهتر نیست برنامه ها را با vb.net کار کنیم و همچنین سخت افزار برنامه هارا هم برای بچه ها بگذاریم.

                    دیدگاه


                      #85
                      پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                      سلام
                      من میخوام یه برنامه مثل آقای احسان بنویسم ولی با این تفاوت که ارسال و دریافت اطلاعات بصورت text از طریق پورت کام و پرینتر هستش و میخوام پایه های پورت پرینتر رو کنترل کنم ( حالت ورودی و خروجی بودن آن )و همچنین بود ریت رو خودم انتخاب کنم و بتونم شماره پورت کام رو خودم انتخاب کنم/پروژه من از نظر ساختاری تقریبا شبیه پروژه ایشون هست اما قسمت انتخاب بود ریت و کنترل پایه های پورت پرینتر و انتخاب حالت ورودی و خروجی آنها رو مشکل دارم.دقیقا مثل هایپر ترمینال ویندوز به اضافه قسمت پرینتر که خدمتتون عرض کردم
                      ممنون میشم راهنمائی بفرمائید

                      :smile:
                      http://www.ecapic.ir/image/ECA-090927112544.png

                      دیدگاه


                        #86
                        پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                        سلام برای ارتباط با پورت lpt میتونید از PORT.DLL استفاده کنید.
                        برا ی ارسال از تابع OUTPORT استفاده کنید . دو آرگومان داره اولی شماره پوت و دیگری مقداری که باید نوشته بشه.شماره پورت برای LPT دو تا است یکی 378 و دیگری 278 هگز.
                        مثال
                        OPENCOM('LPT1:&#039
                        OUTPORT (&H378),2

                        دیدگاه


                          #87
                          پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                          سلام
                          ممنون فقط میشه یه کم بیشتر راهنمائی بفرمائید چون تا بحال با پورت پرینتر کار نکردم :redface:
                          http://www.ecapic.ir/image/ECA-090927112544.png

                          دیدگاه


                            #88
                            پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

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

                            دیدگاه


                              #89
                              پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                              سلام ببینید من میخوام برنامه ای بنویسم که بتونم نوع پایه پورت پرینتر رو مشخص کنم ،اینکه ورودی هست یا خروجی و ارسال و دریافت اطلاعاتی مربوطه رو از این طریق کنترلشون کنم.
                              ممنون
                              http://www.ecapic.ir/image/ECA-090927112544.png

                              دیدگاه


                                #90
                                پاسخ : ویژوال بیسیک و ارتباط کامپیوتر (پورتrs232) با میکرو

                                سلام

                                ... :mrgreen: والا شرمنده که کم سر میزنم ... کم جواب میدم

                                ولی در کل پورت پرینتر یه تا رجیستر داره یکی کنترلی یکی وضعیت یکی هم داده

                                توضیح کامل این پورت و پورتهای دیگه رو میتونید توی کتاب کنترل لوازم جانبی کامپیوتر (یه همچین اسمی داشت یه عکس زمین که ازش یه مدار اومده بیرون)

                                این کتاب رو بگیرید بد نیست چون خیلی اجمالی همه پورتها و اسلاتها رو توضیح داده کار راه میندازه

                                توی زبانهای سطح پایین و قدیمی مثل c و ... مستقیما رجیسترها رو مثل یه داده از جنس پوینتر میبینن و کار میکنن ولی توی برنامه های جدیدتر از یه سری dll استفاده میکنن من با inpout32 (اینم اسمش دقیق یادم نیست) استفاده کردم ... winio هم هست ... همشون عین همدیگه کار میکردن
                                به وبلاگم سر بزنید

                                دیدگاه

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