用vs2010 c++编写收银机开钱箱
来源:互联网 发布:网络机顶盒恢复出厂 编辑:程序博客网 时间:2024/04/27 07:46
1.环境 Windows7 vs2010
2.语言 c++
3.设备 钱箱与打印机的LPT1口相连
4.控制指令 27 112 7(十进制)
5.代码
打开LPT1文件
向文件中写入命令
关闭文件
另外,在网上还查到一些别的指令,如 27 112 0 60 225(十进制的)。但是中间的那个0会被看成空字符,指令会被截断,不知道用什么方法解决。
2.语言 c++
3.设备 钱箱与打印机的LPT1口相连
4.控制指令 27 112 7(十进制)
5.代码
点击(此处)折叠或打开
- CString sPort;
- //sPort.Format(_T("\\\\.\\LPT1"));//两种方法都行
- sPort.Format(_T("LPT1"));
- #if 1
- //设置为重叠 异步IO
- HANDLE hPort = CreateFile(sPort,GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);//创建文件
- if (hPort == INVALID_HANDLE_VALUE || hPort == (HANDLE)ERROR_INVALID_HANDLE)
- {
- CString lsreturn = L"open fail";
- ExecutePrint(rect,LogFont,pDC,lsreturn.GetBuffer(0),lsreturn.GetLength(),DT_CENTER | DT_BOTTOM | DT_SINGLELINE);
- return false;
- }
- char lco[4];
-
- lco[0] = 27;
- lco[1] = 112;
- lco[2] = 7;
- lco[3] = '\0';
- DWORD writebyte = 0;
- DWORD writecount = 4;
- OVERLAPPED* pOverlapped = new OVERLAPPED;
- ZeroMemory(pOverlapped, sizeof(OVERLAPPED));
- pOverlapped->Offset = 0;
- pOverlapped->OffsetHigh = 0;
- pOverlapped->hEvent = 0;
- //pOverlapped->hEvent = (HANDLE) this;
- int lret = 0;
- lret = WriteFile(hPort,lco,writecount,&writebyte,pOverlapped);//向文件中直接写命令
- if (lret == 0)
- {
- int err = GetLastError();
- if (GetLastError() == ERROR_IO_PENDING)//重叠IO进行中
- {
- GetOverlappedResult(hPort,pOverlapped,&writebyte,true);
- }
- else//其他的错误
- {
- delete pOverlapped;
- CloseHandle(hPort);
- CString lsreturn = L"Failed to write";
- ExecutePrint(rect,LogFont,pDC,lsreturn.GetBuffer(0),lsreturn.GetLength(),DT_CENTER | DT_BOTTOM | DT_SINGLELINE);
- return false;
- }
- }
- #endif
- #if 0
- //同步IO 2种方法都可以
- HANDLE hPort = CreateFile(sPort,GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING, 0, NULL);
- if (hPort == INVALID_HANDLE_VALUE || hPort == (HANDLE)ERROR_INVALID_HANDLE)
- {
- CString lsreturn = L"open fail";
- ExecutePrint(rect,LogFont,pDC,lsreturn.GetBuffer(0),lsreturn.GetLength(),DT_CENTER | DT_BOTTOM | DT_SINGLELINE);
- return false;
- }
- char lco[4];
- lco[0] = 27;
- lco[1] = 112;
- lco[2] = 7;
- lco[3] = '\0';
- DWORD writebyte = 0;
- DWORD writecount = 4;
- int lret = 0;
- lret = WriteFile(hPort,lco,writecount,&writebyte,NULL);
- if (lret == 0)
- {
- int err = GetLastError();
- CloseHandle(hPort);
- CString lsreturn = L"Failed to write";
- ExecutePrint(rect,LogFont,pDC,lsreturn.GetBuffer(0),lsreturn.GetLength(),DT_CENTER | DT_BOTTOM | DT_SINGLELINE);
- return false;
- }
- #endif
- CloseHandle(hPort);
打开LPT1文件
向文件中写入命令
关闭文件
另外,在网上还查到一些别的指令,如 27 112 0 60 225(十进制的)。但是中间的那个0会被看成空字符,指令会被截断,不知道用什么方法解决。
0
上一篇:大话设计模式源码
下一篇:sprintf你知道多少
相关热门文章
- VS2010 运行时找不到DLL
- VS2010 查看DLL接口
- VS2010 预编译头文件来自编译...
- VS2010 Windows制作DLL
- VS2010 fatal error LNK1123: ...
- test123
- 编写安全代码——小心有符号数...
- 使用openssl api进行加密解密...
- 一段自己打印自己的c程序...
- sql relay的c++接口
- 一个简单的shell脚本问题...
- 网站如何做图片的防盗链功能呢...
- 如何将printf输出的字符(含有...
- 嵌入式linux wifi移植 libert...
- Ø ⊆ {Ø} 是否是对的 ,这么...
给主人留下些什么吧!~~
评论热议
0 0
- 用vs2010 c++编写收银机开钱箱
- C#开钱箱
- 开钱箱通用指令
- delphi调用并口开钱箱
- swing 程序 pos 开钱箱
- 无驱动打印开钱箱
- 佳博usb打印机开钱箱
- 用VS2010编写C程序或VC++程序的步骤
- 使用VS2010编写Python的C扩展
- delphi LPT1端口打印与开钱箱
- delphi LPT1端口打印与开钱箱
- 编写lua的c函数是要加extern "C",我用的是vs2010
- 在VS2010下,用C语言编写pthread多线程程序的配置
- VS2010编写第一个C语言小程序
- vs2010编写C和解决窗口一闪而过的方法
- VS2010用Winform编写 Excel程序
- 打印小票和开钱箱VB.net
- 打印小票和开钱箱VB.net
- windows程序设计:键盘和鼠标
- windows程序设计:位图和bitblt
- windows程序设计:调色板
- sqlplus弹出空白提示框的解决办法
- 大话设计模式源码
- 用vs2010 c++编写收银机开钱箱
- sprintf你知道多少
- windows程序设计:文本和字体
- Qt的网络模块
- windows程序设计:多任务与多线程
- vs2010动态链接库只生成DLL,没有LIB的解决办法
- MFC 点击一个对话框按钮弹出另一个对话框
- vs2010 创建动态链接库DLL
- _access()函数
原创粉丝点击
热门IT博客