NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4238 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 2 از 4 نخستنخست 1234 آخرینآخرین
نمایش نتایج: از 21 به 40 از 66

موضوع: چگونگی شناسائی اتوماتیک پورت comو خواص آن در vb.net

  1. #21
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    دادا منظور من اینه که همون اول من از کجا بدونم که مقدار باودریت مبدلم چنده؟ (با توجه به اینکه برنامه ای فرستادی فقط مشخصات مبدل منو نشون نمیده)

    فرض می کنیم مبدل بطور پیشفرض باودریتش 19200 هست. حالا برنامه ی من داره برای پیدا کردن پورت صحیح یه مقدار رو می فرسته به سمت میکرو که اگه میکرو اونو دریافت کرد ارتباط برقرار میشه. حالا دو تا سوال پیش میاد :

    1. حالا من این داده ام رو دارم با باودریت 9600 می فرستم. (چون من نمی دونم باودریت پیشفرض چنده) در اینصورت حتی اگر پورت رو هم بصورت صحیح انتخاب کرده باشم بازم در سمت میکرو چیزی دریافت نمیشه.

    2. حالا فرض می کنیم که موفق شدم ارتباط رو برقرار کنم. حالا چطور خواص پورت COM رو overide کنم؟ مثلا باودریتشو بذارم روی یه مقدار جدید؟

    نمیشه یه جورایی از طریق Vandor ID و Product ID مبدل رو پیدا کنیم و بعدش خواصشو استخراج کنیم؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #22
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    دوست عزیز مقدار باود ریت مبدل با توجه به ارتباطش اتوماتیک تغییر میکنه!

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

    یعنی چی override میکنی؟؟؟ شما خاصیت باود ریت رو که تغییر بدی، اون پورت روی مقدار جدید ست میشه.

    vid و pid منحصر به فرده در محصولاتی که دارای usb هستند. حالا اگه همه مبدلهای دارای مقادیر منحصر به فرد باشند، میتونید vid , pid رو سرچ کنید، در صورت وجود بقیه کارها رو انجام بدید...

    به نظرم داری خیلی سختش میکنی... طبق روشی که گفتم خیلی راحت میتونی پورت رو پیدا کنی و باود ریت ست کنی! فقط یه کم مانور برنامه نویسی بده!

    اگه نه خوب سوییچ کن روی برنامه نویسی usb

  4. #23
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    دوست عزیز مقدار باود ریت مبدل با توجه به ارتباطش اتوماتیک تغییر میکنه!
    یعنی چی override میکنی؟؟؟ شما خاصیت باود ریت رو که تغییر بدی، اون پورت روی مقدار جدید ست میشه.
    چه جالب!؟ اینو نمی دونستم! یعنی فکر می کردم مثلا اگه باودریت مبدل روی 9600 باشه و از اونطرف برنامه ی ویژوال و برنامه ی میکرو روی 19200 باشن نمی تونن براساس پورت مبدل ارتباط برقرار کنن! فکر می کردم حتما باید برم از توی Device Manager باودریت مبدل رو بکنم 19200 !

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

    نمی دونستم دیگه دادا ، زدن نداره که! میرم ببینم چه می کنم.!؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  5. #24
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    اختیار داری رفیق... سرور مایی...

    باود ریت مبدل اتوماتیک تغییر میکنه! فقط میمونه باود ریت دستگاهت که باید طبق اون روشی که گفتم تغییر بدی...

  6. تشکرها از این نوشته :


  7. #25
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    VS2008 VB.Net
    کد:
    Imports System.IO.Ports
    
    Public Class Form1
    
        Private Function answer(ByVal sp As SerialPort)
            Dim okmsg() As Char = "B"
            sp.Write(okmsg, 0, okmsg.Length)
        End Function
    
        Private Function DetectSerialPort()
    
            Dim testport As New SerialPort
            Dim portnames() As String
            Dim bauds() As Integer = {4800, 9600, 19200, 38400, 76800, 115200}
            Dim readbuf As Byte
    
            portnames = SerialPort.GetPortNames()
    
            For Each portname In portnames
                For Each baud In bauds
                    testport = New SerialPort(portname, baud)
                    If testport.IsOpen = False Then
                        testport.ReadTimeout = 200
                        testport.Open()
                        Try
                            readbuf = testport.ReadByte()
                            If (readbuf = 65) Then
                                answer(testport)
                                'sleep 1 sec
                                testport.ReadExisting()
                                'clear buff
                                Return testport
                            End If
                            testport.Close()
                        Catch ex As TimeoutException 'not our port
                            testport.Close()
                            Continue For
                        End Try
                    End If
                Next
            Next
            Return Nothing
        End Function
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim sp As SerialPort = DetectSerialPort()
    
            If sp Is Nothing Then
                MessageBox.Show("our device not attached")
            End If
    
        End Sub
    End Class
    AVR-GCC
    کد:
        while (1)
        {
            USARTWriteChar(65);
            readbuf1 = USARTRead_USARTBuffer();
            if(readbuf1 == 'B')
                break;
        }
    *تنظیمات پرت باز شده، امکان override شدن در .net ندارن، پرت باید بست با تنظیمات جدید باز کرد، مگر اینکه buffer و پروتوکل و ... , همه اینها رو خودتون از صفر پیاده سازی کنین.

    *این روش تابع سخت افزار ارتباطی هم هست، قبلا هم گفتن با FT ها، بخصوص driver های قدیم مشکل داره، چون اگه buffer شون با باود و تنظیمات اشتباه شروع به پر شدن بکنه، تنها راه ریست کردن بود(درست یادم نیست چی بود مشکل)
    ویرایش توسط ama_trig : 15-06-2012 در ساعت 03:51

  8. کاربران : 2 تشکر کرده اند از شما ama_trig برای ارسال این پست سودمند:


  9. #26
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    اختیار داری رفیق... سرور مایی...
    فدات! من کوچیک همه ی بچه های انجمنم ، مخصوصا مدیرا!

    باود ریت مبدل اتوماتیک تغییر میکنه! فقط میمونه باود ریت دستگاهت که باید طبق اون روشی که گفتم تغییر بدی...
    اوناشو دیگه استادم! (البته جسارت نباشه) تو برنامه نویسی میکرو مشکلی نیست. الان دارم با timeout ور میرم!

    ama_trig دادا ، گل کاشتی بابا ، دمت گرم. به کمک شما و بهنام جان فهمیدم که باید چیکار کنم. واقعا از هر دو عزیز ممنونم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  10. #27
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    نوع داده ای توابعت رو تعیین کن...

    تابع answer چون بصورت sub routine نوشتی به جای function بنویس Sub

    این یک ثانیه تاخیر چیه؟ دقیقن نفهمیدم برای چی گزاشتیش؟

  11. تشکرها از این نوشته :


  12. #28
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    FT232 مشکل داره برای کار؟؟؟ اگه آره ایرادش چی هست ؟

    مبدل بهتر از ft چی داریم؟

  13. #29
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    نوع داده ای توابعت رو تعیین کن...
    حق با شماست، ولی ویژگی basic برای سرعتی نوشتن هست سطحش هم انقدر بالاست که خودش ... و کلا این سومین کدی هست که توی این زبون کامپایل کردم ) ، این هم کد اصلی نیست که قرار کسی استفاده کنه و فقط برای مفهوم کردن هست.

    تابع answer چون بصورت sub routine نوشتی به جای function بنویس Sub
    خیلی کارهای دیگه توی این قسمت باید انجام داد، فقط یه نمونه هست، در نهایت هدف اصلیم این بود که بشه firmware سخت افزار و توی این تابع برگردوند، تازه handshake ها و ... باید اینجا کار کنن ولی حق با شماست، این دو خط باید توی برنامه بود، تازه یه اشکال اساسی دیگه باید byref بود درسته که خودش ذاتی این طوریه

    این یک ثانیه تاخیر
    تا سخت افزار حتما از مد فرستادن پشت سر هم خارج شه، شما 1 ثانیه بعد، buffer و خالی کنین، همه چی اماده ارتباط باشه.

    FT232 مشکل داره برای کار
    خیر، فکر می کنم بهترین هست، اما برای این کار که هی baud رو عوض کنی(baud اشتباه)، ,بخصوص بقیه تنظیمات عوص کنی، چک کنی، اگه سخت افزار هی مشغول فرستادن باشه، یادمه توی ورژن های قدیمی من باهاشون مشکل داشتم. ولی در کل بین همه ی اینها، فکر می کنم با کیفیت ترین و قوی ترین هست.
    ویرایش توسط ama_trig : 15-06-2012 در ساعت 15:11

  14. #30
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    FT232 مشکل داره برای کار؟؟؟ اگه آره ایرادش چی هست ؟

    مبدل بهتر از ft چی داریم؟
    من تا حالا با سری FT کار نکردم. ولی از آی.سی PL2303 خیلی راضیم. البته توی این برنامه ای خصوصیات پورت هارو نشون میداد خواص اون پورتی که با این مبدل ایجاد شده بود رو نشون نمی داد. بخاطر همین می خوام یه دونه FT232 هم بخرم و با اونم تست کنم.

    ولی در کل PL2303 مبدل خوبی هست.

    این هم کد اصلی نیست که قرار کسی استفاده کنه و فقط برای مفهوم کردن هست.
    درسته ، من کامپایلش کردم ولی در عمل از قسمت testport.open() ایراد می گیره. اونم دقیقا وقتی که همه ی پورت هارو تست می کنه و می رسه به پورت COM8 (که همون مبدل باشه)

    دارم سعی می کنم که خودم یه برنامه بنویسم. نمی دونم که آخرش موفق میشم یا نه. آخه من به اندازه ی شما دو نفر وارد نیستم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  15. #31
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    ایراد چی هست؟ پیغام خطا؟
    با مقدار تنظیمات درست پرت باز کردین، اطلاعات بفرستین بگیرین،کار کنه توی vs؟
    منظورتون از خاصیت پرت ها چی هست؟ + کاربردش براتون چی هست؟

  16. تشکرها از این نوشته :


  17. #32
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    ایراد چی هست؟ پیغام خطا؟
    مهندس تا دیشب که پیغام می داد پورت نمی تونه باز شه چون توسط یه برنامه ی دیگه باز مونده. اما امروز که اجرا می کنم خطا نمیده در عوض اون پیغام آخری رو میده که میگه our device not attached در صورتیکه نباید به اینجا برسه.

    از اون طرف من یه کد خودم نوشتم ، ولی اصلا اجرا نمیشه! پیغام خطا هم نمیده. هرچی هست مربوط به if هست. لطفا ببینید این کد مشکلش چیه؟ البته هنوز اول کارم. فعلا تا اینجاشو جواب بگیرم...

    کد:
    Imports System.IO.Ports
    
    Public Class Form1
    
        Dim Entr As Char = Chr(13)
        Dim portnames() As String
        Dim bauds() As Integer = {9600, 57600}
        Dim serialdata As String
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            portnames = SerialPort.GetPortNames()
    
            For i As Integer = 1 To portnames.Length
    
                SerialPort1.PortName = portnames(i - 1)
    
                For j As Integer = 1 To bauds.Length
    
                    SerialPort1.BaudRate = bauds(j - 1)
                    SerialPort1.ReadTimeout = 200
    
                    If SerialPort1.IsOpen = False Then
    
                        TextBox1.Text = "Opening port..."
                        SerialPort1.Open()
                        SerialPort1.Write("MRK" + Entr)
                        SerialPort1.Close()
    
                    End If
    
                Next
    
            Next
    
        End Sub
    
    End Class
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  18. تشکرها از این نوشته :


  19. #33
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    با مقدار تنظیمات درست پرت باز کردین، اطلاعات بفرستین بگیرین،کار کنه توی vs؟ یعنی مستقیم برین سراغ تنظیمات درست و چک کنین ارتباط سالم هست با میکرو

    منظورتون از خاصیت پرت ها چی هست؟ + کاربردش براتون چی هست؟
    برنامتون درسته تا جایی که چک کردم، منظورتون از اجرا نمی شه، برای پرت مورد نظر، دستورات داخل if هست؟
    تازه یه نکته هم هست که منطقی تره که هر بار serialport جدید بسازین، البته نباید تاثیری داشته باشه.
    کد:
    SerialPort1= New SerialPort(portnames(i - 1),  bauds(j - 1))
    ویرایش توسط ama_trig : 15-06-2012 در ساعت 23:00

  20. #34
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    با مقدار تنظیمات درست پرت باز کردین، اطلاعات بفرستین بگیرین،کار کنه توی vs؟ یعنی مستقیم برین سراغ تنظیمات درست و چک کنین ارتباط سالم هست با میکرو
    اینو که همیشه تست می کنم مهندس ، توی هر برنامه ای این تست رو انجام میدم.

    منظورتون از خاصیت پرت ها چی هست؟ + کاربردش براتون چی هست؟
    منظورم خواص پورت بود ، مثل باودریت و ... که مشکلم در این قسمت رفع شد.

    منظورتون از اجرا نمی شه، برای پرت مورد نظر، دستورات داخل if هست؟
    یعنی وقتی برنامه رو اجرا می کنم کلا فرم بالا نمیاد و انگار نه انگار که اجرا کردم! اما اگه IF رو پاک کنم (یا دستورات داخلشو) برنامه اجرا میشه و فرم بالا میاد ولی تا اینجاش که فایده ای نداره ، اصل کار تیکه ی داخل if هست.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  21. #35
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    مرتضا جان کدت درسته. اما دلیل اینکه فرم بالا نمیاد و خروجی رو نمیتونی ببینی اینه که خاصیت WriteTimeOut پورت سریال رو تنظیم نکردی! همونطور که SerialPort1.ReadTimeout = 200 رو نوشتی، برای writetimeout هم بنویس...
    ویرایش توسط behnam6500 : 16-06-2012 در ساعت 12:18

  22. #36
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    خب پس، سر کدوم خط گیر میکنه، که فرم قفل می شه، از رویداد form_load خارج کینین، ببرینش توی رویداد یک دکمه، تک تک، خطها یکی یکی رو اجرا کنین، handshake هم روی xonxoff تست کنین تا مطون شین در سخت افزاری قفل نشه،writetimeout هم که دوست عزیز گفتن.
    فرض بر این هست که با برنامه درست، اطلاعات درست میره، حالا اینو امتحان کنید، baud دستی اشتباه تنظیم کنین، پرت باز کنین، تست کنین، ببندید، دوباره خط بعد با مقدار درست باز کنین.

  23. #37
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    ممنون از هر دو نفر که پیگیر موضوع هستید.

    الان دو مورد رو اضافه کردم و برنامه کار می کنه. 1. writetimeout و 2. try - catch

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

    کد کامل رو پیوست کردم.
    فايل هاي پيوست شده فايل هاي پيوست شده
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  24. تشکرها از این نوشته :


  25. #38
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    برنامه که درسته به ظاهر، سخت افزار باید دید + برنامش
    برنامه رو یه امتحان کنین، اگه بتونین، با اسکوب خروجی چک کنین، ببینین شاید برنامه درسته، اگه می تونین با سیستم مدرسه قدیم (RS232 + MAX232) یه امتحان کنین سخت افزار رو شاید این سری PL مشکل دارن.
    تازه error flag رو هم روی سخت افزار چک کنین، ببینین وضعیتش چطوره

    یه آزمایش کنین با ترمینال بدون این که سخت افزار ریست کنین، دوبار baud عوض کنین با یه دکمه ، توی pc هم این کار انجام بدین(البته از باود بیشتر به کمتر) ببینین هنوز کار می کنه، البته usb2com ریست نکنین
    دقیقا این مشکل نیست، چون baud وردی این ic ها گویا automatic ست می شه و بعد ست شدن هم عوض نمیشه، به محض این که اولین char می رسه. این حرف از این جا می گم که موقعی که با ترمینال درست حسابی baud ست می کنین ، می نویسه auto و تا زمانی که اولین baud درست تنظیم نشه کار نمی کنه مگه این که به هم بریزه.
    baud خروجیش اگه با baud ورودی فرق داشته باشه به هم می ریزه.


    FT232 امروز API هاشو تازه دیدم، گویا خیلی خیلی قوی تر از اون چیزی بود که فکرشو می کردم.
    Interact with FTDI chip - CodeProject

    بطور کلی هی baud چک کردن، عوض کردن، کار جالبی نیست، و اما یه چیز دیگه، می تونین کار بر عکس هم امتحان کنین، سخت افزار baud تشخیص بده این شکلی می شه نرمش بیشتری هم نشون داد.
    (char space اگه بفرستین، زمان یک بودن پین RX اگه اندازه بگیرین، می تونین baud تشخیص بدین.) تئوری
    یه چند تا سوال دیگه، اگه وصل نکنین سخت افزار رو، موقع باز کردن یا نوشتن روی usb2serial مگه گیر می کنه؟ 2 پست قبل نوشتین مشکل گیر کردن دارین) نمی دونم، ولی فکر نمی کنم write کردن گیر بندازه، مگه این که handshake استفاده کنین، که توی برنامتون handshake نیست.
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط ama_trig : 17-06-2012 در ساعت 00:47

  26. کاربران : 2 تشکر کرده اند از شما ama_trig برای ارسال این پست سودمند:


  27. #39
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    موقع باز کردن یا نوشتن روی usb2serial مگه گیر می کنه؟ 2 پست قبل نوشتین مشکل گیر کردن دارین) نمی دونم، ولی فکر نمی کنم write کردن timeout تولید کنه.
    اون گیر کردن بخاطر این بود که وقتی پورت COM2 یا COM4 باز بودن برنامه دچار مشکل میشد که این قسمت توسط دستور try - catch راه افتاد.

    برنامه رو یه امتحان کنین، اگه بتونین، با اسکوب خروجی چک کنین، ببینین شاید برنامه درسته، اگه می تونین با سیستم مدرسه قدیم (RS232 + MAX232) یه امتحان کنین سخت افزار رو شاید این سری PL مشکل دارن.
    اسکوپ که ندارم. پورت RS232 هم فعلا ندارم. سوکتش روی مادربرد هست ولی هنوز براش هدر نخریدم یا نساختم.

    تازه error flag رو هم روی سخت افزار چک کنین، ببینین وضعیتش چطوره
    این مورد از کجا قابل تست کردنه؟

    یه آزمایش کنین با ترمینال بدون این که سخت افزار ریست کنین، دوبار baud عوض کنین با یه دکمه ، توی pc هم این کار انجام بدین(البته از باود بیشتر به کمتر) ببینین هنوز کار می کنه، البته usb2com ریست نکنین
    با هایپر ترمینال که باید دوتا کانکشن بسازم. یکی با باودریت کمتر و یکی با باودریت بیشتر. اینجوری شرایط آزمایش نمیره زیر سوال؟

    چون baud وردی این ic ها گویا automatic ست می شه و بعد ست شدن هم عوض نمیشه، به محض این که اولین char می رسه. این حرف از این جا می گم که موقعی که با ترمینال درست حسابی baud ست می کنین ، می نویسه auto و تا زمانی که اولین baud درست تنظیم نشه کار نمی کنه مگه این که به هم بریزه.
    baud خروجیش اگه با baud ورودی فرق داشته باشه به هم می ریزه.
    در این مورد تردید دارم دادا! حداقل راجع به PL2303 !

    می تونین کار بر عکس هم امتحان کنین، سخت افزار baud تشخیص بده این شکلی می شه نرمش بیشتری هم نشون داد
    بنظرم این روش جالب نیست. زیادم وقت می گیره.

    من یه نظر دیگه دارم. ببینید من که همیشه باودریت میکروم روی 57600 هست و نیازی ندارم هیچوقت عوضش کنم. بنابراین باودریت پورت سریال برنامه رو می ذارم روی 57600 ، در این حالت میمونه فقط پیدا کردن پورتی که پورت مورد نظر ماست!

    سعی می کنم یه برنامه این تیپی بنویسم و تستش کنم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  28. #40
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    23
    تشکر
    4
    تشکر شده 16 بار در 11 پست

    پیش فرض

    نقل قول:
    تازه error flag رو هم روی سخت افزار چک کنین، ببینین وضعیتش چطوره
    این مورد از کجا قابل تست کردنه؟
    error flag باید datasheet نگاه کنین، اکثر UART های میکرو ها بیت error دارن

    کد:
    unsigned intUSART_Receive( void)
    {
    unsigned charstatus, resh, resl;
    /* Wait for data to be received*/
    while( !(UCSRA & (1<<RXC)) )
    ;
    /* Get status and ninth bit, then data*/
    /* from buffer*/
    status = UCSRA;
    resh = UCSRB;
    resl = UDR;
    /* If error, return -1*/
    if( status & (1<<FE)|(1<<DOR)|(1<<PE) )
    return-1;
    /* Filter the ninth bit, then return*/
    resh = (resh >> 1) & 0x01;
    return((resh << 8) | resl);
    }
    با هایپر ترمینال که باید دوتا کانکشن بسازم. یکی با باودریت کمتر و یکی با باودریت بیشتر. اینجوری شرایط آزمایش نمیره زیر سوال؟
    نه، پرت می بندین، توی اونیکی دوباره باز می کنین، فقط تنظیمات baud برای سخت افزارتون رو هم تغییر بدین.

    م. ببینید من که همیشه باودریت میکروم روی 57600 هست و نیازی ندارم هیچوقت عوضش کنم. بنابراین باودریت پورت سریال برنامه رو می ذارم روی 57600 ، در این حالت میمونه فقط پیدا کردن پورتی که پورت مورد نظر ماست!
    پس حل شد، حتی می تونین بعدش با برنامه baud رو عوض کنین، پیشنهاد می دم اول با 9600 شروع کنین، بعدش عوض کنین(هم سخت افزار و هم نرم افزار توسط نرم افزار مقدار baud شون یکی شه!

  29. تشکرها از این نوشته :


صفحه 2 از 4 نخستنخست 1234 آخرینآخرین

موضوعات مشابه

  1. ساخت چراغ اتوماتیک
    توسط espadana در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 11
    آخرين نوشته: 08-11-2013, 23:34
  2. شارژر اتوماتیک باتری اتومبیل
    توسط Ma3ood در انجمن الکترونیک
    پاسخ: 0
    آخرين نوشته: 23-09-2013, 12:46
  3. شارژر اتوماتیک
    توسط mapmap در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 13
    آخرين نوشته: 25-03-2013, 00:48
  4. برای زبان c++ و c از کجا می تونم طرز کار با پورتها رو یاد بگیرم؟
    توسط microweb در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 22
    آخرين نوشته: 30-05-2012, 14:23
  5. كليد پوش باتون 4 پايه
    توسط forghan در انجمن آموزش نرم افزارهای برق و الکترونیک
    پاسخ: 1
    آخرين نوشته: 08-06-2011, 15:02

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •