串口指令控制打印机

int  _stdcall PosPrint(CString text,int FontSize,int Alignment)
{


char ComNo[256];
memset(ComNo,0,sizeof(ComNo));
CString m_strCurPath = GetCurModPath();
CString m_striniPath =m_strCurPath+"\\ComConfig.ini";


if (text=="")
{
return 0;
}


GetPrivateProfileString("COMNO","PrintCom","",ComNo,MAX_PATH,m_striniPath);
char com[5];


HANDLE hFile = CreateFile(ComNo,GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING, 

FILE_ATTRIBUTE_OFFLINE, NULL);
//打开串口句柄
if (INVALID_HANDLE_VALUE==hFile)
{
return -1;
}

DCB getDCB;
GetCommState(hFile,&getDCB);
getDCB.BaudRate = 38400;
getDCB.ByteSize =8;
getDCB.Parity = NOPARITY;
getDCB.StopBits = ONESTOPBIT;
getDCB.fBinary = TRUE;
getDCB.fParity = FALSE;
SetCommState(hFile,&getDCB);

DWORD d;
int iRet;
//初始化打印机
memset( com, 0, sizeof(com));
memcpy( com, "\x1B\x40", 2);
iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


//设置对齐方式
memset( com, 0, sizeof(com));
switch(Alignment)
{
case 0:
memcpy( com, "------------------", 3);//指令已略
break;
case 1:
memcpy( com, "------------------", 3);//指令已略
break;
case 2:
memcpy( com, "------------------", 3);//指令已略
break;
default:
memcpy( com, "------------------", 3);//指令已略
break;
}
iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


//设置字符大小
memset( com, 0, sizeof(com));
switch(FontSize)
{
case 1:
memcpy( com, "------------------", 3);//指令已略
break;
case 2:
memcpy( com, "------------------", 3);//指令已略
break;
case 3:
memcpy( com, "------------------", 3);//指令已略
break;
case 4:
memcpy( com, "------------------", 3);//指令已略
break;
case 5:
memcpy( com, "------------------", 3);//指令已略
break;
case 6:
memcpy( com, "------------------", 3);//指令已略
break;
case 7:
memcpy( com, "------------------", 3);//指令已略
break;
case 8:
memcpy( com, "------------------", 3);//指令已略
break;
default:
memcpy( com, "------------------", 3);//指令已略
break;


}
iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


//设置行间距
memset( com, 0, sizeof(com));
memcpy( com, "----------------", 3);
iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);
//初始化黑标
// memset( com, 0, sizeof(com));
// memcpy( com, "\--------------", 2);
// iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


//开始打印列
// memset( com, 0, sizeof(com));
// memcpy( com, "-------------------", 4);
// iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


//设置左侧空白量
memset( com, 0, sizeof(com));
memcpy( com, "---------------", 4);
  iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


    //设置可打印区域
  memset( com, 0, sizeof(com));
  memcpy( com, "\-------------------", 4);
  iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);



//打印并换行
memset( com, 0, sizeof(com));
memcpy( com, "--------------", 1);
iRet=WriteFile(hFile,text,text.GetLength(),&d,NULL);
iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


//打印并进纸N行
// memset( com, 0, sizeof(com));
// memcpy( com, "-----------------", 3);
// iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);
  //走纸并切纸
// memset( com, 0, sizeof(com));
// memcpy( com, "---------------------", 4);
// iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);


CloseHandle(hFile);
return 0;
}


int  _stdcall CutPaper()
{
char ComNo[256];
memset(ComNo,0,sizeof(ComNo));
CString m_strCurPath = GetCurModPath();
CString m_striniPath =m_strCurPath+"\\ComConfig.ini";
GetPrivateProfileString("COMNO","PrintCom","",ComNo,MAX_PATH,m_striniPath);


HANDLE hFile = CreateFile(ComNo,GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING, 

FILE_ATTRIBUTE_OFFLINE, NULL);
//打开串口句柄
if (INVALID_HANDLE_VALUE==hFile)
{
return -1;
}

DCB getDCB;
GetCommState(hFile,&getDCB);
getDCB.BaudRate = 38400;
getDCB.ByteSize =8;
getDCB.Parity = NOPARITY;
getDCB.StopBits = ONESTOPBIT;
getDCB.fBinary = TRUE;
getDCB.fParity = FALSE;
SetCommState(hFile,&getDCB);
char com[5];
DWORD d;
int iRet;


//走纸并切纸
memset( com, 0, sizeof(com));
memcpy( com, "------------------------", 4);
  iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);

CloseHandle(hFile);


return 1;
}
int  _stdcall GoPaper()
{
char ComNo[256];
memset(ComNo,0,sizeof(ComNo));
CString m_strCurPath = GetCurModPath();
CString m_striniPath =m_strCurPath+"\\ComConfig.ini";
CString str;
char com[6];
// str.Format("\\x%2x",n);

GetPrivateProfileString("COMNO","PrintCom","",ComNo,MAX_PATH,m_striniPath);


HANDLE hFile = CreateFile(ComNo,GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING, 

FILE_ATTRIBUTE_OFFLINE, NULL);
//打开串口句柄
if (INVALID_HANDLE_VALUE==hFile)
{
return -1;
}

DCB getDCB;
GetCommState(hFile,&getDCB);
getDCB.BaudRate = 38400;
getDCB.ByteSize =8;
getDCB.Parity = NOPARITY;
getDCB.StopBits = ONESTOPBIT;
getDCB.fBinary = TRUE;
getDCB.fParity = FALSE;
SetCommState(hFile,&getDCB);

DWORD d;
int iRet;
//打印并进纸10行
memset( com, 0, sizeof(com));
sprintf( com, "------------------------0");


  iRet=WriteFile(hFile,com,sizeof(com),&d,NULL);
CloseHandle(hFile);


return 1;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现西门子PLC控制打印机打印,您可以遵循以下步骤: 1. 确保您已经安装好了西门子PLC编程环境(如STEP 7或TIA Portal)并熟悉其操作。 2. 首先,您需要了解打印机的通信协议和接口。斑马打印机通常支持标准串行通信协议(如RS232或RS485)或网络通信协议(如TCP/IP)。请查看打印机的技术手册或文档以获取详细的通信协议信息。 3. 在PLC编程环境中,创建一个新的程序,并配置与打印机通信的通信模块。根据打印机的通信协议,选择合适的通信模块和通信参数。 4. 编写PLC程序来控制打印机。根据您的需求,您可以使用PLC的输出模块来控制打印机的启动、停止和打印指令。根据打印机的通信协议,您可能需要发送特定的命令或数据来触发打印操作。 5. 在PLC程序中添加逻辑来处理打印机的状态和错误信息。您可以使用PLC的输入模块来读取打印机的状态信息,例如打印完成、纸张用尽等。根据需要,您可以采取相应的措施,例如停止打印或报警。 6. 最后,测试您的PLC程序。确保PLC能够正确地与打印机通信,并能够按照您的预期进行打印操作。 请注意,以上步骤仅为一般指导,具体实现可能因打印机型号、PLC型号和通信协议而有所差异。建议您参考相关的西门子PLC和斑马打印机的文档和技术资料,以及咨询相关领域的专业人士,以确保正确实现您的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值