כרטיסים מגנטיים באקסס
-
הבנתי שכלתוכנה קוראת בסופו של דבר אחרת את הקידוד,
האם האקסס יקבל מהכרטיס הזה מספר "123456789" או איזשהו קידוד מורכב יותר?גם כאן התשובה מתחלקת לשתיים:
- יש קוראים שתקבל את המספר כך "123456789"
- יש קוראים שתקבל את המספר כך "123456789"
הכל תלוי בסוג הקורא.
מניסיוני הלא הרבה אך מכיר קצת את התחום אני מציע שתבדוק מול כרטיס של קופת חולים ותראה איזה קידוד אתה מקבל.
אם תקנה קורא אכותי ולא סיני פשוט לא תהיה לך בעיה. בדך כלל הבעיה תהיה בקוראים הסינים הפשוטים
יש כאלה איבי וכדו'
(בכרטיס קופת חולים צריך לקבל מספר תעודת זהות,תמיד אפשר לעשות טסטים עם כרטיסי קופ"ח או כל כרטיס מגנטי שיש לך [גם כרטסי אשראי זה טוב])בכל מצב אם הזמנת כרטיסים ואתה רואה שיש סימנים של "*" לפני ואחרי תוכל להסיר אותם ע"י קוד.
תשובתי מתאימה גם לכרטיס NFC ולקוראי ברקודים הם מקודדים אותו דבר ונותנים אותו תוצאה
(בקורא ברקוד אם אתה מייצר קוד ברקוד 39 בקובץ אקסל אתה חייב לשים "*" לפני ואחרי הקידוד)פורסם במקור בפורום CODE613 ב14/01/2015 00:40 (+02:00)
-
**עריכה:**אחי צביקה הקדים אותי.
אבל עדיין צביקה שים לב, הכוכבית מגיעה רק בברקוד, אבל היא לא חוזרת בחזרה, רק שם לא תדפיס את הכוכביות, הברקוד לא יזהה את הברקוד.
בקורא כרטיסים בד"כ הוא מחזיר 123456789
מה שהתכוונת, זה מה שיצא לנו בעבר בקורא הסיני, שהוא הוסיף תו מוזר בסוף.לתועלת, ובגלל שאין לי כח לבדוק כעת מה ההבדלים בין התגובה שלי לתגובה של אחי, אני משאיר כאן את התגובה שלי בשלמותה.
חברים, מדובר בסה"כ בכרטיסי חבר (בלי לזלזל ח"ו)- לא במאגר ביומטרי
@אבילגבי ה'תכנות', החברה שמדפיסה את הגרפיקה עושה גם את הקידוד,
הם כותבים "קובץ קידודים/מגנוט לפס מגנטי יתקבלו ע"י המזמין בטבלת אקסל"
אז שלחתי להם רשימה של מספרים פשוטים, וכאן אני שואל,
הבנתי שכלתוכנה קוראת בסופו של דבר אחרת את הקידוד,
האם האקסס יקבל מהכרטיס הזה מספר "123456789" או איזשהו קידוד מורכב יותר?התשובה בפשטות: כן!
שים לב (כבר כתבו ע"ז החברים לפני) שלא תיקח משהו סיני פשוט, כי אז הוא יוסיף לך תווים מוזרים בסוף, יהרסו לך את כל הקריאה. (לי קרה בעבר שלקחתי ביחד עם אחי משהו מסין, וזה עשה לי בסוף תווים מוזרים. השתמשתי בזה לאחד הפרוייקטים שהייתי צריך להביא גם את הקורא כרטיסים [מערכת בחירות :(] ואז פשוט כתבתי פונקצייה שתסיר את התווים המעצבנים בסוף.
אופן השימוש מאד פשוט: אתה צריך לדאוג שהשדה יהיה בפוקוס, ואז להעביר את הכרטיס, אח"כ אתה יכול להשתמש באירוע לאחר עידכון ולבצע איזה מניפולציה שאתה רוצה.
אופן השימוש זהה גם בברקוד, וגם אם אתה סולק באשראי ורוצה להעביר את הפס המגנטי, אתה יכול להעביר את כל מה שיוצא לך מהקורא.
ובעצם, כמו שאמר דוד, תחשוב ע"ז כעל "מקלדת מתוחכמת" שתחזיר לך בכל פעם סטרינג אחר.פורסם במקור בפורום CODE613 ב14/01/2015 00:43 (+02:00)
-
בעבר רכשתי אקדח בר קוד באקדח עצמו יש כמה אופציות (אקדח הכי פשוט שהיה) האם להוסיף תו מסוים וכן מה לעשות בסוף ""ההקלדה"" כגון אנטר, טאב וכו'
עבד על אקסס מעולה, פשוט מקלדת!
התכנות של האקדח נעשה ע"י קריאת בר קודים מסויימים מחוברת מצורפת.אז קניתי מיבואן שמתעסק בעיקר בבניית תוכנות לחנויות וכו'. אלון - 0523964926
פורסם במקור בפורום CODE613 ב14/01/2015 13:52 (+02:00)
-
אתם בטוחים שרק הקוראים הסינים הפשוטים מוסיפים תוים בסוף.
אני גם בדקתי פעם קורא. כזה. והוא הוסיף תו בסוף כל שורה בכרטיס.
יש 3 שורות בכל כרטיס.
אני חושב שזה חיוני להוסיף את התוים האלו כדי לדעת באיזה שורה נמצא כל קטע.למשל שורה ראשונה בכרטיס אשראי מאפשרת לבצע עיסקא בלי שום פרטים אחרים.
פורסם במקור בפורום CODE613 ב14/01/2015 14:17 (+02:00)
-
אתם בטוחים שרק הקוראים הסינים הפשוטים מוסיפים תוים בסוף.
אני גם בדקתי פעם קורא. כזה. והוא הוסיף תו בסוף כל שורה בכרטיס.
יש 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)