隨筆-22  評論-6  文章-17  trackbacks-0

          /*$T BYBARP~1.H GC 1.137 09/13/05 08:37:52 */
          #ifndef ByBarPrinterH
           #define ByBarPrinterH
           #include "vcl.h"
           #define BPLA_OK    1000 //一切正常
                    ///
           #define BPLA_COMERROR  1001 //通訊錯或者未聯接打印機
           #define BPLA_PARAERROR  1002 //參數錯誤
           #define BPLA_FILEOPENERROR 1003 //文件打開錯誤
           #define BPLA_FILEREADERROR 1004 //文件讀錯誤
           #define BPLA_FILEWRITEERROR 1005 //文件寫錯誤
           #define BPLA_FILEERROR  1006 //文件不合要求
           #define BPLA_NUMBEROVER  1007 //指定的接收信息數量過大
           #define BPLA_IMAGETYPEERROR 1008 //圖象文件格式不正確

           #define BPLA_PAPERSHORT  1009 //缺紙
           #define BPLA_RIBBIONSHORT 1010 //缺色帶
           #define BPLA_BUSY   1011 //解釋器忙
           #define BPLA_PAUSE   1012 //暫停
                    ///中
           #define BPLA_HEADHEAT  1013 //打印頭過熱
           #define BPLA_HEADOVER  1014 //打印頭抬起
           #define BPLA_CUT   1015 //切刀錯
           #define BPLA_READERROR  1016 //read error

          //打開端口
          typedef int (__stdcall *mBY_Open_Port) (int devtype, int porttype, char *opencode, int codelength, int baudrate);

          //打印
          typedef int (__stdcall *mBY_Print_Label)
           (
            int LabelType,
            const char *JiDaJu,
            const char *FenFaJu,
            const char *TiaoMaXinXi,
            const char *HaoMa,
            const char *JianShu,
            const char *ZhongLiang,
            const char *ZhuanKouJuDaiHao,
            const char *XingHao,
            const char *BeiZhu,
            const char *BiaoPaiBianHao,
            const char *ZhongLeiJianCheng,
            const char *BenZhuan,
            int Pieces
           );

          //查詢狀態
          typedef int (__stdcall *mBY_Query_Status) ();

          //關閉端口
          typedef int (__stdcall *mBY_Close_Port) (char *closecode, long codelength);
          class PACKAGE CByBarPrinter
          {
          public:
           long OpenPort(long nPcIndex, long nPortIndex, long baudrate);
           void ClosePort(void);
           long PrintLabel
             (
              long LabelType,
              String JiDaJu,
              String FenFaJu,
              String TiaoMaXinXi,
              String HaoMa,
              String JianShu,
              String ZhongLiang,
              String ZhuanKouJuDaiHao,
              String XingHao,
              String BeiZhu,
              String BiaoPaiBianHao,
              String ZhongLeiJianCheng,
              String BenZhuan,
              long Pieces
             );
           CByBarPrinter(void);
           long GetStatus(void);
          private:
           HINSTANCE m_hDll;
           bool  LoadLib(void);
          };
          #endif

          /*$T BYBARP~1.CPP GC 1.137 09/13/05 08:37:52 */
          #pragma hdrstop
          #include "ByBarPrinter.h"

          /* ---------------------------------------------------------------------------------------------------------------------
           ----------------------------------------------------------------------------------------------------------------------- */
          CByBarPrinter::CByBarPrinter(void)
          {
           m_hDll = NULL;
          }

          /* ---------------------------------------------------------------------------------------------------------------------
           ----------------------------------------------------------------------------------------------------------------------- */
          bool CByBarPrinter::LoadLib(void)
          {
           if(m_hDll == NULL) m_hDll = ::LoadLibrary("byprndll.dll");
           if(m_hDll == NULL)
            return false;
           else
            return true;
          }

          /* ---------------------------------------------------------------------------------------------------------------------
           ----------------------------------------------------------------------------------------------------------------------- */
          long CByBarPrinter::OpenPort(long nPcIndex, long nPortIndex, long baudrate)
          {
           long retCode;
           if(!LoadLib())
           {
            retCode = -2;
            return retCode;
           }

           mBY_Open_Port BY_Open_Port;
           BY_Open_Port = (mBY_Open_Port) GetProcAddress(m_hDll, "BY_Open_Port");
           if(BY_Open_Port == NULL)
           {
            retCode = -1;
           }
           else
           {
            String szCom;
            szCom = "COM";
            szCom += IntToStr(nPortIndex);

            int nLen = szCom.Length();

            retCode = BY_Open_Port(nPcIndex, nPortIndex, szCom.c_str(), nLen, 19200);
           }

           return retCode;
          }

          /* ---------------------------------------------------------------------------------------------------------------------
           ----------------------------------------------------------------------------------------------------------------------- */
          void CByBarPrinter::ClosePort(void)
          {
           if(!LoadLib()) return;

           mBY_Close_Port BY_Close_Port;
           BY_Close_Port = (mBY_Close_Port) GetProcAddress(m_hDll, "BY_Close_Port");

           char CloseCode[50];
           int  CodeLength = 0;
           memset(CloseCode, 0, 50);
           BY_Close_Port(CloseCode, CodeLength);

           //FreeLibrary(m_hDll);
           delete[] CloseCode;
           return;
          }

          /* ---------------------------------------------------------------------------------------------------------------------
           ----------------------------------------------------------------------------------------------------------------------- */
          long CByBarPrinter::PrintLabel
          (
           long LabelType,
           String JiDaJu,
           String FenFaJu,
           String TiaoMaXinXi,
           String HaoMa,
           String JianShu,
           String ZhongLiang,
           String ZhuanKouJuDaiHao,
           String XingHao,
           String BeiZhu,
           String BiaoPaiBianHao,
           String ZhongLeiJianCheng,
           String BenZhuan,
           long Pieces
          )
          {
           long retCode;
           if(!LoadLib())
           {
            retCode = -2;
            return retCode;
           }

           //USES_CONVERSION;
           mBY_Print_Label BY_Print_Label;
           BY_Print_Label = (mBY_Print_Label) GetProcAddress(m_hDll, "BY_Print_Label");
           if(BY_Print_Label == NULL)
           {
            retCode = -1;
            return S_OK;
           }

           retCode = BY_Print_Label
            (
             LabelType,
             JiDaJu.c_str(),
             FenFaJu.c_str(),
             TiaoMaXinXi.c_str(),
             HaoMa.c_str(),
             JianShu.c_str(),
             ZhongLiang.c_str(),
             ZhuanKouJuDaiHao.c_str(),
             XingHao.c_str(),
             BeiZhu.c_str(),
             BiaoPaiBianHao.c_str(),
             ZhongLeiJianCheng.c_str(),
             BenZhuan.c_str(),
             Pieces
            );

           return retCode;
          }

          /* ---------------------------------------------------------------------------------------------------------------------
           ----------------------------------------------------------------------------------------------------------------------- */
          long CByBarPrinter::GetStatus(void)
          {
           long state;
           if(!LoadLib())
           {
            state = -1;
            return state;
           }

           mBY_Query_Status BY_Query_Status;
           BY_Query_Status = (mBY_Query_Status) GetProcAddress(m_hDll, "BY_Query_Status");
           if(BY_Query_Status == NULL)
            state = -1;
           else
            state = BY_Query_Status();

           return state;
          }

          #pragma package(smart_init)

          posted on 2005-10-31 13:54 surffish 閱讀(245) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 海伦市| 拉孜县| 玉溪市| 竹山县| 饶河县| 馆陶县| 鄂伦春自治旗| 赤峰市| 孝义市| 镇原县| 五峰| 民权县| 胶州市| 霍城县| 东方市| 辛集市| 竹北市| 平原县| 焉耆| 阿图什市| 罗定市| 特克斯县| 灌南县| 隆安县| 玉门市| 阿荣旗| 潜山县| 南靖县| 揭西县| 福泉市| 焉耆| 定安县| 简阳市| 金阳县| 巴南区| 安远县| 黄浦区| 达孜县| 长乐市| 伊宁县| 丰城市|