דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
clickoneC

clickone

@clickone
אודות
פוסטים
3.4k
נושאים
114
שיתופים
0
קבוצות
0
עוקבים
15
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • רישום לצהרונים של פתחיה נכשל - יש למישהו מידע?
    clickoneC clickone

    אני מנסה לרשום את הילדה שלי לצהרון פתחיה, משום מה הוא באתר לפני המעבר לתשלום הוא מוציא שגיאה "לא נמצא מחיר לתשלום, נא לפנות למשרד"
    בטלפון לאחר הקלדת הסמל השיחה פשוט נופלת לפני המעבר לתשלום.
    (אני משער שבשניהם זה בגלל אותה הסיבה)

    שלחתי לפתחיה פנייה דרך הצור קשר באתר כבר מהצהריים ואין תגובה (אולי חופש?)
    החשש שלי הוא שזמן הרישום מוגבל ושלא תתמלא הכיתה (למרות שייתכן שלכאורה לכולם יש את הבעיה הזו)

    מישהו נתקל בזה?
    או למישהו יש רעיון נוסף איך לפנות אליהם?
    (האמת יש גם מצב לא קטן שהמתכנת שלהם אולי מסתובב כאן...)

    תודה

    גומלין - כללי

  • מהירות הזנת נתונים בdb בהרבה רשומות
    clickoneC clickone

    @chagold
    זה היה הכנסה לטבלה בצורה נקיה נטו?
    או שבדקת לדוגמא שהרשומה לא נמצאת כבר. (אם זה המצב אז זה הגיוני שככל שיהיו יותר נתונים לבדיקה יקח יותר זמן)

    יש אינדקסים מורכבים בטבלה? (גם גורם לפעמים להאטה בהכנסה)

    תכנות

  • הצעה לפתרון למכת הצינתוקים
    clickoneC clickone

    @nigun
    ככל שהשיחות מגיעות אליך כחברה, אתה יכול לזהות באופן אוטומטי תעועה שמגיעה כגל מחברה מסויימת, ללא קשר למספר המזוהה שלה (ואז הם ישלחו את השיחות בהבדל רנדומלי 😞 ולא עשינו כלום...)
    המודל שהצגת יכול להיות רעיון מצויין. חלקו כבר ממומש היום במרכזיות.

    הבעיה בלמכור כזה שירות לחברה מבחוץ שזה לא כזה פשוט להטמיע כזה דבר בחברה קיימת, כי זה לא עובד שם עם מרכזיות קלאסיות. (לא אומר שזה אפשרי, אבל זה הרבה יותר מורכב)
    ולכן הפיתרון הנכון הוא לייצא X סימים שלך שנמצאים מול המרכזיה שלך (גילוי נאות התחלתי בעבר לשבת על זה, ממתין כעת לאחד הספקים שלי), בכל מקרה הבעיה בזה היא המחיר שזה יעלה ללקוח הקצה.
    אני חושב שברגע שהקש"ג יירד, + הרפורמה הנוכחית של משרד התקשורת למפעילים, תהיה אפשרות לא מסובכת להפוך לMVNO שמספק כאלו שירותים בלי יותר מדאי בלגן, ואז אולי יותר פשוט.

    ואל תשכח שרגע אחרי שיוצא כזה מוצר לשוק עם כל ההשקעה זה יוצא אצל המתחרים...

    כמו שכתב @by6199 גם אני ראיתי פירסום של חברת סים כשר שיש להם כזה שירות, אז שווה לבדוק אצלו קודם.

    מובייל וטבלט

  • דוח נוכחות באקסס
    clickoneC clickone

    @OdedDvir
    בגלל שהמפריד הוא טאב ולא פסיק, אז האקסל לא יודע לזהות את זה אוטומטית.
    אפשר או לפתוח אקסל/אקסס ולייבא את הקובץ ולומר לו מפורש שהמפריד הוא טאב,

    או לחילופין לפתוח את הקובץ בעורך טקסט ולהוסיף בשורה הראשונה (הטריק הזה לא עוזר ולא נצרך באקסס)

    sep=	
    

    אחרי השווה לשים טאב
    קרדיט לידידנו @שואף שלימד אותי את הטריק הזה.

    משהו נוסף, באקסס צריך בייבוא של הקובץ הזה להגדיר קידוד עברית ווינדוס

    תוכנה

  • העתקת כתובות מייל
    clickoneC clickone

    @A0533057932 צודק. זה צריך להיות באנשי קשר נוספים
    אח"כ לסמן את אחד מהם בV
    ואז לעלות למעלה ולסמן הכל
    ללחוץ על ה3 נקודות ואז ייצוא

    89108c3b-951e-4e6b-af74-1a0d5a9d4908-image.png

    אינטרנט

  • העתקת כתובות מייל
    clickoneC clickone

    @MADI
    המייל שלכם בגימייל?
    בגימייל בד"כ כל מי ששולח לכם מייל נכנס לאנשי קשר שלכם.
    אז אפשר לייצא לקובץ CSV שנפתח באקסל את כלל האנשי קשר שלכם ואז להעתיק את עמודת כתובת הדואר האלקטרוני מהקובץ

    אינטרנט

  • המלצה על SERENITY או דומיו במקום אקסס
    clickoneC clickone

    @Y-Excel-Access אחרי התגובות של 2 התותחים דכאן ( @dovid + @OdedDvir ), אני מרשה לעצמי לכתוב גם כמה מילים, אני מניח שבחלק מהדברים אני אחזור על הדברים שכבר כתבו, אבל כאחד שעבר (ועובר בכל יום מחדש) את התהליך, אנסה לתת זווית נוספת. (האמת שאני חושש שיצא קצת מבולבל וארוך, אבל אשתדל שייצא ברור)

    להבנתי הגעת למדריך של סרניטי מפוסט שאני כתבתי. אכן סרניטי הדהימה אותי בהתחלה עם מחשבה שזה באמת כלי נפלא של הגירה למשתמשי אקסס.
    ייתכן שהיא באמת כזו, אבל די התייאשתי איתה, בגלל שהרבה דברים היו שם שבלוניים.

    הרעיון של סרניטי במילה אחת, הוא תיכנות הצהרתי.
    כלומר, אתה תגיד מה אתה רוצה שיקרה + תן את המודולים של הטבלאות וכו', והתבנית תבנה את כל מה שאתה רוצה כמעט מאפס בקלות.

    אחד האתגרים הגדולים של מתכנתי אקסס (וככל שהם כתבו יותר קוד הבעיה רק הולכת וגדלה), זה הפשטות של אקסס לעשות דברים, בעיקר בעניין של תגובה לאירועים + ריענון המסך בפשטות.
    יש עוד אלמנט שלדעתי בו אקסס ממש מאד חזקה, וזה מהווה קושי מאד גדול בהגירה, זה הפשטות של תיבות רשימה שנפתחות, ואז בשניה אחת קוד שבסך הכל עושה requery שזה אומר תרענן לי את הפקד ההוא על סמך הערך הנבחר.
    בנוסף, אחד הקשיים זה נקודת האבטחה, אם באקסס אתה יכול לפעמים לסמוך על זה שהסתרת פקד אז 99.9 שלא תהיה גישה אליו, בווב זה ממש לא ככה.

    ואז מגיע האתגר הגדול, שאנחנו מנסים לקחת את התפיסה של אקסס, לעולם של הווב, (ממש ליישם את כל התפיסה עצמה) בלי להבין שיש כאן תפיסה חדשה לחלוטין.

    [כמובן שאתה יכול להחליט שאתה עובד על WinForms אבל אישית אני חושב שלא כדאי. אם אתה מתחיל ללמוד, לך ישר על ווב (אגב בעבר היה לי קוד VBA שידע לקחת פרוייקט ולהמיר אותו כולל טפסים לwinforms אבל זה לא עשה את העבודה עד הסוף ובסוף התייאשתי...)]

    אז מה כן?
    אני אגיד לך את האמת, שעד היום אני לא יודע מה נכון 🙂 אבל אני אגיד מה אפשר.

    • אם יש לך המון זמן פנוי (אני מניח שלא, וזה חלק מהבעיה של כולם), לך ללמוד פריימוורק כמו אנגולר / VUE /ריאקט וכו'.
      לגבי התצוגה שתיראה יפה עם דשבורד וכו, אין לך לדעתי מה לדאוג בכלל, כי אחרי שתיכנס לבסיס, תגלה שיש ים תבניות באינטרנט בחינם / בעלות מאד זולה של כמה עשרות דולרים, כולל RTL והמון פקדים שכבר מוכנים.
      ולכן אני חושב שמה שהכי פחות אתה הכי צריך להיות מודאג זה היופי איך שזה ייראה.

    • אם אין לך הרבה זמן פנוי, (בעיקר לא כדי להתחיל ללמוד פריימוורקים חדשים עם עקומת למידה וכו') אבל מצד שני אתה רוצה פיתרון די מהיר, ואתה מתמודד טוב עם C# לדוגמא (גם אם לא יש כאן הרבה שישמחו לעזור), ואתה עדיין רוצה ללכת על ווב, ואני מניח שמה שמעניין אותך זה בעיקר CURD, (כמה הנחות יסוד... אני מקווה שלא פיפספתי אותך במשהו), אז הייתי מציע לך לשקול את בלייזור + GridMvc.
      במיני מחקר שעשיתי (בעיקר על עצמי אבל על עוד מתכנתי אקסס) יצא לי שאנחנו מפחדים משום מה מJS בצד הלקוח, אבל לכתוב קוד C# בצד לקוח משום מה זה פחות מרתיע (לא יודע למה...), ולכן, בשילוב של שני האלמנטים האלו, אתה יכול לקבל מערכת שנראית "בסדר" (לפחות להתחלה) + מערכת ניהול משתמשים די טובה, + יכולת ניהול טבלה עם חיפוש + עריכה + מחיקה וכו.
      ההגדרה של טבלת רשימה בGRID שהבאתי די פשוטה וקלילה, אני משתמש באובייקט דומה שלהם לMVC רגיל ומאד מרוצה.
      בפרוייקט הזה הם עשו את זה אפילו יותר פשוט וזריז.
      מה שקצת מלחיץ בבלייזור, זה שמייקרוסופט לא תנטוש אותו פתאם כמו שהיא נוהגת לעשות לפעמים.

    סליחה על האריכות,
    לא הצלחתי לכתוב כל מה שרציתי, ואני חושש שיותר עשיתי בלגן מאשר סדר.

    תכנות

  • SQL שאילתה תקועה... מה כן אפשר?
    clickoneC clickone

    @ש-ב-ח אמר בSQL שאילתה תקועה... מה כן אפשר?:

    נוסה, חזר אחרי 300ms

    אז מה מפריע לך להשתמש בJOIN במקום שאילתת משנה? זה די מהיר לפי איך שאתה מתאר....

    @שמואל4 אמר בSQL שאילתה תקועה... מה כן אפשר?:

    צריך לקחת בחשבון שהוספת אינדקס לטבלא בשימוש בעיקר כזו גדולה יכולה לקחת הרבה זמן - וזה כולל נעילה של הטבלא.

    צודק לגמרי.
    בכל מקרה אצלי באחד הפרוייקטים, באחת הטבלאות, עם כ50 מליון שורות, יש אינדקסים ובינתיים ב"ה עובד די טוב ומהיר. (האמת שאצלי זה MSSQL, וכאן נראה שזה MYSQL, אבל לדעתי לא אמורים להיות הבדלים משמעותיים)
    שווה בכל מקרה לנסות.
    ייתכן אם זה אפשרי שלפחות את הגדרת האינדקס הראשוני לא כדאי לעשות כשהDB בפרודקשיין.

    תכנות

  • SQL שאילתה תקועה... מה כן אפשר?
    clickoneC clickone

    @ש-ב-ח הקטע השני שהוצאת, והוצאתו גורמת לשאילתא לרוץ מהר, הוא בעצם שאילתת משנה, שגורמת לו לחפש על כל רשומה את ההתניה בטבלה meta_records, וזה הגיוני שלוקח לו זמן. (בעיקר אם יש בmeta_records הרבה רשומות)

    פתרונות אפשריים:

    1. לשים אינדקס בטבלה meta_records על השדות שאתה מפלטר, עדיף אינדקס אחד על כל 3 השדות ביחד.
    2. אם אתה מסנן בטבלת המשנה משהו קבוע, אז להוסיף עמודה בטבלה הראשית שתכיל כן/לא, ופשוט לעדכן את זה בשעת ההכנסה של הנתונים.
      אני מדגיש שהשיטה הזו לא נכונה מבחינת תיכנון נכון של DB (אחת הסיבות כי אתה יכול לחשב את זה, ואסור עקרונית לשמור נתון סטטי כשאתה יכול לחשב אותו), אבל במקרה של בעית ביצועים כזו אני אישית מאד בעד לשמור גם את הנתון סטטי ברשומה עצמה, ולא לחשב אותה כל פעם מחדש.
    3. אפשרות נוספת ששווה לבדוק (לא בטוח שזה אפשרי, אבל תנסה), זה לא לשים את החיפוש של הטבלה השניה כשאילתת משנה, אלא לחבר אותה כJOIN, ואז לסנן את כל מה שמתאים (ממילא אתה מחפש את מה שקיים ולא מה שחסר, כך שלכאורה ייתכן שאתה יכול להשתמש אפילו בINNER JOIN בלב שלם)
    תכנות

  • עזרה בזיהוי פורמט טלפוניה בלתי מוכר לי
    clickoneC clickone

    @dovid
    למרות כל הנסיונות שלי לחפש משהו על הפורמט הזה, לא מצאתי כלום בגוגל (בזה אני כמובן לא יותר טוב ממך 🙂 )
    הדבר המשמעותי ביותר הכי טוב שמצאתי בגוגל, היה השאלה הזו .....

    אתה יודע מה השם של המרכזיה?
    כי אז אולי אפשר לחפש את השם שלה + המילים cdr log

    מה מונע ממך לעבור בתוך המשרד פנימה למרכזיית אסטריק פשוטה ביותר?
    ככל שזה נשאר בגבולות המשרד בלבל חלק גדול מאד משאלת האבטחה (שהיא הבעיה הגדולה במרכזיות) מתייתר.
    ואני חושב שזה יפתח לך מליון אפשרויות חדשות של דברים שתוכלו לעשות שם, כולל חיתוכים מעניינים, אינטגרציות מול התוכנה שם ועוד
    ממליץ בחום

    תכנות

  • קבצי קול בעברית חינם
    clickoneC clickone

    @גמליאל
    מצאתי שכנראה לא צריך לעבוד כ"כ קשה, והשיטה הישנה עדיין עובדת, רק שהם לא משתמשים בה כנראה יותר בדף.
    פשוט לגשת לדף (שם את זה בכוונה בתגית קוד - בסוף הפוסט שם את זה כלינק)

    https://translate.google.com/translate_tts?ie=UTF-8&q=%D7%A9%D7%9C%D7%95%D7%9D,%20%D7%96%D7%94%20%D7%91%D7%93%D7%99%D7%A7%D7%94.&tl=iw&total=1&idx=0&textlen=15&tk=350535.255567&client=webapp&prev=input
    

    בפרמטר q לשים את המילים בעברית
    הפרמטר tl זה השפה

    לינק
    https://translate.google.com/translate_tts?ie=UTF-8&q=שלום, זה בדיקה.&tl=iw&total=1&idx=0&textlen=15&tk=350535.255567&client=webapp&prev=input

    תכנות

  • הו"ק באמצעות api
    clickoneC clickone

    @sholom
    נכון
    אבל ייתכן שאם יש לך חשבון בנדרים פלוס (שגובה דרך לאכארד)
    ייתכן ותוכל עם API להוסיף חיוב הו"ק ולתת לו מזהה טוקן
    (מצד שני בכזה מצד ייתכן שישר תוכל לתת לנדרים פלוס את המספר אשראי 🙂 )

    נ.ב. החיוב הקבוע (לרוץ בכל יום על הרשימה ולהעביר וכו) לא כזה קשה
    עיקר האתגר זה הו"ק שלא עוברות וכו' לפעמים אין טעם לכתוב לבד משהו שמישהו אחר כבר כתב

    אז לכאורה נשארנו עם שהאלה הראשונה שלך איזה מערכת חיצונית עושה את זה. (קשר [קהילות] כבר כתבתי שעושה בוודאות)
    מן הסתם החברים כאן שיש להם שליטה טובה בנדרים פלוס יוכלו לומר לך אם זה קיים גם בנדרים

    עריכה:
    מחיפוש בפורום נראה שאכן גם לנדרים יש אפשרות כזו ואז ההו"ק מנוהל שם וכו
    עיין כאן לדוגמא
    https://tchumim.com/post/129632
    עריכה 2:
    זה יותר ממוקד
    https://tchumim.com/post/137795

    תכנות

  • הו"ק באמצעות api
    clickoneC clickone

    @sholom
    מול איזה חברה אתה עובד באשראי?

    שים לב שבגדול אתה אמור לנהל את כל המערך לבד.
    ז"א, אתה מקבל טוקן שהוא מייצג כרטיס אשראי, וצריך לבדוק בכל יום למי יש חיוב ולהגיש אותו וכו'
    יש גם מערכות חיצוניות שעושות את העבודה מה שאכתוב כאן מתייחס יותר במצב שבו תחליט לממש את זה בעצמך.
    ייתכן מאד שתמצא שיותר נח שתוכנה חיצונית תנהל את זה עבורך ואתה רק תשלח לה את הפרטיםש אתה רוצה (לא ניסיתי את זה כ"כ עד היום, מה שאני התנסתי זה היה לממש את התהליך מול חברת האשראי מקצה לקצה)
    [היה פעם אחת בלבד שעשיתי את זה עבור לקוח, והמערכת החיצונית שעשתה את זה עבורם היתה קשר. ייתכן שגם לנדרים פלוס יש כזה API - שווה לבדוק]

    לגבי השאלות שלך:

    1. עקרונית בפלאכארד (מניח שגם באחרים) אתה יכול להקים טוקן גם בלי אייפריים אלא אתה מגיש בקשת API עם מספר כרטיס ותוקף, ומקבל טוקן.
      (אני לא נכנס כעת להיבט החוקי האם מותר כאשר אין לך תקן PCI - להערכתי כל מי שמשתמש בסליקת אשראי במרכזיה עושה את זה ללא התקן ממילא)

    2. לגבי בדיקה האם יש הו"ק, לכאורה תצטרך לנהל את זה בDB משלך, ואז השמיים הם הגבול

    3. אתה ממילא צריך לנהל את זה בDB בעצמך, אז פשוט אתה יכול לסמן האם ההוק פעילה או לא.

    תנסה להציץ על הדף הזה
    https://gateway20.pelecard.biz/services
    לדוגמא על הפונקצייה ConvertToToken
    היא מקבלת את הפרמטרים הבאים:

    
    {
     "terminalNumber": "0962210",
     "user": "peletest",
     "password": "XXXXXXX",
     "creditCard": "458045804580",
     "creditCardDateMmYy": "1224",
     "addFourDigits": "false"
    }
    

    ותחזיר לך (במידה ותשים שם משתמש וסיסמא נכונים) את הטוקן וכו

    עריכה:
    ייתכן שהדף הזה יהיה לך יותר נח (יש שם קצת יותר הסברים)
    https://gateway20.pelecard.biz/SandboxServices?selectedMethodId=97

    תכנות

  • קבצי קול בעברית חינם
    clickoneC clickone

    שימו לב רק שאם זה פרוייקט ציבורי מדאי יכול להיות כאן הפרת זכויות יוצרים של גוגל (לא יודע כמה הם תובעים על כאלו דברים, אני יודע על חברות אחרות שתובעים זכויות יוצרים על TTS שלא בתשלום בהפרות כאלו)

    תכנות

  • מתממשקים מול פלאכארד? יש לכם בעיה שבגללה צריך לשדרג את המסוף בימים האחרונים?
    clickoneC clickone

    תודה למגיבים
    המסוף להבנתי נשאר אותו דבר בדיוק. רק מגדירים לו EMV
    לפי התיעוד בשב"א מי שמשתמש בסליקה טלפונית בלבד אין עדיין החלטה והמצב נשאר כשהיה, ולכן אני לא מקבל את הטענה שכעת בדיוק חייבית "לשדרג" את המסוף.
    בנוסף (וחמור יותר) הם מחייבים לשדרג גם במסופי הו"ק, שהם לא יכול להיות בכלל EMV

    עיקר הטענה שלי על פלאכארד זה שהם יודעים שזה הולך להציף את כלל הלקוחות של בתי התוכנה ולא טורחים לעדכן אותם, כאשר בכל בעיה קטנה הם ישר שולחים מייל עידכון לבתי התוכנה.
    זה לא ראוי בכלל.
    ואני מוסיף על זה שבמקום מסויים יש תחושה שהסיפור כאן הוא רק איך להוציא עוד קצת כסף מלקוחות הקצה שלי, כי ישר הם שולחים לשיווק לשלם....
    ונניח שבאמת צריך לשדרג את המסוף לEMV (הרי מדובר בפעולה מאד מאד מורכבת, הם צריכים עם גרזן לחצוב בתוך הSSD עד שהוא יסכים למסוף להיות EMV.... וז פעולה כ"כ קשה שדורשת תשלום של 250 שח על כל מסוף....), אין שום סיבה שיצטרכו לשלם מחיר של מסוף חדש....

    לכן אני חושב שאפשר להתאגד כמה בתי תוכנה ביחד ולהעמיד אותם במקום (בתי תוכנה זה הדבר היחיד שמזיז להם)

    תכנות

  • מתממשקים מול פלאכארד? יש לכם בעיה שבגללה צריך לשדרג את המסוף בימים האחרונים?
    clickoneC clickone

    @מנחם הבנתי שתלוי אם המסוף מלפני 2019
    עדיין לא מובן לי אם זה מסוף הו"ק או רק של עסקאות טלפוניות למה צריך לשדרג אותו?

    תכנות

  • מתממשקים מול פלאכארד? יש לכם בעיה שבגללה צריך לשדרג את המסוף בימים האחרונים?
    clickoneC clickone

    בימים האחרונים אני מתחיל לקבל הצפה של טלפונים מלקוחות עם שגיאות כמו שגיאה 200 - שגיאה יישומית
    שגיאה שהמסוך נעול ועוד
    משיחה עם פלאכארד עולה שהמסוף נחסם וצריך לשדרג אותו בעלות של 250 שח.

    דיברתי איתם וניסיתי להבין, אם זה גורף למה הם לא עידכנו את בתי התוכנה, הם טוענים בתגובה שזה לא תלוי בהם אלא בחברת האשראי
    עדיין אני טוען, שהם יודעים שיש כזו בעיה רוחבית וכן באחריותם לעדכן את הלקוחות או לחילופין לפחות את בתי התוכנה.

    הם הצליחו כ"כ להרגיז אותי כעת בשיחה (תשובה כל הזמן שצריך לפנות לשיווק ולשלם וכו) במקום לענות בצורה ישירה על השאלה למה הם לא מעדכנים את בתי התוכנה (כשדיברתי איתם בפעם הראשונה והשניה אף אחד לא טרח לומר לי שזו בעיה רוחבית - הבנתי את זה רק כשאני רואה שזה משותף להרבה לקוחות) , עד כדי כך שאם יש כאן עוד כמה אני שוקל ללכת לחברה אחרת במאורגן רק על ההתנהלות הזו.

    מישהו נתקל בבעיה דומה?

    תכנות

  • תוכנת קופה רושמת בחינם
    clickoneC clickone

    @חוקר
    יש את SambaPos
    https://github.com/emreeren/SambaPOS-3
    שים לב שיש את הגירסה הישנה מעט חופשית לגמרי והיותר חדשה אני חושב שזה כבר בתשלום או רישיון מסויים.
    הממשק בעברית

    תוכנה

  • חנות שמוכרת מדפסות עם תמיכה
    clickoneC clickone

    @חוקר

    הקוד בגדול מגוגל... (רק הייתי צריך למצוא את הבאפר הנכון) - אני רואה שזה היה עם API של הווינדוס
    מצורף:
    מימוש:

                PrinterSettings settings = new PrinterSettings();
                Console.WriteLine(settings.PrinterName);
                OpenCashDrawer.OpenDrawer("");
    

    הקלאס הסטטי:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Text;
    
    namespace OpenCashDrawer
    {
        class OpenCashDrawer
        {
            public static void OpenDrawer(string printerName)
            {
                byte[] buffer = new byte[5]
                    {
                      (byte) 27,
                      (byte) 112,
                      (byte) 0,
                      (byte) 25,
                      (byte) 250
                    };
                RawPrinterHelper.SendStringToPrinter(printerName, System.Text.Encoding.UTF8.GetString(buffer));
    
            }
    
        }
    
         class RawPrinterHelper
        {
            // Structure and API declarions:
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
            public class DOCINFOA
            {
                [MarshalAs(UnmanagedType.LPStr)]
                public string pDocName;
                [MarshalAs(UnmanagedType.LPStr)]
                public string pOutputFile;
                [MarshalAs(UnmanagedType.LPStr)]
                public string pDataType;
            }
            [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);
    
            [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool ClosePrinter(IntPtr hPrinter);
    
            [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);
    
            [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool EndDocPrinter(IntPtr hPrinter);
    
            [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool StartPagePrinter(IntPtr hPrinter);
    
            [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool EndPagePrinter(IntPtr hPrinter);
    
            [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
            public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);
    
            // SendBytesToPrinter()
            // When the function is given a printer name and an unmanaged array
            // of bytes, the function sends those bytes to the print queue.
            // Returns true on success, false on failure.
            public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount)
            {
                Int32 dwError = 0, dwWritten = 0;
                IntPtr hPrinter = new IntPtr(0);
                DOCINFOA di = new DOCINFOA();
                bool bSuccess = false; // Assume failure unless you specifically succeed.
    
                di.pDocName = "RAW Document";
                // Win7
                di.pDataType = "RAW";
    
                // Win8+
                // di.pDataType = "XPS_PASS";
    
                // Open the printer.
                if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero))
                {
                    // Start a document.
                    if (StartDocPrinter(hPrinter, 1, di))
                    {
                        // Start a page.
                        if (StartPagePrinter(hPrinter))
                        {
                            // Write your bytes.
                            bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
                            EndPagePrinter(hPrinter);
                        }
                        EndDocPrinter(hPrinter);
                    }
                    ClosePrinter(hPrinter);
                }
                // If you did not succeed, GetLastError may give more information
                // about why not.
                if (bSuccess == false)
                {
                    dwError = Marshal.GetLastWin32Error();
                }
                return bSuccess;
            }
    
            public static bool SendFileToPrinter(string szPrinterName, string szFileName)
            {
                // Open the file.
                FileStream fs = new FileStream(szFileName, FileMode.Open);
                // Create a BinaryReader on the file.
                BinaryReader br = new BinaryReader(fs);
                // Dim an array of bytes big enough to hold the file's contents.
                Byte[] bytes = new Byte[fs.Length];
                bool bSuccess = false;
                // Your unmanaged pointer.
                IntPtr pUnmanagedBytes = new IntPtr(0);
                int nLength;
    
                nLength = Convert.ToInt32(fs.Length);
                // Read the contents of the file into the array.
                bytes = br.ReadBytes(nLength);
                // Allocate some unmanaged memory for those bytes.
                pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength);
                // Copy the managed byte array into the unmanaged array.
                Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength);
                // Send the unmanaged bytes to the printer.
                bSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength);
                // Free the unmanaged memory that you allocated earlier.
                Marshal.FreeCoTaskMem(pUnmanagedBytes);
                fs.Close();
                fs.Dispose();
                fs = null;
                return bSuccess;
            }
            public static bool SendStringToPrinter(string szPrinterName, string szString)
            {
                IntPtr pBytes;
                Int32 dwCount;
                // How many characters are in the string?
                dwCount = szString.Length;
                // Assume that the printer is expecting ANSI text, and then convert
                // the string to ANSI text.
                pBytes = Marshal.StringToCoTaskMemAnsi(szString);
                // Send the converted ANSI string to the printer.
                SendBytesToPrinter(szPrinterName, pBytes, dwCount);
                Marshal.FreeCoTaskMem(pBytes);
                return true;
            }
    
        }
    
    }
    
    
    חומרה

  • חנות שמוכרת מדפסות עם תמיכה
    clickoneC clickone

    @חוקר
    הדפסה של קובץ רגיל - PDF / וורד / דוח מאקסס. וכו'
    הדבר היחיד שנראה לי שהייתי צריך להגדיר זה שהרוחב הוא 80ממ, אחרת הוא הדפיס כל דף כמה פעמים (כל 80 ממ לרוחב הדף, ואז ה80ממ הבאים)
    וזה בשונה ממדפסת רגילה שבה אתה יכול להגדיר דף ברוחב מלא ואת התוכן שלך לשים באמצע ולהדפיס שיק צר לדוגמא)

    כמובן שאם תרצה לעבוד מול סט פקודות אני מניח שזה אפשרי - אבל לא התנסתי בזה כ"כ (רק התנסתי לשלוח פקודה כדי לפתוח את מגירת הקופה שהיתה משורשרת למדפסת)

    חומרה
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 170
  • 171
  • 6 / 171
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום