نقل قول: مشکل با مقایسه دو text
اگه text1 «کد» باشه و mscom1 «نویسی» باشه
توی تایمر، مقدار text1 میشه «کدنویسی»
بعد توی if اومدین چک کردین آیا «کدنویسینویسی» برابر text2 هست یا نه؟
منظورم اینه که مقدار مورد بررسیتون «نویسی» 2 بار آخرش اومده!
شما Breakpoint بذار روی خط اول کد توی تایمر، بعد ماوس رو ببر روی مقادیر ببین چه چیزایی تو حافظه دارن زندگی میکنن.
برای دیدن مقادیر چندتایی هم ماوس رو بکش روشون که Select بشن بعد ماوس رو نگه دار رو مقدار سلکت شده تا حاصل رو ببینی.
البته اونقدر ساده است که شاید تا الان جواب گرفته باشی ولی کدنویسی بدون Breakpoint و اجرای خط به خط ستمه!
نقل قول: مشکل با مقایسه دو text
نقل قول: مشکل با مقایسه دو text
اگه بتونم یک بار مقدار رو بخونم و داخل یک متغییر ذخیره کنم هم درست میشه اما مشکل اینجاست که مقدار رو میتونم بخونم اما بعد از استوپ کردن برنامه مقدار پاک میشه باید چیکارش کنم که این مقدار داخل یک محیطی باقی بمونه
نقل قول: مشکل با مقایسه دو text
با این عکسایی که گذاشتی فقط یه احتمال میتونم بدم. اینکه MSCom1.Input یه کاراکتر خاصی توش باشه که نه توی TextBox ها قابل نمایشه نه توی Tooltipهای VB موقع Trace کردن!
شما یه Len از دوتا مقداری که داری با عملگر = مقایسه شون میکنی بگیر. اگر طول متنشون هم برابر بود من دیگه حرفی ندارم؛ خود بیل گیتس باید جوابگو باشه :لبخند:
نقل قول:
باید چیکارش کنم که این مقدار داخل یک محیطی باقی بمونه
گمونم تنها راهش ذخیره توی فایل روی هارده.
نقل قول: مشکل با مقایسه دو text
طول رشته هام باهم یکی نیست !
چطور میتونم یکی کنمش ؟
نقل قول: مشکل با مقایسه دو text
پروژه کارش چیه؟
اگه طوری هست که فقط کاراکترهای الفبا (a..z A..Z) و عددی (0..9) رو لازم دارین به حلقه بذارین از اول تا آخر MSComm1.Input و کاراکترهای مورد نیاز رو توی یک متغیر رشته ای بذارین و اضافی ها رو نادیده بگیرین.
یا با داده های مختلف سعی و خطا کنید ببینید شاید همیشه یکی دو کاراکتر ثابت هستن که اول یا آخر Input اضافه میشن. اگه اینجوری بود با Mid$ درستش کن.
نقل قول: مشکل با مقایسه دو text
ببینید این کد ها کد های کارت های rfid هستن و هر کارتی یک کد خاص خودش رو داره و باید این کد ها ثبت و مقایسه بشن
الان کدی که من از دستگاه توی کامپیوتر از طریق سریال میگیرم داخل برنامه 10 کاراکتر هست اما برنامه میگه 12 تا هست !
قضیه چطوریه که 10 تای اون فقط نشون داده میشه ؟ چیکارش کنم که طول رشته رو 2تا کم کنم که عددش هم بهم نریزه
نقل قول: مشکل با مقایسه دو text
ببینید این دوتا کاراکتر اضافی چی هستن؟
اولشن؟
آخرشن؟
Dim MyInput As String
MyInput = CStr(MSComm1.Input)
For i = 1 To Len(MyInput)
MsgBox CStr(Asc(Mid(MyInput, i, 1))) + " : " + Mid(MyInput, i, 1)
Next
نقل قول: مشکل با مقایسه دو text
مدار و برد و برنامه دستگاه رو عوض کردم جواب میده - الان سه تا کارت رو بهش تعریف کردم درست میشناسه اما اول و آخر کد گرفته شده چند تا کد اضافی دارم چطور میتونم حذفشون کنم ؟
نقل قول: مشکل با مقایسه دو text
سلام
ممنونم مهندس که کمک کردین :تشویق:
پروژه رو راه انداختم
همه قسمت ها درست شد و درست کار می کنن فقط همین یه تیکه مونده بود که اونم راه افتاد
الان کارت میزنی عکس هم نشون میده :لبخند:
نقل قول: مشکل با مقایسه دو text
خواهش می کنم.
تبریک میگم :لبخندساده:
1 ضمیمه
نقل قول: مشکل با مقایسه دو text
نقل قول:
نوشته شده توسط
abbasalifix
سلام
من میخوام وقتی محتوای داخل text1 برابر کد 92900638B1 حالا یک مسیج باکس ok رو به من نشون بده
برای همینم اون کد رو داخل یک تکست قرار دادم و با محتوای تکست دیگه مقایسه کردم اما فرمان نشون داده نمیشه
یعنی کد ها مثل هم میشن اما فرمان if تشخیصش نمیده که بعدش بتونه مسیج ok رو نشونش بده
مشکل کارم کجاست
Private Sub Timer1_Timer()
Text1.Text = Text1.Text + MSComm1.Input
If Text1.Text + MSComm1.Input = Text2.Text Then
MsgBox "ok"
End If
End Sub
ضمیمه 126163
باسلام
خوشحالم که کارتون راه افتاد
اینم یه نمونه ساده تر :
نقل قول: مشکل با مقایسه دو text
سلام
از جهت اينكه براي بعدا به مشكلي برنخوريد موارد زير رو در نظر بگيريد
1 - با دستور text1 = text1 & MSComm1.input يك رشته از بافر دستگاه خونده ميشه و در تكست باكس ذخيره ميشه دفعه بعد نميشه اين دستور رو فراخواني كرد و انتظار داشت همون رشته قبلي رو بده، يكبار كه خونده شد از بافر پاك ميشه حتي اگر خوندنش اينطوري باشه كه با ماوس روش بريد
2 - معمولا آخر رشته خونده شده شامل كاراكترهاي vbCr و vbLf يا به اختصار vbCrLf (همون كاراكتر Enter و سطر بعد خودمون) هستن كه آخر رشته مياد ولي در ظاهر چيزي ديده نميشه، اما اگر شما محتويات تكست باكس رو نگاه ميكنيد ميبينيد به صورت خطوط جداگانه ظاهر شده و اين يعني آخر هر خط Enter خورده كه رفته سطر بعد البته اگر چند خط نداريد دليل ميتونه اين باشه كه خاصيت MultiLine تكست باكس شما True نيست، ضمنا دليل اينكه ظاهرا 10 كاراكتره اما تعداد رو 12 تا ميده هم همينه
3 با دستور زير ميتونيد vbCrLf رو حذف كنيد و مقايسه رو انجام بديد، عمل حذف در دو مرحله انجام شده چون بعضي مواقع فقط يكي از كاراكترهاي vbCr يا vbLf وجود داره.
Dim s$
s = MSComm1.input
s = Replace(s, vbCr, "")
s = Replace(s, vbLf, "")
If s = text2 Then
'.
'.
End If