כרטיסים מגנטיים באקסס
-
אתם בטוחים שרק הקוראים הסינים הפשוטים מוסיפים תוים בסוף.
אני גם בדקתי פעם קורא. כזה. והוא הוסיף תו בסוף כל שורה בכרטיס.
יש 3 שורות בכל כרטיס.
אני חושב שזה חיוני להוסיף את התוים האלו כדי לדעת באיזה שורה נמצא כל קטע.למשל שורה ראשונה בכרטיס אשראי מאפשרת לבצע עיסקא בלי שום פרטים אחרים.
אני לא יכול להגיד בודאות שרק הקוראים הסינים שעושים בעיות של הוספת תווים.
יכול להיות שיש עוד קוראים אבל לא ידוע לי.
אני לא ידע איזה קורא בדקת ואיזה חברה אבל לא נראה לי הגיוני שיש קוראים שמוסיפים תווים ובסוף שורה וישנם קוראים שאינם מוסיפים תווים - במצב כזה מה שיקרה בשוק אי תאימות של תוכנה.
כלומר אם הקוראים לא מוסיפים תוים לקריאת הסרט המגנטי ואני עובד עם קורא מסוים והוא מתקלקל לי ולאחר מכן אני קונה קורא אחר שמוסיף תווים תהיה לי בעיה של קריאת הנתונים מהקורא. , לכן כל הקוראים צריכים לתת תווים או לא לתת תויםתמיד שאני בדקתי הקוראים לא מתנו תווים פרט לקורא הסיני שקניתי בזמנו.
ולשאלת בכרטיס אשראי לפי מיטב זכרוני שאתה מקבל את כל המספר בשורה אחת ואתה מחלק אותו בקוד.
(אני לא זוכר אם זה רק מספר כרטיס או גם תוקף כרטיס - בטח אחי זוכר)את הנושא איני יכול לנסות לבדוק בשבוע הבא ע"י חברה שאני עובד איתם ולשאול אותם אם יש להם קורא כרטיסים
פורסם במקור בפורום CODE613 ב15/01/2015 20:49 (+02:00)
-
יש תוכנה שאיתה אפשר לקבוע בכל קורא כרטיסים איזה תווים להוסיף.
המחיר שהבאת למעלה קצת יקר והוא כמעט מגיע למחיר של קוראי כרטיסי אשראי עם הצפנה מובנית. ניתן להשיג קוראי כרטיסי אשראי ב 100-150 ש"ח בהרבה אתרים באינטרנט.
פורסם במקור בפורום CODE613 ב16/01/2015 12:22 (+02:00)
-
קשה לי להאמין, אולי windows יכול לדעת, אבל התוכנה שלך בוודאי שלו (אא"כ windows יודע, ואז באמצעות API תוכל לדעת). בכ"א אתה ממילא צריך אירוע בשביל ההקלדה הזאת, אז תעשה טופס שיש בו תיבת טקסט אחת בלבד, ובה יהיה רשום "נא להעביר ברקוד".
פורסם במקור בפורום CODE613 ב05/02/2015 16:39 (+02:00)
-
קשה לי להאמין, אולי windows יכול לדעת
מסתבר שווינדוס יודע, כמו שהוא יודע שהמכשיר מחובר אליו, השאלה היא איך אני מגיע לזה.
בכ"א אתה ממילא צריך אירוע בשביל ההקלדה הזאת, אז תעשה טופס שיש בו תיבת טקסט אחת בלבד, ובה יהיה רשום "נא להעביר ברקוד".
זה טופס שכשמעבירים את הכרטיס הוא עובר לרשומה המתאימה
כרגע צריך ללחוץ קודם על כפתור ששם אותו בפוקוס,
ואני רוצה שכל פעם שיעבור הכרטיס, גם אם הפוקוס בשדה אחר
התוכנה תדע שזה הגיע מהקורא ותפעל בהתאם.פורסם במקור בפורום CODE613 ב05/02/2015 16:59 (+02:00)
-
אז קניתי משהו סיני והוא מוסיף תווים..
"ף" בהתחלה (או ";" אם השיטת קלט היא אנגלית) ו"?" בסוף.יש אפשרות לדעת באמצעות קוד או תוכנה
האם ה"הקלדה" הגיעה דרך הקורא או דרך המקלדת הרגילה?אני אחלק את התשובה שלי לכמה חלקים:
מסתבר שווינדוס יודע, כמו שהוא יודע שהמכשיר מחובר אליו, השאלה היא איך אני מגיע לזה.
בדרך כלל וינדוס יודע איזה מכשירים מחוברים אליו אך קח בחשבון שקורא כרטיסים מחושב כמקלדת כך שוונדוס יודע שזה מקלדת (הוא אינו יודע שזה קורא כרטיסים)
הזמן שתבזבז על זה לא שווה את העבודהארכיטקט כתב:
בכ"א אתה ממילא צריך אירוע בשביל ההקלדה הזאת, אז תעשה טופס שיש בו תיבת טקסט אחת בלבד, ובה יהיה רשום "נא להעביר ברקוד".זה טופס שכשמעבירים את הכרטיס הוא עובר לרשומה המתאימה
כרגע צריך ללחוץ קודם על כפתור ששם אותו בפוקוס,
ואני רוצה שכל פעם שיעבור הכרטיס, גם אם הפוקוס בשדה אחר
התוכנה תדע שזה הגיע מהקורא ותפעל בהתאם.הפתרון היצירתי שאני יכול לחשוב עליו הוא:
כהקדמה אני מניח שאתה בונה מערכת כמו של קופ"ח שיש טופס שבו אתה מעביר כרטיס מגנטי וישר נפתח לך ה"תיק" של אותו לקוח (האם אני צודק? רק ההבדל בניך לבין קופת חולים היא שקופ"ח מנפיקה כרטיסים עם קידוד של ת"ז ואתה משתמש בכרטיסים קיימים שונים)
- קודם כל תפתח Notepad במחשב ותחבר את הקורא הכרטיסים שלך למחשב.
- תתחיל להעביר את כל סוגי הכרטיסים שיש לך בקורא (תקבל שורות שורות של הקריאות[כרטיסי קופ"ח,אשראי,מועדון]).
3.תראה איזה תווים הקורא מוסיף בתחילת שורה ובסוף שורה. - תרשום אותם לפניך באיזהו מקום.
- תבנה פונקציה מתאימה להסרת תווים בתחילה ובסוף השדה (ככה גם תוכל לתחזק את הקוד לתווים נוספים שהיו בהמשך)
(מקסימום אחי ClickOne יעזור כאן בכתיבת פונקציה מתאימה) - חבר את הפונקציה לאירוע BeforeUpdate (לפני עדכון)
זה טופס שכשמעבירים את הכרטיס הוא עובר לרשומה המתאימה
כרגע צריך ללחוץ קודם על כפתור ששם אותו בפוקוס,בקשר לפוקוס לשדה המצויין בעת פתיחת הטופס באירוע נוכחי תיתן פקודת פוקוס לשדה המתאים.
ואני רוצה שכל פעם שיעבור הכרטיס, גם אם הפוקוס בשדה אחר
התוכנה תדע שזה הגיע מהקורא ותפעל בהתאם.אני לא מאמין שיש "חיה" כזו שווינדוס ידע שאם אתה נמצא בפוקוס אחר ומעביר כרטיס הוא ידע לשנות את השדה.
גם בדוגמא של קופ"ח שנתתי לעיל הפקיד מגיע עם העכבר לשדה ושם אותו בפוקוס ואז מעביר כרטיס.נשמח אם תעלה תמונה של המסך אני יוכל לעזור לך יותר.
טיפ!!
אם אתה רוצה לחסוך ממך כאבי ראש עצומים תעשה את הדבר הבא:
תשיג קורא כרטיסים שלא עושה בעיות של הוספת תוים תבדוק אותו שהכל אצלך עובד כשורה ואת הקורא הזה תמכור ללקוח שלך בצורת חומרה (כך גם תרוויח עוד משהוא) והלקוח שלך ידע שאתה גם ספק החומרה שלו בדברים האלו ואתה בטוח שהחומרה שלך עובדת כמו שצריך ללא הוספת תוים.
כך עובדות כול החברות וקופ"ח יש להם יצרן תוכנה והוא בדרך כלל גם מספק את החומרה הקטנה הזו או שהם עובדים מול שיתוף פעולה עם יצרני חומרה ובודקים אותה מול התוכנה וממליצים ללקוח לקנות חומרה מחברה שנבדקה על ידם שהכל עובד כשורה.פורסם במקור בפורום CODE613 ב06/02/2015 11:29 (+02:00)
-
נראה לי אתה לא חייב פוקוס. אתה יכול לקלוט את כל ההקשות מקלדת. באירוע.
משהו כזה.
Dim MagTxt As String Private Sub Master_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress If AscW(e.KeyChar) = Keys.Enter Then '' end MagTxt = "" Else MagTxt &= e.KeyChar End If End Sub
פורסם במקור בפורום CODE613 ב07/02/2015 22:45 (+02:00)
-
אני מציע שנתחיל בזה שנחשב ביחד למה אתה צריך לדעת אם זה הוקלד ידנית או בהעברת כרטיס.
אתה מקבל את הנתונים שעברו בכרטיס והאירוע AfterUpdate מופעל מיד לאחר העברת הכרטיס. (כי הקורא מוסיף אנטר בסוף)
צריך לזכור שווינדוס מתייחס לזה כמו למקלדת.אני חושב שאפשר לדעת כמעט בצורה מאד פשוטה אם מי שהקליד את הנתון זה הקורא או האדם.
לקחת את הזמן בין הקלדת התו הראשון לזמן של התו האחרון. אם הוקלדו למעלה מX תווים בפרק זמן קצר, אז זה כנראה הקורא. אפשרות נוספת שיכולה להיות זה הדבקה של הנתונים. אבל אז אתה יכול לדעת מה נלחץ במקלדת ועי"ז לראות אם הייתה לחיצה של קונטרל + V או ללא לחיצה בכלל אלא ע"י קליק ימני עם העכבר.אני מציע שננסה לחשוב קודם למה אתה צריך בכלל לדעת איך הוקלדו הנתונים לתיבת טקסט?
פורסם במקור בפורום CODE613 ב07/02/2015 23:37 (+02:00)
-
תודה לכולם, בואו נעשה סדר.
מה שבנוי כרגע זה טופס עם כל הרשומות,
בלחיצה על "העבר כרטיס" הפוקוס עובר לשדה X
ובאירוע שלאחר עדכון השדה, הטופס עובר לרשומה על פי הקוד שבכרטיס.רציתי להוסיף שהמשתמש לא יהיה צריך ללחוץ על "העבר כרטיס" ולהעביר את הפוקוס ל X
אלא בכל פעם שהכרטיס עובר, התוכנה תדע שההקלדה של הקוד הגיעה מקורא הכרטיסים
ותעשה את הפעולה הנ"ל.נראה לי אתה לא חייב פוקוס. אתה יכול לקלוט את כל ההקשות מקלדת. באירוע.
משהו כזה.
Dim MagTxt As String Private Sub Master_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress If AscW(e.KeyChar) = Keys.Enter Then '' end MagTxt = "" Else MagTxt &= e.KeyChar End If End Sub
מעניין לבדוק אם זה עובד...
@zvinisim
הזמן שתבזבז על זה לא שווה את העבודה
בשורה תחתונה זה נכון, זה גם לא כזה נחוץ, אבל אם קיימת אפשרות למה לא.
פורסם במקור בפורום CODE613 ב08/02/2015 12:21 (+02:00)
-
@zvinisim
כהקדמה אני מניח שאתה בונה מערכת כמו של קופ"ח שיש טופס שבו אתה מעביר כרטיס מגנטי וישר נפתח לך ה"תיק" של אותו לקוח (האם אני צודק? רק ההבדל בניך לבין קופת חולים היא שקופ"ח מנפיקה כרטיסים עם קידוד של ת"ז ואתה משתמש בכרטיסים קיימים שונים)
- קודם כל תפתח Notepad במחשב ותחבר את הקורא הכרטיסים שלך למחשב.
- תתחיל להעביר את כל סוגי הכרטיסים שיש לך בקורא (תקבל שורות שורות של הקריאות[כרטיסי קופ"ח,אשראי,מועדון]).
3.תראה איזה תווים הקורא מוסיף בתחילת שורה ובסוף שורה. - תרשום אותם לפניך באיזהו מקום.
- תבנה פונקציה מתאימה להסרת תווים בתחילה ובסוף השדה (ככה גם תוכל לתחזק את הקוד לתווים נוספים שהיו בהמשך)
(מקסימום אחי ClickOne יעזור כאן בכתיבת פונקציה מתאימה) - חבר את הפונקציה לאירוע BeforeUpdate (לפני עדכון)
כן אתה צודק, זה מערכת כמו של קופ"ח, אבל לא עם כמה סוגי כרטיסים
רק סוג אחד עם קידוד ידוע המונפק מראש, בדיוק כמו בקופ"חפורסם במקור בפורום CODE613 ב08/02/2015 12:32 (+02:00)
-
בטופס יש שדות נוספים לעריכה? או שהכל שדות לתצוגה בלבד?
אתה יכול להשתמש באירוע שMAT הביא, רק על הטופס, או לחילופין לדאוג שתמיד שדה X יהיה בפוקוס - בהנחה ואין שדות נוספים של עריכה.דוגמא קלילה של הקובץ תעזור להבין יותר.
פורסם במקור בפורום CODE613 ב08/02/2015 20:20 (+02:00)