كسي ميدونه چجوري بايد با پورت سريال تو vb.net :ار كرد؟
و انكه مد ارتباطي سنكرونه يا آسنكرون
كسي ميدونه چجوري بايد با پورت سريال تو vb.net :ار كرد؟
و انكه مد ارتباطي سنكرونه يا آسنكرون
سلام دوست عزیز.
بسیار ساده میتوانید اینکار را انجام دهید:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیددر مورد سوال دومتون یکم توضیح بدید اولین باره میشنوم.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یا علی.
اگر HandShake باز باشد ارتباط همزمان خواهد بود که معمولا پیشنهاد نمی شود.
اما اگر HandShake بسته باشد ماننن همان مثال علــــی ارتباط آسنکرون می شود.
ارتباط آسنکرون با رایانه مناسب تر است چون که طراحی نرم افزار ساده تر و افت سرعت در device متصل رخ نمی دهد. چون معمولا قطعه متصل شونده یک میکروکنترلر است سرعت بسیار کمتری نسبت به PC دارد و ارزش همزمانی با PC را ندارد. اما بین دو میکرو همزمانی قابل قبول تر است. البته همیشه طراح است که تصمیم می گیرد.
البته اتصال سنکرون در PC کمی متفاوت با میکرو است زیرا همزمانی آن توسط یک clk نیست . برای اطلاعات بیشتر بهتر است که اینترنت را بررسی کنید.
به نظر من بهتر است که ارتباط را آسنکرون کرده و خودتان یک CRC یا مشابه آن را بسازید و نرم افزاری بررسی کنید. کمی افت سرعت دارد اما نحوه ارتباط راحت تر خواهد بود.
موفق باشید.
Last edited by Msba; 18-11-2011 at 12:17.
هدف ارتباط با يه avr كه طبق گفته شما اگهhandshake بسته باشه ميشه asyncroneنوشته شده توسط Msba [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
فقط يه سوال اگه يه رشته مثل Press any key رو بخواي بفرستي با توجه به 8 بيتي بودن رجيستر ميكرو هر يه كاراكتر كه ارسال ميشه pc درخواست يه وقفه ميكنه يا نه اولين كاركترو كه ميفرسته وقفه فعال ميشه و تا وقتي close پورت و اجرا نكنه از وقفه خارج نميشيم
---------- Post added at 06:09 PM ---------- Previous post was at 06:06 PM ----------
اين درسته؟نوشته شده توسط عــــلی [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
SerialPort1.BaudRate = Val(ComboBox_Baud_Rate.Text)
SerialPort1.PortName = ComboBox_cOM.Text
SerialPort1.StopBits = StopBits.One
SerialPort1.Parity = Parity.None
SerialPort1.DataBits = 8
SerialPort1.Open()
Dim file_read_record As Integer
FileOpen(1, file_save_temp, OpenMode.Binary, OpenAccess.Read)
Do While Not EOF(1)
file_read_record += 1
Dim text_Out_serial As Byte
FileGet(1, text_Out_serial, file_read_record)
SerialPort1.Write(text_Out_serial)
Loop
FileClose(1)
SerialPort1.Write("FINISH")
SerialPort1.Close()
Catch ex As Exception
MessageBox.Show("پورت سريال يافت نشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
شما دو فرض برای خواندن دارید:
1- ایونت ( تعریف ایونت بسیار کم متفاوت با اینتراپت است)
2- پول
در راه اول شما هر اطلاعاتی که Stop Byte سخت افزاری داشته باشد فراخوانی می گردد. یعنی در هر بایت دریافتی یک بار ایونت فراخوانی می شود. پس شما در این راه نیازمند یک List یا یک Queue هستید تا مقادیر آمده را پیوسته کنید. مزیت این راه عدم مشغول شدن Thread اصلی است.
در راه دوم شما با یک Timer یا یک Thread دیگر در هر بازه ای مثلا 300ms پورت را بررسی می کنید ببینید بایتی برای خوانده هست یا نه بعد از مقادیر استفاده می کنید. در این راه شما از این موارد استفاده می کنید:
این C# هست من VB بلد نیستم اما اگر یکم دقت کنید متوجه می شوید.
از نظر من راه اول بهتر است.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یاد آورم شما می توانید یک علامت در نظر بگیرید که اگر آن دیتا ارسال شد و بعد آن علامت دیتا تمام شده است. این طوری می تونید پیوستگی اطلاعات ارسالی را تشخیص دهید.
موفق باشید.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)