【问题标题】:cen/xfs how to initialize a ptr_raw_data to send code page to the printercen/xfs 如何初始化 ptr_raw_data 以将代码页发送到打印机
【发布时间】:2021-07-20 18:24:40
【问题描述】:

我正在尝试向打印机发送以下命令以使用代码页 500 设置打印机,但这对我不起作用,我需要在 raw_data 的初始化中发送此 1B 74 02 。通过这样做,我会丢失所有编码。

std::string fmtData = text;
LPBYTE buffer[6];

memset(buffer, 0x00, sizeof(buffer));
buffer[0] = (LPBYTE)0x1B;
buffer[1] = (LPBYTE)0x74;
buffer[2] = (LPBYTE)0x02;

WFSPTRRAWDATA print_data = {
        WFS_PTR_INPUTDATA,
        fmtData.size(),
        (LPBYTE)buffer
    };

wfs_execute(WFS_CMD_PTR_RAW_DATA, &print_data, TIMEOUT_WFS_CMD_PTR_RAW_DATA, wfsResult);

【问题讨论】:

  • LPBYTE buffer[6] 是一个指向字节数组的 6 个指针,而不是 6 个字节的数组。您只需将该数组定义更改为 BYTE buffer[6],设置三个字节,并将 ulSize 设置为 3。该命令取决于供应商,因此您的 SPI 和您的打印机必须支持它才能工作。

标签: cen-xfs


【解决方案1】:

我发现了我的麻烦,我试图同时做每件事,例如发送文本和代码页。但我可以单独做,这种方式对我有用。

第 1 步:将代码页发送到打印机

const char *command = "\x1B\x74\x02";

WFSPTRRAWDATA print_data = {
    WFS_PTR_NOINPUTDATA,
    sizeof(command),
    (LPBYTE)command
};

sep::xfs::unique_wfsresult_ptr wfsResult;
if (result = wfs_execute(WFS_CMD_PTR_RAW_DATA, &print_data, TIMEOUT_WFS_CMD_PTR_RAW_DATA, wfsResult)){
    return result;
}

第 2 步:发送文本

std::string fmtData = text;
replace_special_chars(fmtData);

WFSPTRRAWDATA print_data = {
    WFS_PTR_NOINPUTDATA,
    fmtData.size(),
    (LPBYTE)fmtData.c_str()
};

unique_wfsresult_ptr wfsResult;
return wfs_execute(WFS_CMD_PTR_RAW_DATA, &print_data, TIMEOUT_WFS_CMD_PTR_RAW_DATA, wfsResult);

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多