markwhite1 Ответов: 1

Удар ящика принтера Epson TM-T88V


Привет,
У меня есть кассовый ящик детали как показано ниже :

Цитата:
Модель: D41SRB
АРТИКУЛ: D41SRB
Электронный Кассовый Ящик Черный 16",
Ролик, 24V Epson STD RJ11, нержавеющая передняя часть
Билл 5/5 Монет
Стальной корпус 1 мм
Два дополнительных кронштейна внутри верхней части корпуса для дополнительной прочности


Он связан с
Цитата:
Квитанция EPSON TM-T88V
через RJ11 подключается к принтеру.
Как я могу открыть этот ящик из моего приложения C# POS, когда совершается продажа? Я проверил ящик из предпочтения принтера, чтобы открыть его после печати, он работает нормально.

Что я уже пробовал:

Я попробовал написать код, как было сказано ЗДЕСЬ Это дало мне ошибку порт закрыт . Поэтому я изменил его на :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace cashdrawertest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private SerialPort serialPort1 = new SerialPort();

        public void OpenPort()
        {
            //serialPort1.PortName = "COM1";
            serialPort1.PortName = "ESDPRT001";
            serialPort1.Encoding = Encoding.ASCII;
            serialPort1.BaudRate = 38400;
            serialPort1.Parity = System.IO.Ports.Parity.None;
            serialPort1.DataBits = 8;
            serialPort1.StopBits = System.IO.Ports.StopBits.One;
            serialPort1.DtrEnable = true;
            try
            {
                serialPort1.Open();
            }
            catch (Exception ex)
            {
                serialPort1.Close();
                serialPort1.Open();
            }
//            serialPort1.Open();
        }

        public void InitializePrinter()
        {
            serialPort1.Write(Char.ConvertFromUtf32(27) + char.ConvertFromUtf32(64));
        }

        public void OpenDrawer()
        {
            serialPort1.Write(char.ConvertFromUtf32(27) +
               char.ConvertFromUtf32(112) +
               char.ConvertFromUtf32(0) +
               char.ConvertFromUtf32(5) +
               char.ConvertFromUtf32(5));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            OpenDrawer();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            serialPort1.PortName = "COM1";
            //serialPort1.PortName = "ESDPRT001";
            serialPort1.Encoding = Encoding.ASCII;
            serialPort1.BaudRate = 38400;
            serialPort1.Parity = System.IO.Ports.Parity.None;
            serialPort1.DataBits = 8;
            serialPort1.StopBits = System.IO.Ports.StopBits.One;
            serialPort1.DtrEnable = true;
            try
            {
                serialPort1.Open();
            }
            catch (Exception ex)
            {
                serialPort1.Close();
                serialPort1.Open();
            }
        }
    }
}


Я проверил порт в разделе свойства принтера для него есть ESDPRT001
Цитата:
Квитанция EPSON TM-T88V


И снова он говорит то же самое: порт закрыт. Так что, пожалуйста, помогите. Спасибо

1 Ответов

Рейтинг:
0

OriginalGriff

Поставьте точку останова на первой строке вашего OpenDrawer метод и запустите свое приложение в отладчике. Проверьте состояние объекта SerialPort при попадании в точку останова.

Но... две вещи:
1) Когда вы копируете код наугад из интернета, неплохо подумать о том, что вы делаете - вы этого не делаете, иначе у вас не было бы такого же кода, повторяемого в вашем компьютере. Load обработчик событий и ваш OpenPort метод, который вы никогда не вызываете.
2) Когда вы копируете код из интернета, вы можете захотеть скопировать его весь - и вызвать InitializePrinter метод в какой-то момент.
3) Когда вы копируете код из интернета, очень хорошо подумать об этом и проверить, что COM - порт, который вы пытаетесь использовать, на самом деле подходит для вашего принтера-COM1 может быть не тем портом. Всегда проверяйте связь с помощью терминальной программы, такой как HyperTerminal, прежде чем вы даже начнете писать код, чтобы убедиться, что все работает, прежде чем добавлять еще один слой путаницы.

Этот код ... ГМ ... бедный. Я знаю, я знаю - ты этого не писал. Но "если он не открывается, просто попробуйте еще раз" - это плохой способ сделать что-либо ...


markwhite1

У меня есть этот код в developer PC, и программа установки работает на клиентском ПК. Любой учебник или образец для запуска hyper terminal для ящика?

OriginalGriff

Гугл:
https://www.google.co.uk/search-что?q=hyperterminal+tutorial&oq=HyperTerminal+tutoi&aqs=chrome.1.69i57j0l5.6630j0j7&sourceid=chrome&ie=UTF-8

markwhite1

Я пытаюсь запустить hyperterminal, в connect to - у него есть USB Soft modem, TCP/IP Winsock и COM3. Когда я выбираю COM3 (так как USB Soft modem не тот), то он говорит, что он уже используется. Я также узнал код для моего принтера, чтобы открыть ящик, но не знаю, как им пользоваться. Прости меня за мою наивность

OriginalGriff

Итак, вы пытаетесь подключить HT к COM3, а ваше программное обеспечение-к COM1? Вам нужно решить, что есть что...

Попробуйте посмотреть, есть ли какие-либо драйверы устройств или другое программное обеспечение для установленного принтера, которое может использовать этот порт.
Помните, что я ничего не могу сделать напрямую - у меня нет никакого доступа к вашей машине(машинам) и понятия не имею, что вы подключили к ней!

markwhite1

Я попробовал COM1, COM3, ESDPRT001(в разделе порт предпочтений принтера), но те же результаты. Однако для подключения принтера Epson к ПК через USB и кассового ящика через RJ11 к принтеру.Простите, если я наивен.