账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用vs写c语言打印条形码小票,输出烫字乱码是怎么回事?
    49
    0
    #include"stdafx.h"#include"PrinterCommand.h"#include"apn_basic_type.h"#include "TicketTemplate.h"#include <time.h>#include<WinSock2.h>#include<string.h>#pragma comment(lib,"ws2_32.lib")#include<iostream>#include <Ws2tcpip.h>#include"socket.h"#include<stdio.h>#include<xkeycheck.h>#define ESC (27)//换码#define FS (28)//文本分隔符#define GS (29)//组分隔符#define DLE (16)//数据连接换码#define EOT (4)//传输结束#define ENQ (5)//询问字符#define SP (32)//空格#define HT (9)//横向列表#define LF (10)//打印并换行(水平定位)#define CR (13)//归位键#define FF (12)//走纸控制(打印并回到标准模式(在页模式下) )#define CAN (24)//作废(页模式下取消打印数据 )//---------------------- - 打印机初始化---------------------------- -/*打印机初始化*/Type_Char init_printer[3] = { ESC,64 , 0};Type_Char nextLine[2] = { LF,0 };//------------------------下划线----------------------------- /** * 绘制下划线(1点宽) * @return */Type_Char underlineWithOneDotWidthOn[4] = { ESC,45,1, 0};/** * 绘制下划线(2点宽) * @return */Type_Char underlineWithTwoDotWidthOn[4] = { ESC,45,2,0 };/** * 取消绘制下划线 * @return */Type_Char underlineOff[3] = { ESC,45,0 };//------------------------加粗----------------------------- /** * 选择加粗模式 * @return */Type_Char boldOn[4] = { ESC,69,0xF ,0 };/** * 取消加粗模式 * @return */Type_Char boldOff[3] = { ESC,69,0 };//------------------------对齐-----------------------------/** * 居中对齐 * @return */Type_Char alignCenter[4] = { ESC,97,1,0};//------------------------字体变小----------------------------- /** * 字体取消倍宽倍高 * @param num * @return */Type_Char fontSizeSetSmall[4] = { ESC,33,0,0};//------------------------字体变大----------------------------- /** * 字体变大为标准的n倍 * @param num * @return */Type_Char fontSizeSetBig[4]{ 29 ,33 ,34,0};//************************切纸***************************** /** * 进纸并全部切割 * @return */Type_Char feedPaperCutAll[5] = { 29,86,65,8,0};/** * 进纸并切割(左边留一点不切) * @return */Type_Char feedPaperCutPartial[4] = { 29,86,66,0};/****** 欢迎光临 ******/Type_Char title[] = "欢迎光临";/****** 获取时间 ******/Type_Char buf[128];void getTime(){ time_t t; memset(buf, 0, sizeof(buf)); struct tm *tmp; t = time(NULL); tmp = localtime(&t); strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tmp); //设置日期格式}/****** 储物柜号: ******/Type_Char chuWuGuiShowCodeTitle[] = "储物柜号:";/****** 602 ******/Type_Char chuWuGuiShowCodeNo[] = "602";/****** 条形码 ******///设置条形码宽度Type_Char setBarCodeWidth[4] = { GS ,119,0 ,0};Type_Char BarCode[20] = { 0 };void printBarCode(){ Type_Char random[] = { 0 };//从条形码数据获取 srand((unsigned int)time(NULL)); const char ret = rand() %90+10;//生成10-99的随机数 random[0] =ret; Type_Char aBarCode[20] = { GS,107,73,16,123,65}; Type_Char cardIDstr[] = "003268798";//从条形码数据获取cardID strcat(BarCode, aBarCode); strcat(BarCode, "AA"); strcat(BarCode, cardIDstr); strcat(BarCode,random); strcat(BarCode, random);}// /******* 提示 ******/Type_Char tips[] = "注意:本小票开柜一次后失效。";// /******* 空格 ******/Type_Char hspace[] = " ";Type_Char*str = NULL;int len = 0;/*************小票模板定义***********/void byteMerger() { getTime(); printBarCode(); //获取系统时间并把时间存到数组中 Type_Char *cmdBytes[] = { setBarCodeWidth, alignCenter,boldOn,fontSizeSetBig,title, fontSizeSetSmall,boldOff,nextLine, alignCenter,buf,hspace,chuWuGuiShowCodeTitle,chuWuGuiShowCodeNo,nextLine, alignCenter,BarCode,nextLine, nextLine, alignCenter,fontSizeSetSmall,tips,nextLine, feedPaperCutAll }; for (int i = 0; i < sizeof(cmdBytes) / sizeof(cmdBytes[0]); i++) { len += strlen(cmdBytes[i]); } str = (char*)malloc(len); memset(str, 0, len); for (int i = 0; i < sizeof(cmdBytes) / sizeof(cmdBytes[0]); i++) { strcat(str, cmdBytes[i]); }}
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 梧桐听雨 普通会员 1楼

      在VS中写C语言打印条形码小票,出现烫字乱码的情况,可能有以下几个原因:

      1. 字符集问题:VS可能没有安装对应的字符集,导致在输出时使用了不同的字符集。可以尝试安装并启用合适的字符集。

      2. 字符编码问题:VS可能没有正确地处理输入的字符串。可以尝试使用UTF-8等字符编码。

      3. 打印格式问题:VS可能没有正确地设置打印格式。可以尝试设置适当的字体、字号、颜色等。

      4. 编译问题:VS可能没有正确地编译和链接代码。可以尝试重新编译代码或者添加相应的库。

      5. 系统环境问题:VS可能没有正确的安装了某些必要的系统环境,如JPEG或PNG等格式的支持。

      6. 硬件问题:VS可能没有安装必要的硬件驱动,导致打印出现问题。

      为了更好地解决问题,建议您先尝试上述解决方法,如果问题依然存在,可能需要重新考虑是否需要升级VS或更换硬件。

    • 天蚕土豆 普通会员 2楼

      在VS中写C语言打印条形码小票,出现烫字乱码的情况,可能有以下几个原因:

      1. 字符集问题:VS可能没有安装对应的字符集,导致在输出时使用了不同的字符集。可以尝试安装并启用合适的字符集。

      2. 字符编码问题:VS可能没有正确地处理输入的字符串。可以尝试使用UTF-8等字符编码。

      3. 打印格式问题:VS可能没有正确地设置打印格式。可以尝试设置适当的字体、字号、颜色等。

      4. 编译问题:VS可能没有正确地编译和链接代码。可以尝试重新编译代码或者添加相应的库。

      5. 系统环境问题:VS可能没有正确的安装了某些必要的系统环境,如JPEG或PNG等格式的支持。

      6. 硬件问题:VS可能没有安装必要的硬件驱动,导致打印出现问题。

      为了更好地解决问题,建议您先尝试上述解决方法,如果问题依然存在,可能需要重新考虑是否需要升级VS或更换硬件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部