первый

This commit is contained in:
2024-11-01 12:23:13 +05:00
parent 801d9d33fa
commit 0688c46a7e
226 changed files with 162921 additions and 0 deletions

View File

@ -0,0 +1,785 @@
//---------------------------------------------------------------------------
#pragma hdrstop
#include "CitizenPPU700Class.h"
#include "globals.h"
#include "boost/format.hpp"
#include "DeviceThread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
CCitizenPPU700::CCitizenPPU700(int ComPort,int BaudRate,TLogClass* _Log) : CPrinter(ComPort,_Log, "CitizenPPU700")
{
DataLength = 1;
delete Port;
COMParameters->Parity = NOPARITY;
COMParameters->BaudRate = 19200;
if (BaudRate > 0)
COMParameters->BaudRate = BaudRate;
Port = new TComPort(COMParameters,Log,true);
LoggingErrors = false;
//Init();
//GetState();
//SetCodeTable();
State = 0x00;
OldState = 0x00;
SubState = 0x00;
OldSubState = 0x00;
DeviceName = "CitizenPPU700";
MinLinesCount += 3;
//SetCharacterSize();
}
CCitizenPPU700::~CCitizenPPU700()
{
}
void CCitizenPPU700::SendCommand()
{
DeviceThread = new TDeviceThread(true,false);
Start();
delete DeviceThread;
DeviceThread = NULL;
}
void CCitizenPPU700::PrintString(AnsiString text)
{
PrintLine(text);
SendCommand();
}
void CCitizenPPU700::PrintCheck(TStringList* Text)
{
char subtext[100];
for(int i=0; i<Text->Count; i++)
{
memset(subtext,0,100);
CharToOem(Text->Strings[i].c_str(), subtext);
PrintString(Text->Strings[i]);
//PrintString(AnsiString(subtext));
//PrintBigString(AnsiString(subtext));
}
Cut(true);
}
void CCitizenPPU700::SendPacket(BYTE* command, int bytes_count,int datalen, BYTE* data, bool datafirst)
{
if (!Port->PortInit)
return;
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ClearCommand();
ClearAnswer();
if (!datafirst)
{
for(int i=0; i<bytes_count; i++)
Command[i] = command[i];
if (datalen != 0)
{
if (data!=NULL)
memcpy(&Command[bytes_count],data,datalen);
}
}
else
{
if (datalen != 0)
{
if (data!=NULL)
memcpy(&Command[0],data,datalen);
}
for(int i=datalen; i<datalen+bytes_count; i++)
Command[i] = command[i-datalen];
}
//CommandParameters->SetParameters(Command,bytes_count+datalen,command[0],0);
CommandSize = bytes_count+datalen;
}
__finally
{
}
}
std::string CCitizenPPU700::GetStateDescription()
{
return GetStatusDescription((BYTE)DeviceState->StateCode);
}
void CCitizenPPU700::PrintLine(AnsiString text)
{
//SelectFont();
/*BYTE command[200];
memset(command,0,200);
int ind = text.Length();
memcpy(text.c_str(),command,text.Length());
command[ind] = 0x0A;
SendType = NotRecieveAnswer;
SendPacket(command,text.Length()+1,0,NULL);
SendCommand();*/
BYTE command[2];
command[0] = 0x0A;
command[1] = 0x0D;
int datalen = text.Length();
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,text.c_str(),true);
}
void CCitizenPPU700::PrintBigString(AnsiString text)
{
ClearCommand();
ClearAnswer();
Command[0] = 0x1B;
Command[1] = 0x21;
Command[2] = 0x10;
memcpy(&Command[3],text.c_str(),text.Length());
CommandSize = 3 + text.Length();
Command[CommandSize] = 0x0A;
Command[CommandSize+1] = 0x0D;
CommandSize += 2;
SendType = NotRecieveAnswer;
SendCommand();
}
void CCitizenPPU700::SetBarCodeHeight(BYTE n) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 255 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
n = n ? n : 0xFF;
BYTE command[2];
command[0] = 0x1D;
command[1] = 0x68;
int datalen = 1;
BYTE data[1];
data[0] = n;
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::SetBarCodeWidth(BYTE n) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
n = ((n >= 2) && (n <= 6)) ? n : 2;
BYTE command[2];
command[0] = 0x1D;
command[1] = 0x77;
int datalen = 1;
BYTE data[1];
data[0] = n; //2..6 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>.<2E>.
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::SetBarCodeFont(BYTE n) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 3 <20><><EFBFBD><EFBFBD>: <20>, B <20><><EFBFBD> C
{
n = ((n <= 2) || ((n >=48 ) && (n <= 50))) ? n : 2;
BYTE command[2];
command[0] = 0x1D;
command[1] = 0x66;
int datalen = 1;
BYTE data[1];
data[0] = n; //== 0-2 <20><><EFBFBD> 48-50
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::SetBarCodeHRIposition(BYTE n) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
n = ((n <= 3) || ((n >= 48) && (n <= 51))) ? n : 1;
BYTE command[2];
command[0] = 0x1D;
command[1] = 0x48;
int datalen = 1;
BYTE data[1];
data[0] = n; //== 0..3 <20><><EFBFBD> 48..51: <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>/<2F><><EFBFBD>/<2F><><EFBFBD> <20> <20><><EFBFBD>
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::PrintBarCode(std::string text)
{
try
{
const int text_size = 25;
const int command_size = 3 + 1 + text_size;
BYTE command[command_size];
memset(command, 0, command_size);
command[0] = 0x1D;
command[1] = 0x6B;
command[2] = 73;
command[3] = text_size;
text = "{B" + text;
memcpy(&command[4], fill(text, " ", text_size, SIDE::LEFT).c_str(), text_size);
SendType = NotRecieveAnswer;
SendPacket(command,command_size,0,NULL);
SendCommand();
}
catch(...)
{
ExceptionFilter(__FILE__, BOOST_CURRENT_FUNCTION, __LINE__, Log);
}
}
void CCitizenPPU700::Feed(int count)
{
/*BYTE command[2];
command[0] = 0x0D;
command[1] = 0x0A;
SendType = NotRecieveAnswer;
SendPacket(command,1,0,NULL,true);
SendCommand();*/
for(int i=1; i<=count; i++)
{
BYTE command[2];
command[0] = 0x0A;
command[1] = 0x0D;
SendType = NotRecieveAnswer;
SendPacket(command,2,0,NULL);
SendCommand();
}
}
// <20><><EFBFBD> 0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD> 1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> 2 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> 3 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> 4 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>
// <20><><EFBFBD> 5 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>
// <20><><EFBFBD> 6 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> 7 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CCitizenPPU700::ShriftOptionsEx(BYTE option)//true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x21;
int datalen = 1;
BYTE data[1];
data[0] = option;
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::SetUnderline(bool option)
{
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x2D;
int datalen = 1;
BYTE data[1];
if (option)
data[0] = 1;
else
data[0] = 0;
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::SetBold(bool option)
{
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x45;
int datalen = 1;
BYTE data[1];
if (option)
data[0] = 1;
else
data[0] = 0;
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::SetDoublePrint(bool option)
{
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x47;
int datalen = 1;
BYTE data[1];
if (option)
data[0] = 1;
else
data[0] = 0;
SendType = NotRecieveAnswer;
SendPacket(command,2,datalen,data);
SendCommand();
}
void CCitizenPPU700::Init()
{
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x40;
SendType = NotRecieveAnswer;
SendPacket(command,2,0,NULL);
SendCommand();
}
void CCitizenPPU700::Cut(bool option)//true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
{
UNREFERENCED_PARAMETER(option);
BYTE command[2];
command[0] = 0x1B;
//command[1] = 0x69;
command[1] = 0x6D;
/*if (option)
command[1] = 0x69;
else
command[1] = 0x6D;*/
SendType = NotRecieveAnswer;
SendPacket(command,2,0,NULL);
SendCommand();
}
bool CCitizenPPU700::IsPaperInPresenter()
{
BYTE command[3];
BYTE Code = 0;
command[0] = 0x1D;
command[1] = 0x72;
command[2] = 0x01;
SendType = RecieveAnswer;
SendPacket(command,3,0,NULL);
SendCommand();
if (DeviceState == NULL)
return false;
if (DeviceState->AnswerSize > 0)
Code = Answer[0];
if (LoggingErrors)
Log->Write((boost::format("IsPaperInPresenter() Code=%1%") % Code).str().c_str());
Code &= 0x08;
if (Code > 0)
return true;
else
return false;
}
void CCitizenPPU700::GetState()
{
Init();
State = 0xFF;
SubState = 0x0;
StateDescr = "";
SubStateDescr = "";
Error = 0;
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x76;
SendType = RecieveAnswer;
SendPacket(command,2,0,NULL);
SendCommand();
if (DeviceState == NULL)
return;
if (DeviceState->AnswerSize > 0)
State = Answer[0];
Log->Write((boost::format("Printer State=%1%") % GetStatusDescription((BYTE)State).c_str()).str().c_str());
DeviceState->StateCode = State;
DeviceState->StateDescription = GetStatusDescription((BYTE)State);
DeviceState->SubStateCode = 0x00;
DeviceState->SubStateDescription = "";
//=====================new 27-04-2007===========================================
std::string result = "";
switch(DeviceState->DSR_CTS)
{
case DsrCtsOff:
{
result = "DSR Off, CTS Off";
Log->Write(result.c_str());
Error = 1;
PrinterEnable = false;
DeviceState->OutStateCode = DSE_HARDWARE_ERROR;
if (DeviceState->OldOutStateCode != DeviceState->OutStateCode)
{
//DeviceState->OldOutStateCode = DeviceState->OutStateCode;
//DeviceState->OldStateCode = DeviceState->StateCode;
DeviceState->StateDescription = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>";
DeviceState->StateChange = true;
//if (ChangeEvent)
//StateChanged(DeviceState);
ChangeDeviceState();
}
return;
}
// break;
case DsrCtsOn:
result = "DSR On, CTS On";
Log->Write(result.c_str());
break;
case DsrOn:
result = "Only DSR On, CTS Off";
Log->Write(result.c_str());
break;
case CtsOn:
{
result = "Only CTS On, DSR Off";
Log->Write(result.c_str());
Error = 1;
PrinterEnable = false;
DeviceState->OutStateCode = DSE_HARDWARE_ERROR;
if (DeviceState->OldOutStateCode != DeviceState->OutStateCode)
{
//DeviceState->OldOutStateCode = DeviceState->OutStateCode;
DeviceState->StateDescription = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>";
DeviceState->StateDescription = result;
DeviceState->StateChange = true;
//if (ChangeEvent)
//StateChanged(DeviceState);
ChangeDeviceState();
}
return;
}
// break;
}
if (Error == 1) return;
result = "OK";
Error = 0;
PrinterEnable = true;
DeviceState->OutStateCode = DSE_OK;
ChangeDeviceState();
DeviceState->StateDescription = result;
//if (OldState != StatusCode)
/*if (DeviceState->OldOutStateCode != DeviceState->OutStateCode)
{
DeviceState->OldOutStateCode = DeviceState->OutStateCode;
OldState = DeviceState->StateCode;
DeviceState->StateCode = StatusCode;
DeviceState->StateDescription = result;
DeviceState->StateChange = true;
if (ChangeEvent)
StateChanged(DeviceState);
return StateDescr = result;
}*/
//==============================================================================
/*if (State == 0x00)
{
if (Error == 1)
{
Error = 0;
DeviceState->StateChange = true;
if (ChangeEvent)
StateChanged(DeviceState);
}
}*/
}
std::string CCitizenPPU700::GetStatusDescription(BYTE StatusCode)
{
std::string result = "";
if (StatusCode == 0x00)
{
result += "OK";
PrinterEnable = true;
DeviceState->OutStateCode = DSE_OK;
DeviceState->StateDescription = result;
return StateDescr = result;
}
if (StatusCode == 0xFF)
{
result += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Error = 1;
PrinterEnable = false;
if (OldState != StatusCode)
{
OldState = DeviceState->StateCode;
DeviceState->StateCode = StatusCode;
DeviceState->StateDescription = result;
DeviceState->OutStateCode = DSE_NOTMOUNT;
DeviceState->StateChange = true;
//if (ChangeEvent)
//StateChanged(DeviceState);
ChangeDeviceState();
}
return StateDescr = result;
}
BYTE code = (BYTE)StatusCode & (BYTE)0x04;
if (code > 0)
{
result += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ";
Error = 1;
PrinterEnable = false;
if (OldState != StatusCode)
{
OldState = DeviceState->StateCode;
DeviceState->StateCode = StatusCode;
DeviceState->OutStateCode = DSE_NOTPAPER;
DeviceState->StateDescription = result;
DeviceState->StateChange = true;
//if (ChangeEvent)
//StateChanged(DeviceState);
ChangeDeviceState();
}
return StateDescr = result;
}
code = (BYTE)StatusCode & (BYTE)0x01;
if (code > 0)
{
result += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ";
Error = 1;
PrinterEnable = true;
if (OldState != StatusCode)
{
OldState = DeviceState->StateCode;
DeviceState->StateCode = StatusCode;
DeviceState->OutStateCode = DSE_NEARENDPAPER;
DeviceState->StateDescription = result;
DeviceState->StateChange = true;
//if (ChangeEvent)
//StateChanged(DeviceState);
ChangeDeviceState();
}
return StateDescr = result;
}
return StateDescr = result;
}
void CCitizenPPU700::SelectFont()
{
BYTE command[3];
command[0] = 0x1B;
command[1] = 0x4D;
command[2] = 0;
SendType = NotRecieveAnswer;
SendPacket(command,3,0,NULL);
SendCommand();
}
void CCitizenPPU700::PrintCheck(AnsiString text, std::string barcode)
{
GetState();
Push();
SelectFont();
if (DeviceState->StateCode == 0xff)
return;
SetCodeTable();
//SetCharacterSize();
//Log->Write("Text to printer: "+ text);
TStringList* strings = new TStringList();
AnsiString delim = "\r\n";
LinesCount = 0;
while(true)
{
int pos = text.Pos(delim);
if (pos == 0)
break;
text = text.Delete(pos,2);
text = text.Insert("|",pos);
}
delim = "|";
char _subtext[1024];
while(true)
{
int pos = text.Pos(delim);
if (pos == 0)
{
AnsiString subtext = text;
memset(_subtext,0,1024);
CharToOem(subtext.c_str(), _subtext);
PrintString(AnsiString(_subtext));
LinesCount++;
break;
}
AnsiString subtext = text.SubString(0,pos-1);
text = text.SubString(pos+1,text.Length()-pos);
//if (!subtext.IsEmpty())
//{
memset(_subtext,0,1024);
CharToOem(subtext.c_str(), _subtext);
//PrintBigString(AnsiString(_subtext));
LinesCount++;
PrintString(AnsiString(_subtext));
//}
}
if(!barcode.empty())
{
SetBarCodeHeight(0xA0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 .. 255 - <20> <20>.<2E>.
SetBarCodeHRIposition(1); //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0..3 <20><><EFBFBD> 48..51: <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>/<2F><><EFBFBD>/<2F><><EFBFBD> <20> <20><><EFBFBD>
SetBarCodeFont(1); //<2F><><EFBFBD><EFBFBD>, 0 .. 2 <20><><EFBFBD> 48 .. 50: 3 <20><><EFBFBD><EFBFBD>: <20>, B <20><><EFBFBD> C, <20>->C: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
SetBarCodeWidth(2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2..6 - <20> <20>.<2E>.
PrintBarCode(barcode);
Feed(2);
}
//for(int i=0; i<7; i++)
//Feed();
//==========new 06-06-2007 ================
_MinLinesCount = 3;
//=========================================
FeedToMinLinesCount();
Cut(true);
//PrintCheck(strings);
switch (PushActionType)
{
case Nothing:
PushEx2();
break;
case Pull:
Push();
break;
case PullAndPush:
PushEx();
break;
default:
//Push();
break;
}
delete strings;
}
void CCitizenPPU700::SetCodeTable()
{
BYTE command[3];
command[0] = 0x1B;
command[1] = 0x74;
command[2] = 0x07;
SendType = NotRecieveAnswer;
SendPacket(command,3,0,NULL);
SendCommand();
}
void CCitizenPPU700::SetCharacterSize()
{
BYTE command[3];
command[0] = 0x1D;
command[1] = 0x21;
command[2] = 0x77;
SendType = NotRecieveAnswer;
SendPacket(command,3,0,NULL);
SendCommand();
}
bool CCitizenPPU700::IsPrinterEnable()
{
GetState();
return PrinterEnable;
}
void CCitizenPPU700::Push()
{
if (IsPaperInPresenter() == false)
return;
BYTE command[3];
command[0] = 0x1D;
command[1] = 0x52;
command[2] = 0x30;
SendType = NotRecieveAnswer;
SendPacket(command,3,0,NULL);
SendCommand();
}
void CCitizenPPU700::PushEx()
{
if (IsPaperInPresenter() == false)
return;
BYTE command[4];
command[0] = 0x1D;
command[1] = 0x52;
command[2] = 0x31;
command[3] = 30;
SendType = NotRecieveAnswer;
SendPacket(command,4,0,NULL);
SendCommand();
}
void CCitizenPPU700::PushEx2()
{
//if (IsPaperInPresenter() == false)
//return;
BYTE command[4];
command[0] = 0x1D;
command[1] = 0x52;
command[2] = 0x31;
command[3] = 0xFF;
SendType = NotRecieveAnswer;
SendPacket(command,4,0,NULL);
SendCommand();
}
bool CCitizenPPU700::IsItYou()
{
BYTE command[2];
command[0] = 0x1B;
command[1] = 0x76;
SendType = RecieveAnswer;
SendPacket(command,2,0,NULL);
SendCommand();
if (DeviceState == NULL)
return false;
if (DeviceState->AnswerSize == 0)
return false;
return true;
}
int CCitizenPPU700::Initialize()
{
try
{
Init();
GetState();
SetCodeTable();
SetInitialized();
}
catch(...)
{
ExceptionFilter(__FILE__, BOOST_CURRENT_FUNCTION, __LINE__, Log);
}
}
void CCitizenPPU700::Settings()
{
/*BYTE command[];
command[0] = 0x1D;
command[1] = 0x28;
command[2] = 0x45;
command[3] = 0x;
command[4] = 0x;
command[5] = 0x03;
//bit 1
command[] = 0x04;
command[] = 48;
//bit 2
command[] = 0x04;
command[] = 48;
//bit 3
command[] = 0x04;
command[] = 48;
//bit 4
command[] = 0x04;
command[] = 49;
//bit 5
command[] = 0x04;
command[] = 48;
//bit 6
command[] = 0x04;
command[] = 48;
//bit 7
command[] = 0x04;
command[] = 48;
//bit 8
command[] = 0x04;
command[] = 48;
SendType = RecieveAnswer;
SendPacket(command,2,0,NULL);
SendCommand();*/
}

View File

@ -0,0 +1,53 @@
//---------------------------------------------------------------------------
#ifndef CitizenPPU700ClassH
#define CitizenPPU700ClassH
//---------------------------------------------------------------------------
#endif
#include "CPrinter.h"
class CCitizenPPU700 : public CPrinter
{
private:
virtual std::string GetStateDescription();
std::string GetStatusDescription(BYTE StatusCode);
void SendCommand();
virtual void PrintString(AnsiString text);
void PrintBigString(AnsiString text);
virtual void PrintLine(AnsiString text);
virtual void ShriftOptionsEx(BYTE option);//true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void SetUnderline(bool option);
virtual void SetBold(bool option);
virtual void SetDoublePrint(bool option);
virtual void Init();
virtual void Cut(bool option);//true - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> false - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
virtual void Feed(int count = 1);
virtual void SetCodeTable();
virtual void SetCharacterSize();
virtual void SelectFont();
virtual void Push();
virtual void PushEx();
void PushEx2();
virtual bool IsPaperInPresenter();
virtual void SetBarCodeHeight(BYTE n);
virtual void SetBarCodeWidth(BYTE n);
virtual void SetBarCodeFont(BYTE n);
virtual void SetBarCodeHRIposition(BYTE n);
virtual void PrintBarCode(std::string text = "");
protected:
virtual void SendPacket(BYTE* command, int bytes_count,int datalen, BYTE* data, bool datafirst = false);
public:
CCitizenPPU700(int ComPort,int BaudRate = 0,TLogClass* _Log = NULL);
virtual ~CCitizenPPU700();
virtual bool IsPrinterEnable();
virtual void PrintCheck(TStringList* Text);
virtual void PrintCheck(AnsiString text, std::string barcode = "");
virtual void GetState();
virtual bool IsItYou();
int Initialize();
virtual void Settings();
};

View File

@ -0,0 +1,20 @@
//---------------------------------------------------------------------------
#pragma hdrstop
#include "CitizenPPU700Thread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
__fastcall CCitizenPPU700Thread::CCitizenPPU700Thread() : TDeviceThread(true, false)
{
PollingMode = false;
DataLength = 1;
}
__fastcall CCitizenPPU700Thread::~CCitizenPPU700Thread()
{
}

View File

@ -0,0 +1,20 @@
//---------------------------------------------------------------------------
#ifndef CCitizenPPU700ThreadH
#define CCitizenPPU700ThreadH
//---------------------------------------------------------------------------
#include "DeviceThread.h"
typedef enum
{
UNKNOWN = 0xFF,
} CitizenPPU700State;
class CCitizenPPU700Thread : public TDeviceThread
{
protected:
public:
__fastcall CCitizenPPU700Thread();
__fastcall ~CCitizenPPU700Thread();
};
#endif