PDA

View Full Version : حرفه ای: در خواست از اساتیدی که در زمینه ارتباط با سخت افزار اطلاعات دارن



چینی ساز
چهارشنبه 19 آبان 1389, 08:42 صبح
با سلام
من می خوام بدون در کدام یک از پورت های کامپیوتر وقتی پورت ولتاژ دار شد کامپیوتر تشخیص می ده که اطلاعاتی رسیده است و برای دریافت باید آماده شد ؟
یا اینکه ولتاژی که به پورت داده می شود برای چه کاری بکار می ره؟
البته این سئوالات پیش زمینه است
ممنون از همه اونایی که جواب می دن ممنون و سپاسگزارم

mpmsoft
چهارشنبه 19 آبان 1389, 09:46 صبح
دوست عزیز شما باید یه چیزی به پورت بفرسی تا سیستم بفهمه
شما از ابزار MsComm می تونی برای ارتباط استفاده کنی که در لیست Component های وی بی هست
اگر جستجو کنی سورس کدهای زیادی توی همین سایت هست
دقیقا شما بگو مشکل کارت کجاست تا سریعتر به نتیجه برسی

چینی ساز
چهارشنبه 19 آبان 1389, 10:06 صبح
سلام
با سپاس از مدیر بخش ( از شما گله مندم چون چندین پیام برای شما فرستادم جواب ندادین)
ببینید بر ای هر ارتباطی یک ولتاژی برقرار میشه خواستم بدونم کار این ولتاژ چی هست
همون کامپونتی که شما گفتین دارم استفاده می کنم
می خوام بدونم کامپیوتر(این کامپونت ) از کجا متوجه می شه که سخت افزاری وصل شده و آماده ارسال دیتا می باشه
بنظر من از ولتاژ ارسالی متوجه می شه این درسته؟

vbhamed
چهارشنبه 19 آبان 1389, 11:12 صبح
سلام

وصل شدنش رو خودتون مي تونيد با كدي كه از سخت افزار ارسال مي كنيد بررسي كنيد
ولي موقعي كه اطلاعاتي دريافت بشه خاصيت InputBufferSize برابر ميزان اطلاعات دريافتي ميشه

چینی ساز
چهارشنبه 19 آبان 1389, 11:38 صبح
با سلام
آیا ولتاز هم بمعنای این هست که سخت افزاری وصل شده یا نه؟
چیطور میشه از وجود ولتاژ در پورت خبردار شد؟

mpmsoft
چهارشنبه 19 آبان 1389, 12:23 عصر
آقا شما گیر دادی به ولتاژا !!!

وصل شدنش رو خودتون مي تونيد با كدي كه از سخت افزار ارسال مي كنيد بررسي كنيد
ولي موقعي كه اطلاعاتي دريافت بشه خاصيت InputBufferSize برابر ميزان اطلاعات دريافتي ميشه

اینو خوندی اصلا !!!!

شما باید یه پیغامی برای پورت بفرستی تا کامپیوتر بفهمه و پیغامو دریافت کنه
دستگاه روشن می شه که خود به خود پورت نمی فهمه !!! (ولتاژی ارسال نمی شه)
شما باید برنامه داخل آی سی سخت افزارتو جوری بنویسی که بعد از روشن شدن دستگاه یه پیغام برای کامپیوتر بفرسته بگه من روشن شدم

چینی ساز
چهارشنبه 19 آبان 1389, 13:19 عصر
با سلام
پایه شماره 9 پورت کام هنگامی که ارتباط برقرار میشه ی ولتاژ بین 5 تا 12 باید بگیره؟
این ولتاژ برای چه کاری ؟
آیا هنگام دریافت یا ارسال دیتا اگر این پایه ولتاژ نداشت هیچ داده ای ارسال نمیشه؟

چینی ساز
چهارشنبه 19 آبان 1389, 13:30 عصر
ببینید
من به ولتاژ گیر ندادم ولی ماهیت کارم ایجاب می کنه که بدونم کار ولتاژ در پورت چیه و چطور میشه از بودن یا نبودنش خبردار شد؟
بعنوان نمونه: من می خوام بوسیله یک باتری 5 تا 12 ولت به پایه 5 و 9 پورت کام ولتاژ بدم بمحض اینکه ولتاژ به پورت وصل شد یک رکورد ذخیره کنه و وقتی هم تموم شد رکورد دیگه ای ذخیره کنه
با استفاده از mscomm32 تونستم انجام بدم ولی گاهی خطا می ده از رویداد زنگ استفاده کردم

mpmsoft
چهارشنبه 19 آبان 1389, 13:44 عصر
روش کارتون اشتباه است این چیزی که شما می خواهید شدنی نیست شما تا زمانی که دستوری برای کامپیوتر نفرستید نمی تونید براش با وی بی برنامه بنویسید

چینی ساز
پنج شنبه 20 آبان 1389, 07:51 صبح
با سلام
ولی من در حال حاضر با کمک پایه های 5 و 9 پورت کام اینکارو انجام دادم
وقتی وصل میشه یکه MSGBOX گذاشتم پیغام وصل می ده و وقتی قطع میشه پیغام قطع
مشکل من جائیی که می خوام بجای MSGBOX در اون لحظه شروع و پایان ولتاژ ساعت سیستم ذخیره کنه ولی چون نوسانات داره (احتمالا) برای هر شروع 10الی 20 رکرد و برای پایان هم همین مقدار ذخیره می کنه؟ نمی دونم چیکار کنم فقط ی رکورد بگیره وگاهی هم خطا می ده؟ (5%)

چینی ساز
پنج شنبه 20 آبان 1389, 07:55 صبح
ببینیید این نمونه اولیه هست
شما می تونینین با ی باطری 9 ولت تست کنید پایه منفی باتری به چایه 5 و پایه مثبت باتری به پایه شماره 9 پورت وصل کنید
اینم نمونه کدهای من:
Private Sub Form_Load()
With MSComm
.CommPort = 2 'Put your port
.Settings = "9600,N,8,1" 'And settings here
.Handshaking = comNone
.PortOpen = True
End With
End Sub

Private Sub MSComm_OnComm()
Select Case MSComm.CommEvent
Case comEvRing
MsgBox "RING!" 'Ring detected
Case Else
'Handle other events
End Select
End Sub

چینی ساز
پنج شنبه 20 آبان 1389, 07:55 صبح
این نسبتا خوب جواب می ده چون وقتی پیغام اومد نیازه به تائید داره

چینی ساز
شنبه 22 آبان 1389, 08:24 صبح
با سلام
کسی بیشتر از این مطلب نداره که جواب بده

vahid_d_0101
شنبه 22 آبان 1389, 11:16 صبح
فکر کنم با این سورس مشکلتون حل میشه
این سورس وقتی ولتاژ به پایه وصل شد یه پیغام میده و دیگه کاری نمیکنه تا ولتاژ قطع بشه و بعد اگر دوباره وصل شد یه پیغام میده

چینی ساز
شنبه 22 آبان 1389, 11:51 صبح
سلام
ممنون
چک کردم (قبلا ) نمی دونم چرا جواب نمی ده البته برای msgbox جواب می ده ولی برای کارای دیگه درست عمل نمیکنه برای پیغام چون منتظر تائید از طرف کاربر میشه یک بار پیغام میاد ولی اگه مثلا بخوایم بمحض وصل شدن ولتاژ تاریخ و ساعت سیستم در یک بانک ذخیره کند بیش از 20 رکورد برای وصل و همین مقدار برای قطع شدن ثبت می کنه
البته باید بگم Case Else اصلا عمل نمی کنه
شما خودتون تست کردین/
هر کی تست کرده و جواب گرفت خبرش ب بقیه بده البته msgbox نزارین یک رکورد ذخیره کنه

vbhamed
شنبه 22 آبان 1389, 15:58 عصر
سلام
msgbox جواب ميده چون وقتي نمايش داده ميشه تا دكمش فشرده بشه يك مدت زماني تاخير ايجاد ميشه
شما هم بايد اين تاخير رو خودتون ايجاد كنيد تا اطلاعات فرصت داشته باشه از پورت خونده يا در پورت نوشته بشه

چینی ساز
شنبه 22 آبان 1389, 16:12 عصر
با سپاس
من با ایجاد تایمر خواستم اینکارو بکنم ولی باز چندین رکورد ذخیره ی کنه
اینم دستورات تایمر
Private Sub Timer1_Timer()
If PB1.Value < 500 Then
PB1.Value = PB1.Value + 10
Else
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("STR_d") = Text1.Text
Adodc1.Recordset.Fields("STR_t") = Text2.Text
Adodc1.Recordset.Fields("tozih") = Label1.Caption
'Adodc1.Recordset.Fields("tIM") = Format(Now, "hh")
Adodc1.Recordset.Update
Label2.Caption = "ËÈÊ ÔÏ"
Timer1.Enabled = False
PB1.Value = 0
End If
End Sub
البته در مورد Case Else
a = 0
میشه توضیح بدین چرا این کار انجام نمیشه

vahid_d_0101
شنبه 22 آبان 1389, 16:21 عصر
Dim a As String
Private Sub Form_Load()
With MSComm
.CommPort =2 'Put your port
.Settings = "9600,N,8,1" 'And settings here
.Handshaking = comNone
.PortOpen = True
End With
a = 0
End Sub
Private Sub MSComm_OnComm()
If MSComm.CommEvent = comEvRing Then
If a = 0 Then
MsgBox "RING!" 'Ring detected
a = 1
End If
Else
a = 0
End If
End Sub

اینو تست کن احتمال زیاد درست شده من خودم اینجا پورت کام ندارم روی لبتاپ هستم
ببین مشکل زیاد ذخیره کردن این است که وقتی ولتاژ به پورت میدی تا زمانی که قطع کنی دائم داره مقدار به پورت ارسال میکنه و شما که دائم دارید دریافت میکنید به صورت بسیار زیاد مقادیر داخل رکود ذخیره میشه
حالا با این کد وقتی یه بار ولتاژ به پورت دادید دیگه از ذخیره کردن مجدد خود داری میکنه تا ولتاژ قطع بشه

چینی ساز
یک شنبه 23 آبان 1389, 08:39 صبح
با سلام
و سپاس از همه دوستان
جناب آقای vahid_0_0101 من این کد رو هم قبلا تسک کردم ولی جواب نداد البته تعدادش به 2 یا 3 رکورد رسید شما خودتون تست کردین؟
اگه می تونین بدون msgbox تسن کنید مثلا در یک بانک ساعت سیستم ذخیره کنه ببینید جواب می ده؟

vbhamed
یک شنبه 23 آبان 1389, 11:03 صبح
سلام

تايمر نياز نيست
بعد از هر دستور خواندن و نوشتن يك تاخير قرار بدين

چینی ساز
یک شنبه 23 آبان 1389, 11:48 صبح
میشه بیشتر توضیح بدین؟
تاخیر منظورتون چیه؟
چیطور؟

vbhamed
یک شنبه 23 آبان 1389, 14:46 عصر
سلام

مثلا اين

Dim t!
t = Timer
While Timer < t + .2
DoEvents
Wend

مجموعه دستورات بالا 2 دهم ثانيه تاخير ايجاد مي كنند

چینی ساز
یک شنبه 23 آبان 1389, 16:06 عصر
با سلام
این دستورات رو بعد از اینکه دستور ذخیره رکورد دادم باید نوشت
Private Sub MSComm_OnComm()
Select Case MSComm.CommEvent
Case comEvRing
If a = 0 Then
ADOC1.RE.....=(Time$)
Dim t!
t = Timer
While Timer < t + 0.2
DoEvents
Wend
a = 1
End If
Case Else
a = 0
'Handle other events
End Select
End Sub
به این صورت

چینی ساز
جمعه 28 آبان 1389, 11:11 صبح
با سلام
آیا برای ارتباط با پورت lpt - خواندن اطلاعات نیز از همین کامپونت mscomm32 باید استفاده کرد
اگه نمونه برنامه اای دارین بزارین که ما هم یاد بگیریم

چینی ساز
شنبه 06 آذر 1389, 10:48 صبح
سلام
من هر کاری کردم نتونستم
آخرین کدهایی که تست کردم این بود
میشه ببینید اشکال کارم کجاست

""""""""""""""""""""""""""""""""
Dim flag As Boolean
Private Sub Form_Load()
With MSComm
.CommPort = 2 'Put your port
.Settings = "9600,N,8,1" 'And settings here
.Handshaking = comNone
.PortOpen = True
End With
flag = False
End Sub

Private Sub MSComm_OnComm()
Select Case MSComm.CommEvent
Case comEvDSR
If flag = False Then
Label1.Caption = "ÔÑæÚ"
Timer1.Enabled = True
flag = True
Else
Label1.Caption = "ÔÑæÚ"
Timer2.Enabled = True
flag = False
End If
Case Else
'Handle other events
End Select
End Sub
Private Sub Timer1_Timer()
Text1.Text = shamsyDate(Date, True)
Text2.Text = Format(Now, "hh:mm:ss")
If PB1.Value < 500 Then
PB1.Value = PB1.Value + 10
Else
Adodc1.Refresh
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("STR_d") = Text1.Text
Adodc1.Recordset.Fields("STR_t") = Text2.Text
Adodc1.Recordset.Fields("tozih") = Label1.Caption
Adodc1.Recordset.Update
Label2.Caption = "ËÈÊ ÔÏ"
PB1.Value = 0
End If
End Sub
Private Sub Timer2_Timer()
Text1.Text = shamsyDate(Date, True)
Text2.Text = Format(Now, "hh:mm:ss")
If PB1.Value < 500 Then
PB1.Value = PB1.Value + 10
Else
Adodc1.Refresh
Adodc1.Recordset.MoveLast
Adodc1.Recordset.Fields("end_d") = Text1.Text
Adodc1.Recordset.Fields("end_t") = Text2.Text
Adodc1.Recordset.Fields("tozih") = Label1.Caption
Adodc1.Recordset.Update
PB1.Value = 0
End If
End Sub
"""""""""""""""""""""""""""""""""""

چینی ساز
شنبه 06 آذر 1389, 10:51 صبح
سلام
ببینید
من می خوام وقتی ولتاژ وصل شد یک رکورد اضافه کنه و تاریخ و ساعت ثبت کنه
وقتی هم قطع شد همون رکورد آخر قسمت پایانش رو ثبت کنه

چینی ساز
دوشنبه 08 آذر 1389, 11:56 صبح
سلام
چی شد
اساتید محترم کجا رفتین
اشکال کار من کجاست

چینی ساز
جمعه 12 آذر 1389, 09:18 صبح
چرا کسی دیگه جواب نمی ده
یا اشکال از سئوال منه؟

چینی ساز
جمعه 12 آذر 1389, 09:40 صبح
چرا کسی دیگه جواب نمی ده
یا اشکال از سئوال منه؟

vbhamed
شنبه 13 آذر 1389, 03:13 صبح
سلام

رفع مشكل شما نيازمند انجام اين عمل توسط خود آدم هست
دارم سعي مي كنم يك كابل آماده كنم تست كنم

چینی ساز
شنبه 13 آذر 1389, 15:11 عصر
با سلام
از اینکه شما رو به زحمت انداختم شرمنده و از اینکه زحمت می کشید تا من رو راهنمائی کنم از شما ممنونم

چینی ساز
یک شنبه 14 آذر 1389, 10:36 صبح
دوست عزیز
میشه در مورد پورت lpt هم اطلاعاتی بدین
مثلا روی پورت lpt چیطور میشه فهمید ولتاژ هست یا نیست (وصل /قطع ولتاز)

چینی ساز
جمعه 19 آذر 1389, 08:51 صبح
سلام دوست عزیز
هنوز پیدا نکردی؟
میشه چک کنی ببینی کدهائی که نوشام درست هستن یا نه؟

چینی ساز
شنبه 27 آذر 1389, 09:09 صبح
با سلام
بابا ما رو هم فراموش نکنید
حداقل از نظر کد نویسی بگین درست نوشتم یا نه

چینی ساز
دوشنبه 13 دی 1389, 09:21 صبح
سلام
چی شد
هنوز کابل جور نکردی یا ما رو فراموش کردین
بابا ببینین کدها درستن؟

vbhamed
دوشنبه 13 دی 1389, 11:33 صبح
سلام
راستش اين چند وقت سرم خيلي شلوغ شده مي بخشيد
سعي مي كنم در اولين فرصت

چینی ساز
دوشنبه 13 دی 1389, 16:55 عصر
سلام
ممنون ک جواب دادین
ولی من ی سئال چند بار تکرار کردم ولی متاسفانه جواب ندادین و اون سئوال اینه ک ایا کدهایی که نوشتم اصلا درستن؟

چینی ساز
شنبه 25 دی 1389, 15:27 عصر
یک سال گذشت
کسی نبود

چینی ساز
شنبه 25 دی 1389, 15:41 عصر
با سلام
یک سال گذشت
شرمنده اینو میگم قرار بود ی جوابی بدین ها