| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034 |
- #include "stdafx.h"
- #include "DevCtrl.h"
- CSerialComm g_SerialComm;
- LOG_EXTERN()
- //////////////////////////////////////////////////
- //Function Name: Device construct
- //00-01-00-01 2016-12-15 Lichun(Create)
- //////////////////////////////////////////////////
- DeviceCtrl::DeviceCtrl()
- {
- m_hComLib = NULL; //Default value
- m_wPaperWidth = 80;
- m_bOpened = false;
- memset( m_cDeviceID, 0x00, sizeof (m_cDeviceID));
- memset( m_cDevType, 0x00, sizeof(m_cDevType) );
- memset( m_cFWMain, 0x00, sizeof(m_cFWMain) );
- memset( m_cFWBoot, 0x00, sizeof(m_cFWBoot) );
- }
- //////////////////////////////////////////////////
- //Function Name: Device destruct
- //00-01-00-01 2016-12-15 Lichun(Create)
- //////////////////////////////////////////////////
- DeviceCtrl::~DeviceCtrl()
- {
- g_SerialComm.Disconnect(m_hDevHnd);
- }
- //////////////////////////////////////////////////
- //Function Name: Open
- //00-01-00-01 2016-12-15 Lichun(Create)
- //////////////////////////////////////////////////
- DWORD DeviceCtrl::Open(LPSTR cDeviceID, int dwBaudRate)
- {
- LOG_FUNCTION();
- memcpy(m_cDeviceID, cDeviceID, strlen(cDeviceID));
- // 接收串口号
- int ret = g_SerialComm.Connect(cDeviceID, dwBaudRate, 2, 1, &m_hDevHnd, 8);
- if( ret == 0) //返回0, 串口打开成功
- {
- LogM("串口打开成功: %d COM:%s\r\n", ret, m_cDeviceID);
- }
- else
- {
- m_bOpened = false;
- return CONNECT_ERROR;
- }
- m_bOpened = true;
- return ERROR_SUCCESS;
- }
- //////////////////////////////////////////////////
- //Function Name: Close
- //00-01-00-01 2016-12-15 Lichun(Create)
- //////////////////////////////////////////////////
- DWORD DeviceCtrl::Close()
- {
- m_bOpened = false;
- g_SerialComm.Disconnect(m_hDevHnd);
- return ERROR_SUCCESS;
- }
- //////////////////////////////////////////////////
- //Function Name: GetPrinterStatus
- //00-01-00-01 2016-12-15 Lichun(Create)
- //////////////////////////////////////////////////
- BOOL DeviceCtrl::GetStatus( const LPBYTE lpbyPrinterStatus )
- {
- LOG_FUNCTION();
- CHAR cPrinterStatus[STATUS_BUF_LEN];
- int ret;
- LogM("GetStatus is call");
- memset( cPrinterStatus, 0x00, sizeof(cPrinterStatus) );
- // 获取打印机实时状态指令
- BYTE sCommand[] ={0x1D, 0x61, 0x0E};
- COMRESULT stComResult;
- memset(&stComResult, 0x00, sizeof (stComResult));
- //Check parameter
- if ( lpbyPrinterStatus == NULL )
- {
- LogE("GetStatus lpbyPrinterStatus is null");
- return FALSE;
- }
- //Check connection
- if (m_bOpened == false)
- {
- ret = g_SerialComm.Connect(m_cDeviceID, 38400, 0, 2, &m_hDevHnd, 8);
- if (ret != 0) //Connect failed
- {
- LogE("GetStatus f_OpenDeviceByID fail.");
- return FALSE;
- }
- }
- else //Connect success
- { //Get current status
- if(g_SerialComm.SendAndReceive(m_hDevHnd, sCommand, strlen((char*)sCommand), 10, &stComResult) != 0)
- {
- sleep(1);
- if(g_SerialComm.SendAndReceive(m_hDevHnd, sCommand, strlen((char*)sCommand), 10, &stComResult) != 0)
- {
- LogXE(sCommand, strlen((char*)sCommand), "Send");
- g_SerialComm.Disconnect(m_hDevHnd); //Get status failed
- m_hDevHnd = NULL;
- return FALSE;
- }
- }
- }
- LogXM(sCommand, strlen((char*)sCommand), "Send");
- LogXM(stComResult.Buff, strlen((char*)stComResult.Buff), "Receive");
- //Copy status
- memcpy( lpbyPrinterStatus, stComResult.Buff, stComResult.Length );
- LogXM(lpbyPrinterStatus, STATUS_BUF_LEN, "status");
- return TRUE;
- }
- BOOL DeviceCtrl::Reset()
- {
- BOOL bRet = TRUE;
- if (m_hDevHnd ==NULL)
- {
- return FALSE;
- }
- if (SendCommand(INITIALIZ) != ERROR_SUCCESS)
- {
- return FALSE;
- }
- return bRet;
- }
- /////////////////////////////////////////////////////
- //Function Name: SendCommand
- //00-01-00-01 2016-12-20 Lichun(Create)
- /////////////////////////////////////////////////////
- DWORD DeviceCtrl::SendCommand( WORD wOperationID, LPBYTE lpbyOptionData, WORD wDataSize )
- {
- INT iRet = 0;
- WORD wCmdSize = 0;
- BYTE byCmdData[16];
- BOOL bFlag = FALSE;
- BYTE *byExeData = NULL;
- memset( byCmdData, 0x00, sizeof(byCmdData) );
- LOG_FUNCTION();
- if (wOperationID == FEEDMARKSTART) //Feed Paper to Start Position
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x0C; //FF
- wCmdSize = 2;
- }
- else if (wOperationID == DIRECTPRINT)
- {
- byCmdData[0] = 0x0D; //CR
- wCmdSize = 1;
- }
- else if (wOperationID == FEEDLINEPRINT)
- {
- byCmdData[0] = 0x0A; //LF
- wCmdSize = 1;
- }
- else if (wOperationID == SETFONTROTATE)
- {
- byCmdData[0] = 0x1B; //ESC V
- if (wDataSize == 1)
- {
- switch (lpbyOptionData[0])
- {
- case 3: //逆时针转90
- {
- byCmdData[1] = 0x12;
- wCmdSize = 2;
- }
- break;
- case 1:
- {
- byCmdData[1] = 0x56;
- byCmdData[2] = 0x01; //顺时钟转90
- wCmdSize = 3;
- }
- break;
- case 0:
- default:
- {
- byCmdData[1] = 0x56;
- byCmdData[2] = 0x00;
- wCmdSize = 3;
- }
- break;
- }
- }
- }
- else if (wOperationID == FEEDMULTPRINT)
- {
- byCmdData[0] = 0x1B; //ESC d
- byCmdData[1] = 0x64;
- byCmdData[2] = lpbyOptionData[0];
- wCmdSize = 3;
- }
- else if (wOperationID == PAGEMODPRINT)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x0C; //FF
- wCmdSize = 2;
- }
- else if (wOperationID == BMMODPRINT)
- {
- byCmdData[0] = 0x0C; //FF
- wCmdSize = 1;
- }
- else if (wOperationID == SETHRIPRINTPOS)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x48; //H
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETBARCODEHEIGHT)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x68; //h
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETQRCODEPARAM)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x6F; //o
- byCmdData[2] = 0x00; //0
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[3] = lpbyOptionData[0];
- }
- byCmdData[4] = 0;
- byCmdData[5] = 0x02;
- wCmdSize = 6;
- }
- else if (wOperationID == SETBARCODEPRINT)
- {
- if ((lpbyOptionData != NULL) && (wDataSize > 2))
- {
- WORD wDataLen = lpbyOptionData[1];
- if (wDataLen >= (wDataSize - 2))
- {
- bFlag = TRUE;
- byExeData = new BYTE[wDataSize + 3];
- memset(byExeData, 0, wDataSize + 3);
- byExeData[0] = 0x1D; //GS
- byExeData[1] = 0x6B; //k
- memcpy(&byExeData[2], lpbyOptionData, wDataSize);
- wCmdSize = wDataSize + 3;
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == SETPDF417INFO)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x70; //p
- if ((lpbyOptionData != NULL) && (wDataSize == 6))
- {
- memcpy(&byCmdData[2], lpbyOptionData, wDataSize);
- }
- else
- {
- return INVALID_DATA;
- }
- wCmdSize = 8;
- }
- else if (wOperationID == SETPDF417ERRORLEVEL)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x71; //q
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- return INVALID_DATA;
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETRASTERBMPPRINT)
- {
- if ((wDataSize >= 4)&&
- (lpbyOptionData != NULL))
- {
- bFlag = TRUE;
- byExeData = new BYTE[wDataSize + 7];
- if (byExeData == NULL)
- {
- return INVALID_DATA;
- }
- memset(byExeData, 0, wDataSize + 7);
- byExeData[0] = 0x1D; //GS
- byExeData[1] = 0x76; //v
- byExeData[2] = 0x30;
- byExeData[3] = 0;
- memcpy(&byExeData[4], lpbyOptionData, wDataSize);
- byExeData[wDataSize + 5] = 0x0a;
- byExeData[wDataSize + 6] = 0x00;
- wCmdSize = wDataSize + 6;
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == SETBARCODEWIDTH)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x77; //w
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- return INVALID_DATA;
- }
- wCmdSize = 3;
- }
- else if (wOperationID == PAPERDIRCETCUT)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x01; //1
- wCmdSize = 3;
- }
- else if (wOperationID == PAPERDIRCETCUTEX) //全切
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x00; //0
- wCmdSize = 3;
- }
- else if (wOperationID == PAPERFEEDCUT) //
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x41; //66
- byCmdData[3] = 0x00; //0
- wCmdSize = 4;
- }
- else if (wOperationID == SETFONTINVERSE) //反白
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x42; //B
- if ((wDataSize == 1) && ((lpbyOptionData[0] & 0x01) == 0x01))
- {
- byCmdData[2] = 0x01;
- }
- else
- {
- byCmdData[2] = 0x00; //0
- }
- wCmdSize = 3;
- }
- else if (wOperationID == INITIALIZ)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x40; //@
- wCmdSize = 2;
- }
- else if (wOperationID == RESET)
- {
- if (lpbyOptionData == NULL)
- {
- return INVALID_BUFFER;
- }
- byCmdData[0] = 0x10; //DLE
- byCmdData[1] = 0x05; //ENQ
- if ((wDataSize > 0)&&
- (lpbyOptionData[0]>=0x01)&&
- (lpbyOptionData[0]<=0x02)) //1~2
- {
- byCmdData[2] = lpbyOptionData[0];
- wCmdSize = 3;
- }
- else //Illegal value
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == SETTOPPRTPOS)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x54; //T
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETBLACKMARKSUPP)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x30; //0
- if ( (wDataSize==1)&&(lpbyOptionData[0]==0) )
- {
- byCmdData[3] = 0x00; //Paper without BM
- }
- else
- {
- byCmdData[3] = 0x99; //Paper with BM
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETBLACKMARKPARAM)
- {
- byCmdData[0] = 0x1D;
- byCmdData[1] = 0x28;
- byCmdData[2] = 0x46;
- if ( (wDataSize == 6)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[3] = lpbyOptionData[0];
- byCmdData[4] = lpbyOptionData[1];
- byCmdData[5] = lpbyOptionData[2];
- byCmdData[6] = lpbyOptionData[3];
- byCmdData[7] = lpbyOptionData[4];
- byCmdData[8] = lpbyOptionData[5];
- wCmdSize = 9;
- }
- else //Illegal value
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == GETSTATUS_ASY)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x72; //r
- wCmdSize = 2;
- }
- else if (wOperationID == SETFONT)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x66; //f
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is 8*16
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETREDMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x67; //f
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is 8*16
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETINTERCHAR)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x52; //R
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is USA
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETDSMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x47; //R
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is DS Mode
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETULMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x55; //R
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is UL Mode
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETPRINTERMOD) //字符打印模式
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x21; //!
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is Big Char
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETFONTCHNMOD) //汉字字符打印模式
- {
- byCmdData[0] = 0x1C; //FS
- byCmdData[1] = 0x21; //!
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is Big Char
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETFONTLRSPACE) //汉字左右边距设定
- {
- byCmdData[0] = 0x1C; //FS
- byCmdData[1] = 0x53; //!
- byCmdData[2] = 0x00;
- byCmdData[3] = lpbyOptionData[0];
- /*if ( (wDataSize == 2)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- byCmdData[3] = lpbyOptionData[1];
- }*/
- wCmdSize = 4;
- }
- else if (wOperationID == SETCHARSIZE) //设置字符放大倍数
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x21; //!
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is normal mode
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETPRINTPOS)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x24; //$
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- if ((lpbyOptionData[0] > m_wPaperWidth) ||
- (lpbyOptionData[0] > 255))
- {
- return INVALID_DATA;
- }
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is 0
- }
- byCmdData[3] = 0x00;
- wCmdSize = 4;
- }
- else if (wOperationID == SETFONTUNDERLINE) //设置下划线
- {
- byCmdData[0] = 0x1C; //ESC
- byCmdData[1] = 0x2D; //-
- byCmdData[3] = 0x1B;
- byCmdData[4] = 0x2D;
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- byCmdData[5] = lpbyOptionData[0];
- }
- wCmdSize = 6;
- }
- else if (wOperationID == SETLINESPACE)
- {
- byCmdData[0] = 0x1B; //ESC
- // byCmdData[1] = 0x33; //3
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- //byCmdData[2] = lpbyOptionData[0];
- if (lpbyOptionData[0] == 0)
- { //默认行高
- byCmdData[1] = 0x32; //2
- wCmdSize = 2;
- }
- else
- {
- byCmdData[1] = 0x33; //3
- // BYTE byDefulat = 27; //默认行高
- // BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
- // byCmdData[2] = byDefulat + lpbyOptionData[0];
- byCmdData[2] = lpbyOptionData[0];
- wCmdSize = 3;
- }
- }
- else
- {
- //byCmdData[2] = 0x1E; //Default is 30
- byCmdData[1] = 0x32;
- wCmdSize = 2;
- }
- // wCmdSize = 3;
- }
- else if (wOperationID == SETFONTBOLD) //设置粗体
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x45; //E
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETVERIRELATEPOS) //相对纵向位移
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x4A; //$
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- // if (lpbyOptionData[0] > 255)
- // {
- // return INVALID_DATA;
- // }
- // BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETHORIRELATEPOS) //相对横向位移
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x5C; //$
- if ( (wDataSize == 2)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- byCmdData[3] = lpbyOptionData[1];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is 0
- byCmdData[3] = 0x00;
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETPRINTAREA)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x57; //W
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //xL
- }
- else
- {
- byCmdData[2] = 0x00; //xL Default is 0
- }
- byCmdData[3] = 0x00; //xH is 0
- byCmdData[4] = 0x00; //yL is 0
- byCmdData[5] = 0x00; //yH is 0
- byCmdData[6] = 0x00; //dxL is 0
- byCmdData[7] = 0x03; //dxH is 3
- byCmdData[8] = 0x00; //dyL is 0
- byCmdData[9] = 0x03; //dyH is 3
- wCmdSize = 10;
- }
- else if (wOperationID == SETLINEPRINTAREA)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x57; //W
- if ( (wDataSize == 2)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- byCmdData[3] = lpbyOptionData[1]; //nH
- }
- else
- {
- byCmdData[2] = 0x00; //nL Default is 0
- byCmdData[3] = 0x00; //nH
- }
- wCmdSize = 4;
- }//
- else if (wOperationID == SETLINEREVERSEPRINT) //选择/取消倒置打印
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x7B; //{
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //n
- }
- else
- {
- byCmdData[2] = 0x00; //Default is 0
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETPAGEMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x4C; //L
- wCmdSize = 2;
- }
- else if (wOperationID == SETSTADMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x53; //S
- wCmdSize = 2;
- }
- else if (wOperationID == SETPRESENTER)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x38; //8
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[3] = lpbyOptionData[0]; //n
- }
- else
- {
- byCmdData[3] = 0x01; //Default is 1
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETPRESENTERTIME)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x39; //9
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[3] = lpbyOptionData[0]; //t
- }
- else
- {
- byCmdData[3] = 0x1e; //Default is 30s
- }
- wCmdSize = 4;
- }
- else if (wOperationID == REALTIME_RESET) //Real time reset
- {
- byCmdData[0] = 0x10; //DLE
- byCmdData[1] = 0x04; //EOT
- byCmdData[2] = 0x0A; //10
- wCmdSize = 3;
- }
- else if (wOperationID == REALTIME_STATUS) //Real time get status
- {
- byCmdData[0] = 0x10; //DLE
- byCmdData[1] = 0x04; //EOT
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=5)&&
- (lpbyOptionData[0]<=7) )
- {
- byCmdData[2] = lpbyOptionData[0]; //n
- }
- else
- {
- return INVALID_DATA; //No default value
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETALIGN) //Set align
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x61; //a
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=0)&&
- (lpbyOptionData[0]<=2) )
- {
- byCmdData[2] = lpbyOptionData[0]; //n
- }
- else
- {
- byCmdData[2] = 0x00; //Default left
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETFEEDLEN) //Set feed length before print
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x31; //1
- //Low byte
- if ( (lpbyOptionData != NULL)&&
- (wDataSize >= 1) )
- {
- byCmdData[3] = lpbyOptionData[0]; //nL
- }
- else
- {
- byCmdData[3] = 0x00; //Default 0
- }
- //High byte
- if ( (lpbyOptionData != NULL)&&
- (wDataSize >= 2) )
- {
- byCmdData[4] = lpbyOptionData[1]; //nH
- }
- else
- {
- byCmdData[4] = 0x00; //Default 0
- }
- wCmdSize = 5;
- }
- else if (wOperationID == SETCHARSPACE) //Set char space
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x20; //SP
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- }
- else
- {
- byCmdData[2] = 0x00; //Default 0
- }
- wCmdSize = 3;
- }
- else if (wOperationID == GETDEVINFO) //Get device info
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x49; //I
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=68)&&
- (lpbyOptionData[0]<=153) )
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- }
- else
- {
- byCmdData[2] = 68; //Default 68
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETLEFTMARGIN) //Set left margin
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x4C; //L
- if ( (lpbyOptionData != NULL)&&
- (wDataSize == 2))
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- byCmdData[3] = lpbyOptionData[1]; //nH
- }
- else
- {
- byCmdData[2] = 0; //Default 0
- byCmdData[3] = 0; //nH //Default 0
- }
- wCmdSize = 4;
- }
- else if ( wOperationID == SETBITMAPNUM ) //Set bitmap number
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x23; //#
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=0)&&
- (lpbyOptionData[0]<=7) )
- {
- byCmdData[2] = lpbyOptionData[0]; //Bitmap number
- }
- else
- {
- byCmdData[2] = 0; //Default 0
- }
- wCmdSize = 3;
- }
- else if ( wOperationID == SETDOWNLOADBITMAP ) //Download bitmap to RAM
- {
- if ((wDataSize >= 3)&&
- (lpbyOptionData != NULL))
- {
- bFlag = TRUE;
- byExeData = new BYTE[wDataSize + 3];
- if (byExeData == NULL)
- {
- return INVALID_DATA;
- }
- memset(byExeData, 0, wDataSize + 3);
- byExeData[0] = 0x1D; // GS
- byExeData[1] = 0x2A; // *
- memcpy(&byExeData[2], lpbyOptionData, wDataSize);
- wCmdSize = wDataSize + 2;
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else if ( wOperationID == SETPRINTRAMBITMAP ) //Print RAM bitmap
- {
- byCmdData[0] = 0x1D; // GS
- byCmdData[1] = 0x2F; // /
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=0)&&
- (lpbyOptionData[0]<=3) )
- {
- byCmdData[2] = lpbyOptionData[0]; //Bitmap number
- }
- else
- {
- byCmdData[2] = 0; //Default 0
- }
- wCmdSize = 3;
- }
- else if ( wOperationID == SETXYMOVEUNIT ) //Set X/Y move unit to mm (GS P xL xH yL yH Real command is GS P x y)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x50; //P
- byCmdData[2] = 0x19; //25 1Inch = 25.4mm
- byCmdData[3] = 0x19;
- wCmdSize = 4;
- }
- //Check command data
- if (wCmdSize == 0)
- {
- return INVALID_DATA;
- }
- BYTE *byData = NULL;
- if (!bFlag)
- {
- byData = byCmdData;
- }
- else
- {
- byData = byExeData;
- }
- //Write Command
- LogXM(byData, wCmdSize, "Send Before");
- iRet = g_SerialComm.SendData(m_hDevHnd, byData, wCmdSize );
- /*char* pBuf = (char*)byData;
- int writedCount;
- int nCount = wCmdSize / 1024;
- bool bEx = false;
- if(wCmdSize % 1024 != 0)
- {
- bEx = true;
- }
- for(int i = 0; i < nCount; i++)
- {
- writedCount = f_WriteData(m_hDevHnd, WRITE_PIPENUM, pBuf + i*1024, 1024);
- if (writedCount != 1024)
- {
- m_pLog->TraceError( __FILE__, __LINE__, "WriteUSBPort(), uWrite() fail.writedCount= %d", writedCount );
- return HARDWARE_ERROR;
- }
- }
- if(bEx)
- {
- writedCount = f_WriteData(m_hDevHnd, WRITE_PIPENUM, pBuf + nCount*1024, wCmdSize - nCount*1024);
- if (writedCount != wCmdSize - nCount*1024)
- {
- m_pLog->TraceError( __FILE__, __LINE__, "WriteUSBPort(), uWrite() fail.writedCount = %d", writedCount );
- return HARDWARE_ERROR;
- }
- }*/
-
- LogM("f_WriteData iRet=%d, wDataSize = %d", iRet, wCmdSize);
- LogXM(byData, wCmdSize, "Send");
- if (bFlag)
- {
- bFlag = FALSE;
- }
- if (byExeData != NULL)
- {
- delete [] byExeData;
- byExeData = NULL;
- }
- if ( iRet < 0 )
- {
- return HARDWARE_ERROR;
- }
- return ERROR_SUCCESS;
- }
- DWORD DeviceCtrl::SendCommandSpec(WORD wOperationID, LPBYTE lpbyOptionData, WORD wDataSize)
- {
- INT iRet = 0;
- WORD wCmdSize = 0;
- BYTE byCmdData[16];
- BOOL bFlag = FALSE;
- BYTE *byExeData = NULL;
- memset( byCmdData, 0x00, sizeof(byCmdData) );
- if (wOperationID == FEEDMARKSTART) //Feed Paper to Start Position
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x0C; //FF
- wCmdSize = 2;
- }
- else if (wOperationID == DIRECTPRINT)
- {
- byCmdData[0] = 0x0D; //CR
- wCmdSize = 1;
- }
- else if (wOperationID == FEEDLINEPRINT)
- {
- byCmdData[0] = 0x0A; //LF
- wCmdSize = 1;
- }
- else if (wOperationID == SETFONTROTATE)
- {
- byCmdData[0] = 0x1B; //ESC V
- if (wDataSize == 1)
- {
- switch (lpbyOptionData[0])
- {
- case 3: //逆时针转90
- {
- byCmdData[1] = 0x12;
- wCmdSize = 2;
- }
- break;
- case 1:
- {
- byCmdData[1] = 0x56;
- byCmdData[2] = 0x01; //顺时钟转90
- wCmdSize = 3;
- }
- break;
- case 0:
- default:
- {
- byCmdData[1] = 0x56;
- byCmdData[2] = 0x00;
- wCmdSize = 3;
- }
- break;
- }
- }
- }
- else if (wOperationID == FEEDMULTPRINT)
- {
- byCmdData[0] = 0x1B; //ESC d
- byCmdData[1] = 0x64;
- byCmdData[2] = lpbyOptionData[0];
- wCmdSize = 3;
- }
- else if (wOperationID == PAGEMODPRINT)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x0C; //FF
- wCmdSize = 2;
- }
- else if (wOperationID == BMMODPRINT)
- {
- byCmdData[0] = 0x0C; //FF
- wCmdSize = 1;
- }
- else if (wOperationID == SETHRIPRINTPOS)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x48; //H
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETBARCODEHEIGHT)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x68; //h
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETQRCODEPARAM)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x6F; //o
- byCmdData[2] = 0x00; //0
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[3] = lpbyOptionData[0];
- }
- byCmdData[4] = 0;
- byCmdData[5] = 0x02;
- wCmdSize = 6;
- }
- else if (wOperationID == SETBARCODEPRINT)
- {
- if ((lpbyOptionData != NULL) && (wDataSize > 2))
- {
- WORD wDataLen = lpbyOptionData[1];
- if (wDataLen == (wDataSize - 2))
- {
- bFlag = TRUE;
- byExeData = new BYTE[wDataSize + 3];
- memset(byExeData, 0, wDataSize + 3);
- byExeData[0] = 0x1D; //GS
- byExeData[1] = 0x6B; //k
- memcpy(&byExeData[2], lpbyOptionData, wDataSize);
- wCmdSize = wDataSize + 3;
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == SETPDF417INFO)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x70; //p
- if ((lpbyOptionData != NULL) && (wDataSize == 6))
- {
- memcpy(&byCmdData[2], lpbyOptionData, wDataSize);
- }
- else
- {
- return INVALID_DATA;
- }
- wCmdSize = 8;
- }
- else if (wOperationID == SETPDF417ERRORLEVEL)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x71; //q
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- return INVALID_DATA;
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETRASTERBMPPRINT)
- {
- if ((wDataSize >= 4)&&
- (lpbyOptionData != NULL))
- {
- bFlag = TRUE;
- byExeData = new BYTE[wDataSize + 7];
- if (byExeData == NULL)
- {
- return INVALID_DATA;
- }
- memset(byExeData, 0, wDataSize + 7);
- byExeData[0] = 0x1D; //GS
- byExeData[1] = 0x76; //v
- byExeData[2] = 0x30;
- byExeData[3] = 0;
- memcpy(&byExeData[4], lpbyOptionData, wDataSize);
- byExeData[wDataSize + 5] = 0x0a;
- byExeData[wDataSize + 6] = 0x00;
- wCmdSize = wDataSize + 6;
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == SETBARCODEWIDTH)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x77; //w
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- return INVALID_DATA;
- }
- wCmdSize = 3;
- }
- else if (wOperationID == PAPERDIRCETCUT)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x01; //1
- wCmdSize = 3;
- }
- else if (wOperationID == PAPERDIRCETCUTEX) //全切
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x00; //0
- wCmdSize = 3;
- }
- else if (wOperationID == PAPERFEEDCUT) //
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x42; //66
- byCmdData[3] = 0x00; //0
- wCmdSize = 4;
- }
- else if (wOperationID == SETFONTINVERSE) //反白
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x42; //B
- if ((wDataSize == 1) && ((lpbyOptionData[0] & 0x01) == 0x01))
- {
- byCmdData[2] = 0x01;
- }
- else
- {
- byCmdData[2] = 0x00; //0
- }
- wCmdSize = 3;
- }
- else if (wOperationID == INITIALIZ)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x40; //@
- wCmdSize = 2;
- }
- else if (wOperationID == RESET)
- {
- if (lpbyOptionData == NULL)
- {
- return INVALID_BUFFER;
- }
- byCmdData[0] = 0x10; //DLE
- byCmdData[1] = 0x05; //ENQ
- if ((wDataSize > 0)&&
- (lpbyOptionData[0]>=0x01)&&
- (lpbyOptionData[0]<=0x02)) //1~2
- {
- byCmdData[2] = lpbyOptionData[0];
- wCmdSize = 3;
- }
- else //Illegal value
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == SETTOPPRTPOS)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x54; //T
- if ((lpbyOptionData != NULL) && (wDataSize == 1))
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETBLACKMARKSUPP)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x30; //0
- if ( (wDataSize==1)&&(lpbyOptionData[0]==0) )
- {
- byCmdData[3] = 0x00; //Paper without BM
- }
- else
- {
- byCmdData[3] = 0x02; //Paper with BM
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETBLACKMARKPARAM)
- {
- byCmdData[0] = 0x1D;
- byCmdData[1] = 0x28;
- byCmdData[2] = 0x46;
- if ( (wDataSize == 6)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[3] = lpbyOptionData[0];
- byCmdData[4] = lpbyOptionData[1];
- byCmdData[5] = lpbyOptionData[2];
- byCmdData[6] = lpbyOptionData[3];
- byCmdData[7] = lpbyOptionData[4];
- byCmdData[8] = lpbyOptionData[5];
- wCmdSize = 9;
- }
- else //Illegal value
- {
- return INVALID_DATA;
- }
- }
- else if (wOperationID == GETSTATUS_ASY)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x72; //r
- wCmdSize = 2;
- }
- else if (wOperationID == SETFONT)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x66; //f
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is 8*16
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETREDMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x67; //f
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is 8*16
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETINTERCHAR)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x52; //R
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is USA
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETDSMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x47; //R
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is DS Mode
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETULMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x55; //R
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x01; //Default is UL Mode
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETPRINTERMOD) //字符打印模式
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x21; //!
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is Big Char
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETFONTCHNMOD) //汉字字符打印模式
- {
- byCmdData[0] = 0x1C; //FS
- byCmdData[1] = 0x21; //!
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is Big Char
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETFONTLRSPACE) //汉字左右边距设定
- {
- byCmdData[0] = 0x1C; //FS
- byCmdData[1] = 0x53; //!
- if ( (wDataSize == 2)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- byCmdData[3] = lpbyOptionData[1];
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETCHARSIZE) //设置字符放大倍数
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x21; //!
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is normal mode
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETPRINTPOS)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x24; //$
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- if ((lpbyOptionData[0] > m_wPaperWidth) ||
- (lpbyOptionData[0] > 255))
- {
- return INVALID_DATA;
- }
- byCmdData[2] = lpbyOptionData[0];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is 0
- }
- byCmdData[3] = 0x00;
- wCmdSize = 4;
- }
- else if (wOperationID == SETFONTUNDERLINE) //设置下划线
- {
- byCmdData[0] = 0x1C; //ESC
- byCmdData[1] = 0x2D; //-
- byCmdData[3] = 0x1B;
- byCmdData[4] = 0x2D;
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- byCmdData[5] = lpbyOptionData[0];
- }
- wCmdSize = 6;
- }
- else if (wOperationID == SETLINESPACE)
- {
- byCmdData[0] = 0x1B; //ESC
- // byCmdData[1] = 0x33; //3
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- //byCmdData[2] = lpbyOptionData[0];
- if (lpbyOptionData[0] == 0)
- { //默认行高
- byCmdData[1] = 0x32; //2
- wCmdSize = 2;
- }
- else
- {
- byCmdData[1] = 0x33; //3
- // BYTE byDefulat = 27; //默认行高
- // BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
- // byCmdData[2] = byDefulat + lpbyOptionData[0];
- byCmdData[2] = lpbyOptionData[0];
- wCmdSize = 3;
- }
- }
- else
- {
- //byCmdData[2] = 0x1E; //Default is 30
- byCmdData[1] = 0x32;
- wCmdSize = 2;
- }
- // wCmdSize = 3;
- }
- else if (wOperationID == SETFONTBOLD) //设置粗体
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x45; //E
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETVERIRELATEPOS) //相对纵向位移
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x4A; //$
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- // if (lpbyOptionData[0] > 255)
- // {
- // return INVALID_DATA;
- // }
- // BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
- byCmdData[2] = lpbyOptionData[0];
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETHORIRELATEPOS) //相对横向位移
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x5C; //$
- if ( (wDataSize == 2)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0];
- byCmdData[3] = lpbyOptionData[1];
- }
- else
- {
- byCmdData[2] = 0x00; //Default is 0
- byCmdData[3] = 0x00;
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETPRINTAREA)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x57; //W
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //xL
- }
- else
- {
- byCmdData[2] = 0x00; //xL Default is 0
- }
- byCmdData[3] = 0x00; //xH is 0
- byCmdData[4] = 0x00; //yL is 0
- byCmdData[5] = 0x00; //yH is 0
- byCmdData[6] = 0x00; //dxL is 0
- byCmdData[7] = 0x03; //dxH is 3
- byCmdData[8] = 0x00; //dyL is 0
- byCmdData[9] = 0x03; //dyH is 3
- wCmdSize = 10;
- }
- else if (wOperationID == SETLINEPRINTAREA)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x57; //W
- if ( (wDataSize == 2)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- byCmdData[3] = lpbyOptionData[1]; //nH
- }
- else
- {
- byCmdData[2] = 0x00; //nL Default is 0
- byCmdData[3] = 0x00; //nH
- }
- wCmdSize = 4;
- }//
- else if (wOperationID == SETLINEREVERSEPRINT) //选择/取消倒置打印
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x7B; //{
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //n
- }
- else
- {
- byCmdData[2] = 0x00; //Default is 0
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETPAGEMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x4C; //L
- wCmdSize = 2;
- }
- else if (wOperationID == SETSTADMODE)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x53; //S
- wCmdSize = 2;
- }
- else if (wOperationID == SETPRESENTER)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x38; //8
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[3] = lpbyOptionData[0]; //n
- }
- else
- {
- byCmdData[3] = 0x01; //Default is 1
- }
- wCmdSize = 4;
- }
- else if (wOperationID == SETPRESENTERTIME)
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x39; //9
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[3] = lpbyOptionData[0]; //t
- }
- else
- {
- byCmdData[3] = 0x1e; //Default is 30s
- }
- wCmdSize = 4;
- }
- else if (wOperationID == REALTIME_RESET) //Real time reset
- {
- byCmdData[0] = 0x10; //DLE
- byCmdData[1] = 0x04; //EOT
- byCmdData[2] = 0x0A; //10
- wCmdSize = 3;
- }
- else if (wOperationID == REALTIME_STATUS) //Real time get status
- {
- byCmdData[0] = 0x10; //DLE
- byCmdData[1] = 0x04; //EOT
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=5)&&
- (lpbyOptionData[0]<=7) )
- {
- byCmdData[2] = lpbyOptionData[0]; //n
- }
- else
- {
- return INVALID_DATA; //No default value
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETALIGN) //Set align
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x61; //a
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=0)&&
- (lpbyOptionData[0]<=2) )
- {
- byCmdData[2] = lpbyOptionData[0]; //n
- }
- else
- {
- byCmdData[2] = 0x00; //Default left
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETFEEDLEN) //Set feed length before print
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x63; //c
- byCmdData[2] = 0x31; //1
- //Low byte
- if ( (lpbyOptionData != NULL)&&
- (wDataSize >= 1) )
- {
- byCmdData[3] = lpbyOptionData[0]; //nL
- }
- else
- {
- byCmdData[3] = 0x00; //Default 0
- }
- //High byte
- if ( (lpbyOptionData != NULL)&&
- (wDataSize >= 2) )
- {
- byCmdData[4] = lpbyOptionData[1]; //nH
- }
- else
- {
- byCmdData[4] = 0x00; //Default 0
- }
- wCmdSize = 5;
- }
- else if (wOperationID == SETCHARSPACE) //Set char space
- {
- byCmdData[0] = 0x1B; //ESC
- byCmdData[1] = 0x20; //SP
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL) )
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- }
- else
- {
- byCmdData[2] = 0x00; //Default 0
- }
- wCmdSize = 3;
- }
- else if (wOperationID == GETDEVINFO) //Get device info
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x49; //I
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=68)&&
- (lpbyOptionData[0]<=153) )
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- }
- else
- {
- byCmdData[2] = 68; //Default 68
- }
- wCmdSize = 3;
- }
- else if (wOperationID == SETLEFTMARGIN) //Set left margin
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x4C; //L
- if ( (lpbyOptionData != NULL)&&
- (wDataSize == 2))
- {
- byCmdData[2] = lpbyOptionData[0]; //nL
- byCmdData[3] = lpbyOptionData[1]; //nH
- }
- else
- {
- byCmdData[2] = 0; //Default 0
- byCmdData[3] = 0; //nH //Default 0
- }
- wCmdSize = 4;
- }
- else if ( wOperationID == SETBITMAPNUM ) //Set bitmap number
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x23; //#
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=0)&&
- (lpbyOptionData[0]<=7) )
- {
- byCmdData[2] = lpbyOptionData[0]; //Bitmap number
- }
- else
- {
- byCmdData[2] = 0; //Default 0
- }
- wCmdSize = 3;
- }
- else if ( wOperationID == SETDOWNLOADBITMAP ) //Download bitmap to RAM
- {
- if ((wDataSize >= 3)&&
- (lpbyOptionData != NULL))
- {
- bFlag = TRUE;
- byExeData = new BYTE[wDataSize + 3];
- if (byExeData == NULL)
- {
- return INVALID_DATA;
- }
- memset(byExeData, 0, wDataSize + 3);
- byExeData[0] = 0x1D; // GS
- byExeData[1] = 0x2A; // *
- memcpy(&byExeData[2], lpbyOptionData, wDataSize);
- wCmdSize = wDataSize + 2;
- }
- else
- {
- return INVALID_DATA;
- }
- }
- else if ( wOperationID == SETPRINTRAMBITMAP ) //Print RAM bitmap
- {
- byCmdData[0] = 0x1D; // GS
- byCmdData[1] = 0x2F; // /
- if ( (wDataSize == 1)&&
- (lpbyOptionData != NULL)&&
- (lpbyOptionData[0]>=0)&&
- (lpbyOptionData[0]<=3) )
- {
- byCmdData[2] = lpbyOptionData[0]; //Bitmap number
- }
- else
- {
- byCmdData[2] = 0; //Default 0
- }
- wCmdSize = 3;
- }
- else if ( wOperationID == SETXYMOVEUNIT ) //Set X/Y move unit to mm (GS P xL xH yL yH Real command is GS P x y)
- {
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x50; //P
- byCmdData[2] = 0x19; //25 1Inch = 25.4mm
- byCmdData[3] = 0x19;
- wCmdSize = 4;
- }
- //Check command data
- if (wCmdSize == 0)
- {
- return INVALID_DATA;
- }
- BYTE *byData = NULL;
- if (!bFlag)
- {
- byData = byCmdData;
- }
- else
- {
- byData = byExeData;
- }
- //Write Command
- iRet = g_SerialComm.SendData(m_hDevHnd, (LPBYTE)byData, (int)wCmdSize);
- if (bFlag)
- {
- bFlag = FALSE;
- }
- if (byExeData != NULL)
- {
- delete [] byExeData;
- byExeData = NULL;
- }
- LOG_FUNCTION();
- if ( iRet < 0 )
- {
- LogXE(byData, wCmdSize, "Send");
- return HARDWARE_ERROR;
- }
- LogXM(byData, wCmdSize, "Send");
- return ERROR_SUCCESS;
- }
- //////////////////////////////////////////////////
- //Function Name:
- //History:
- //RPR_EXE: 00-01-02-01 2013-02-06 Lichun(Create)
- //////////////////////////////////////////////////
- DWORD DeviceCtrl::SendData( LPBYTE lpbyOptionData, WORD wDataSize )
- {
- int iRet = 0;
- LOG_FUNCTION();
- LogM("SendData is called");
- //Check command data
- if ( (wDataSize==0)||
- (lpbyOptionData==NULL) )
- {
- LogE("SendData INVALID_DATA.");
- return INVALID_DATA;
- }
- LogM("f_WriteData is calling");
- //Write Command
- iRet = g_SerialComm.SendData( m_hDevHnd, lpbyOptionData, (int)wDataSize );
- LogM("f_WriteData iRet=%d, wDataSize = %d", iRet, wDataSize);
- LogXM(lpbyOptionData, wDataSize, "bmp");
- if ( iRet < 0 )
- {
- LogXE(lpbyOptionData, wDataSize, "Send");
- return HARDWARE_ERROR;
- }
- LogXM(lpbyOptionData, wDataSize, "Send");
- return ERROR_SUCCESS;
- }
- //////////////////////////////////////////////////
- //Function Name:
- //History:
- //RPR_EXE: 01-02-27-01 2016-12-26 Liuxin(Create)
- //////////////////////////////////////////////////
- BOOL DeviceCtrl::SetParam( WORD wWidth )
- {
- m_wPaperWidth = wWidth;
- return TRUE;
- }
- BOOL DeviceCtrl::bWriteCommand( LPVOID Buffer, int iLen )
- {
- char* pBuf = (char*)Buffer;
- int writedCount;
- int nCount = iLen / 2048;
- bool bEx = false;
- if(iLen % 2048 != 0)
- {
- bEx = true;
- }
- for(int i = 0; i < nCount; i++)
- {
- writedCount = g_SerialComm.SendData(m_hDevHnd, (LPBYTE)(pBuf + i*2048), 2048);
- if (writedCount != 2048)
- {
- LogE( __FILE__, __LINE__, "f_WriteData() fail." );
- return false;
- }
- }
- if(bEx)
- {
- writedCount = g_SerialComm.SendData(m_hDevHnd, (LPBYTE)(pBuf + nCount*2048), iLen - nCount*2048);
- if (writedCount != iLen - nCount*2048)
- {
- LogE( __FILE__, __LINE__, "f_WriteData fail." );
- return false;
- }
- }
- return true;
- }
- BOOL DeviceCtrl::bCutPaper()
- {
- LOG_FUNCTION();
- LogM("bCutPaper() entry.");
- INT iRet = 0;
- WORD wCmdSize = 0;
- BYTE byCmdData[16];
- memset( byCmdData, 0x00, sizeof(byCmdData) );
- byCmdData[0] = 0x1D; //GS
- byCmdData[1] = 0x56; //V
- byCmdData[2] = 0x41; //66
- byCmdData[3] = 0x00; //0
- wCmdSize = 4;
- iRet = g_SerialComm.SendData( m_hDevHnd, byCmdData, (int)wCmdSize );
- LogM("bCutPaper f_WriteData iRet=%d, wDataSize = %d", iRet, wCmdSize);
- LogXM(byCmdData, wCmdSize, "Send");
- return TRUE;
- }
|