سؤال

لقد استخدمت عرض القطب (E POS) في تطبيق POS C #. لدي مشكلة رئيسيتين في ذلك، 1. لا يمكنني مسح العرض تماما. 2. لا يمكنني ضبط موضع المؤشر.

     I used some dirty tricks to do these.But I am not satisfied with that code.The following code i used.

رمز :-

class PoleDisplay : SerialPort
{
    private SerialPort srPort = null;

    public PoleDisplay()
    {
        try
        {
            srPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
            if (!srPort.IsOpen) srPort.Open();
        }
        catch { }
    }

    ~PoleDisplay()
    {
        srPort.Close();
    }

    //To clear Display.....
    public void ClearDisplay()
    {
        srPort.Write("                    ");
        srPort.WriteLine("                    ");

    }

    //Display Function 
    //'line' 1 for First line and 0 For second line
    public void Display(string textToDisplay, int line)
    {
        if (line == 0)
            srPort.Write(textToDisplay);
        else
            srPort.WriteLine(textToDisplay);
    }

}  
هل كانت مفيدة؟

المحلول

مشكلتك هي أنك تتصل بالكتابة لمسح السطر 1، والكتابة إلى مسح الخط 2.

هذا لا معنى له. الفرق الوحيد بين الأساليب هو أن Writeline يضيف تنفايا إلى النهاية. كل ما تفعله حقا هو إخراج هذه السلسلة:

  "                                  "\r\n

دون معرفة العلامة التجارية لعرض القطب الذي تستخدمه، لا أستطيع أن أخبرك بالطريقة الصحيحة للقيام بذلك، ولكن الطريقة التي تحاول القيام بها لن تعمل أبدا. تقبل معظم المحطات رموز الأحرف الخاصة لتحريك المؤشر، أو مسح الشاشة. هل وجدت مرجعا للمحطة التي تعمل بها؟ سيقوم معظم الشاشات بالمسح إذا قمت بإرسالها Chr (12).

كل ما جانبا، هناك مشكلة كبيرة في تصميم الفصل الخاص بك. يجب ألا تعتمد أبدا على المدمرين على الموارد المجانية في C #.

في C #، سيتم استدعاء المدمر عند جمع جامع القمامة الكائن، لذلك لا توجد طريقة حتمية لمعرفة متى سيتم جمع المورد (في هذه الحالة ميناء COM) وإغلاقه.

بدلا من ذلك، قم بتنفيذ الواجهة مثبتة على صفك.

هذا يتطلب منك إضافة طريقة للتخلص إلى صفك. هذا من شأنه أن يخدم نفس الغرض مثل التدمير الحالي الخاص بك.

من خلال القيام بذلك، يمكنك الاستفادة من ميزة مضمنة في اللغة في C # لإصدار مواردك عندما يخرج الكائن من النطاق.

using (PoleDisplay p = new PoleDisplay())
{
     // Do Stuff with p
}
// When the focus has left the using block, Dispose() will be called on p.

نصائح أخرى

إرسال رمز Hex 0C لمسح الشاشة، وهو يعمل لمعظم الشاشات

هنا نموذج التعليمات البرمجية:

byte[] bytesToSend = new byte[1] { 0x0C }; // send hex code 0C to clear screen
srPort.Write(bytesToSend, 0, 1);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top