2010-03-15 14 views
14

मैं एक साथ डाल रहा हूँ सी # में की बिक्री (पीओएस) प्रणाली एक बुनियादी प्वाइंट एक रसीद प्रिंटर से प्रिंट और एक नकदी दराज खोलने की आवश्यकता है कि लेखन के लिए बेस्ट प्रैक्टिस। क्या मुझे माइक्रोसॉफ्ट प्वाइंट ऑफ सर्विस एसडीके का उपयोग करना है?एक पीओएस सिस्टम

मुझे लगता है कि इसके साथ आया था Windows ड्राइवर का उपयोग कर मेरी सैमसंग प्रिंटर के मुद्रण के साथ प्रयोग करना कर रहा है, और यह बहुत अच्छा काम करने के लिए लगता है। मुझे लगता है कि अन्य प्रिंटर विंडोज ड्राइवरों के साथ नहीं आ सकते हैं और फिर मैं फंस जाऊंगा? या क्या मैं जेनेरिक/टेक्स्ट ड्राइवर का उपयोग करने के लिए किसी भी प्रिंटर को प्रिंट करने में सक्षम हूं?

नकद दराज के लिए मुझे सीधे COM पोर्ट को कोड भेजने की आवश्यकता होगी जो मेरे साथ ठीक है, अगर यह मुझे सिस्टम पर OPOS ड्राइवरों को सेटअप करने में मदद करने की परेशानी बचाता है।

क्या मैं यहां गलत रास्ते पर जा रहा हूं?

+11

मैं आज भी बहुत सारे पीओएस सिस्टम के साथ काम करता हूं! – ChaosPandion

+1

पिछले 5 वर्षों में जारी किए गए प्रिंटर में विंडोज ड्राइवर नहीं होगा? – jmucchiello

उत्तर

0

बस एक त्वरित ब्राउज़ से एमएस पॉइंट-ऑफ-सेल सिस्टम विंडो एंबेडेड पर आधारित है जो वास्तव में प्रति इकाई कम लागत और छोटे विंडोज ओएस लाइसेंस प्राप्त करने का एक तरीका है। ऐसा लगता है कि पीओएस के लिए कुछ एपीआई विशिष्ट हैं, लेकिन आप खुद को रोल करना चाहते हैं, फिर भी आप शायद किसी भी तरह से विंडोज एम्बेडेड का उपयोग करना चाहेंगे। सुरक्षा शायद नौकरी होगी 1.

1

मैंने कभी भी आप जो पूछ रहे हैं उसके साथ प्रोग्रामेटिक रूप से व्यवहार नहीं किया है, लेकिन जब पीओएस सिस्टम की बात आती है तो मुझे कुछ अनुभव होता है जो आपकी मदद कर सकता है।

क्या आप मुद्रण के लिए और नकदी दराज के लिए क्या हार्डवेयर आप के साथ काम कर रहे हैं पर बहुत निर्भर कर रहे हैं। और वहाँ चौड़ा हार्डवेयर की विविधता है।

मैंने देखा है कि प्रत्येक पीओएस सिस्टम में, हर कल्पनीय रसीद प्रिंटर और नकद दराज के लिए कई सारे ड्राइवर हैं, इसलिए जब तक कि आप एक पूर्ण उड़ा प्रणाली विकसित नहीं कर रहे हैं, बस उस विशिष्ट हार्डवेयर पर ध्यान केंद्रित करें जिसे आप जा रहे हैं साथ काम करना फिर भी, अपने कोड को अच्छी तरह से कारक करने का प्रयास करें ताकि आप रणनीति पैटर्न के लाभ को अधिकतम कर सकें। यदि आप एक से अधिक प्रकार के डिवाइस के साथ काम कर रहे हैं, तो आप इसे इस तरह कार्यान्वित करने के लिए बाद में धन्यवाद देंगे।


मुद्रण के लिए, वहाँ प्रिंटर के 3 मौलिक प्रकार आप का सामना कर सकते हैं:

  1. रसीद प्रिंटर केवल प्रिंट पाठ (पुराना, लेकिन अभी भी चारों ओर) कर सकते हैं
  2. रसीद प्रिंटर ग्राफिक्स प्रिंट कर सकते हैं
  3. एक मानक प्रिंटर मुद्रण 8.5 "x 11" पूरे पृष्ठ के चालान/क्रेडिट मेमो (आसान, 'nuff ने कहा)

मुझे विश्वास है कि, यदि नहीं, तो आधुनिक रसीद प्रिंटर श्रेणी # 2 में आते हैं, लेकिन आप श्रेणी # 1 से प्रिंटर का उपयोग करके विरासत प्रणाली में भाग सकते हैं।

के लिए श्रेणी # 2, आप मानक नेट मुद्रण इंटरफेस का उपयोग करने में सक्षम होना चाहिए। एकमात्र मुद्दा उचित समय पर काटने की व्यवस्था (अगर सुसज्जित) को सक्रिय करने के लिए एक नियंत्रण कोड भेज सकता है; या, प्रिंटर ड्राइवर स्वचालित रूप से प्रिंटिंग एल्गोरिदम में निर्दिष्ट पेपर लंबाई के आधार पर ऐसा कर सकता है। दोबारा, मैंने कभी कोशिश नहीं की है, लेकिन अगर आपके पास रसीद प्रिंटर तक पहुंच है, तो आप जल्दी से इस सामान को समझने में सक्षम होना चाहिए।

यदि आप एक ऐसे ग्राहक से बात कर रहे हैं जिसके पास श्रेणी # 1 में प्रिंटर है, तो आप एक अच्छा तर्क दे सकते हैं कि श्रेणी 2 में नया प्रिंटर खरीदने के लिए यह महंगा होगा, इससे आपको भुगतान करना होगा अपने मौजूदा हार्डवेयर पर प्रिंट करने के लिए एक मृत अंत ड्राइवर विकसित करने के लिए।


नकदी दराज के लिए, मैं प्रिंटर के साथ कम से कम परिचित हूँ, लेकिन मैं जहाँ तक संचार और हार्डवेयर व्यवस्था के रूप में दो विकल्पों में से जानते हैं:

  1. प्रिंटर के माध्यम से एलपीटी बंदरगाह के माध्यम से संलग्न करता है। (केबल चेन: कंप्यूटर -> प्रिंटर -> नकद ड्रॉवर)
  2. किसी भी COM/LPT पोर्ट या शायद एक आधुनिक में यूएसबी से सीधे कंप्यूटर से जुड़ा हुआ है।

पहली तरह, प्रिंटर पोर्ट (जो प्रिंटर उम्मीद है कि ध्यान न दें और न रसीद कागज की एक पूरी रोल थूक से बाहर हैं) के लिए नियंत्रण कोड भेजकर संचालित जबकि दूसरे के लिए आप COM पोर्ट करने की आवश्यकता होगी संचार सामग्री किसी भी मामले में, नियंत्रण कोड हार्डवेयर-निर्भर हैं। अधिकांश समय वे उपयोगकर्ता मैनुअल में पाए जाते हैं, लेकिन कभी-कभी तकनीकी लेखक उस दिन विशेष रूप से बुरा महसूस कर रहे थे, और आपको ऑनलाइन खुदाई करना होगा।

6

यह शायद आप के लिए क्या देख रहे थे करने के लिए एक अलग जवाब

जब "बाहरी इंटरफेस" (उदा प्रिंटर, नकदी ड्रॉ आदि) हमेशा अमूर्त चीजों के साथ काम कर रहा है (!) ...। आप शायद रणनीतियों को लागू करना चाहते हैं - Pattern Strategy

public interface ICashDrawer 
{ 
    void Open(); 
} 

प्रदान कार्यान्वयन:

आप नकद ड्रॉ के लिए एक इंटरफ़ेस बनाने

  • एक रणनीति एक वर्ग कॉम का उपयोग करता है खोलने के लिए है आकर्षित
  • एक और बात है एक वर्ग के रूप में सरल जो Debug.WriteLine कॉल करता है, इसलिए विकास के दौरान आपको अपने पीसी से जुड़े नकद ड्रा की आवश्यकता नहीं है

उदा।

public interface IRecieptPrinter 
{ 
    bool Print(object someData); 
} 

तो आप एक या अधिक कार्यान्वयन बनाने:

public class ComPortCashDrawer : ICashDrawer 
{ 
    public void Open() 
    { 
     // open via COM port etc 
    } 
} 

public class DebugWriterCashDrawer : ICashDrawer 
{ 
    public void Open() 
    { 
     Debug.WriteLine("DebugWriterCashDrawer.Open() @ " + DateTime.Now); 
    } 
} 

फिर प्रिंट करने के लिए आप एक प्रिंट इंटरफ़ेस जो डेटा लेता है।

  • बेसिक प्रिंटर
  • विशेष लेबल प्रिंटर
  • एक पाठ आधारित एक है कि एक फाइल करने के लिए बचाता है ...

उदा

public class BasicRecieptPrinter : IRecieptPrinter 
{ 
    public bool Print(object someData) 
    { 
     // format for a basic A4 print 
     return true; // e.g. success etc 
    } 
} 

public class SpecificXyzRecieptPrinter : IRecieptPrinter 
{ 
    public bool Print(object someData) 
    { 
     // format for a specific printer 
     return true; // e.g. success etc 
    } 
} 

public class PlainTextFileRecieptPrinter : IRecieptPrinter 
{ 
    public bool Print(object someData) 
    { 
     // Render the data as plain old text or something and save 
     // to a file for development or testing. 
     return true; // e.g. success etc 
    } 
} 

एसडीके के संबंध में, यदि आप पाते हैं ट्रैक नीचे आप किसी कारण के लिए इसकी आवश्यकता आप SDK का उपयोग कार्यान्वयन लिखें। समय के साथ आप विभिन्न बाहरी उपकरणों के साथ इंटरफ़ेस के कई तरीकों से समाप्त हो सकते हैं। ग्राहक को एक नया नकद ड्रा एक दिन इत्यादि मिल सकता है आदि

क्या यह स्पष्ट है कि यदि आप चाहते हैं तो मैं इसका मतलब समझ सकता हूं लेकिन आपको शायद मेरा बहाव मिल जाए।

आपका एप्लिकेशन सेट ही ऊपर स्टार्टअप पर संबंधित कार्यान्वयन के साथ, आप के रूप में अच्छी Dependency injection पर एक नज़र लेने के लिए चाहते हो सकता है और यदि आप प्रकार का समाधान करने के container का उपयोग चीजों को आसान मिल जाएगा।

var printer = container.Resolve<IRecieptPrinter>(); 

पी :-)

0

रसीद प्रिंटर नियंत्रित करने के लिए सीधे, ESC/POS commands पर पढ़ें। ये आदेश आपको रसीदों पर नकद ड्रॉवर खोलने और बारकोड और छवियों को प्रिंट करने की अनुमति देंगे।

हालांकि, अपने सी # का उपयोग कर के रूप में, यह शायद आसान Microsoft Point of Service class library उपयोग करने के लिए हो सकता है।

संबंधित मुद्दे