⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_44353.htm

📁 vc
💻 HTM
字号:
<p>
序号:44353 发表者:yoyu_x 发表日期:2003-06-19 00:13:46
<br>主题:请教高手:可不可以直接写打印口的方式来实现打印功能?
<br>内容:可不可以直接写打印口的方式来实现打印功能?或用API,用什么API?还有我不想显示打印窗口,行不行???
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:michael 回复日期:2003-06-19 07:30:04
<br>内容:呵呵,有困难。要是那么容易,还要驱动干嘛?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:zhangni 回复日期:2003-06-19 08:51:31
<br>内容:当然可以!过去在DOS下打印图形和汉字都是这样做的!直接向打印机送打印机的驱动命令。如何驱动打印机一般打印机附带的手册都有介绍。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yoyu_x 回复日期:2003-06-23 18:23:24
<br>内容:谢谢两位,尤其是zhangni,你给了我很好的方向,我现在是这样解决的:用CreateFile()打开LPT1,包括设置数据校验位,波特率,差错控制等..然后用WriteFile()写打印口,有许多打印机的控制命令也要自己写,比如走纸,换行,字体控制等...很好用,这个方法适合凭证,票据的打印,不过,打印机的驱动还是要正确安装的~~
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:MaxYtz 回复日期:2003-12-21 17:29:15
<br>内容:我现在也遇到通样问题,请问能否把你的方法介绍给我。谢谢!<BR>MaxYtz@tom.com
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2003-12-22 16:59:30
<br>内容:请问打印机控制命令怎么发呢?请回答,谢谢.最好举例说明,再次谢谢
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2003-12-22 21:19:17
<br>内容:如何设置所打印文档文件名称呢?在打印机任务栏里可以察看
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2003-12-25 09:00:23
<br>内容:yoyu_x 朋友,帮忙指点一下我的问题,谢谢!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jackey2 回复日期:2003-12-25 22:16:13
<br>内容:直接向打印机发送打印命令,只是针对当前连接的打印机类型,换另一种打印机就无法打印了,对吧?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2003-12-26 08:58:45
<br>内容:但用API函数怎么发命令呢?请举例说明一下.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2003-12-29 09:01:57
<br>内容:yoyu_x ,你也没必要不回答吧.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:賴京州 回复日期:2004-01-01 10:42:22
<br>内容:我写过一个不过在winxp下不能用,要驱动,微软。。。。。唉 、<BR><BR><BR><BR><BR><BR>前面只有绝路,只有转角才是希望!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yoyu_x 回复日期:2004-01-02 21:12:20
<br>内容:不好意思,好久没来了~<BR>我是这样做的:<BR>//打开LPT1 函数<BR>bool CMYDLG::OpenLPT1()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;DCB dcb;<BR>&nbsp;&nbsp;&nbsp;&nbsp;FillMemory(&amp;dcb, sizeof(dcb), 0);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//先在类中定义成员:HANDLE&nbsp;&nbsp;&nbsp;&nbsp;m_hLpt1;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;m_hLpt1=CreateFile( &#34;LPT1&#34;, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_READ | GENERIC_WRITE,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;打开串口,异步操作<BR>&nbsp;&nbsp;&nbsp;&nbsp;if( m_hLpt1 == INVALID_HANDLE_VALUE) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(m_hLpt1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return( FALSE );<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dcb.DCBlength = sizeof( DCB );<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetCommState( m_hLpt1, &amp;dcb );&nbsp;&nbsp;//&nbsp;&nbsp;获得端口默认设置<BR>&nbsp;&nbsp;&nbsp;&nbsp;dcb.BaudRate=CBR_9600;//波特率<BR>&nbsp;&nbsp;&nbsp;&nbsp;dcb.ByteSize=8;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dcb.Parity=EVENPARITY;//NOPARITY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dcb.StopBits=(BYTE) ONESTOPBIT;//停止位<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetCommState(m_hLpt1,&amp;dcb);//用以上参数设置端口<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return(TRUE);<BR>}<BR>//打印函数:<BR>//这个函数可以用来打印输出字符串,也用来向打印机发送命令<BR>void CMYDLG::PrintStr(char *str)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//打印字符串<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;&nbsp;&nbsp;p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(strlen(str)&lt;=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WriteFile(m_hLpt1,str,strlen(str),&amp;p,NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(GetLastError()==ERROR_IO_PENDING)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;IO Error&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR>//走纸换行函数:(其实就是向打印机写命令)<BR>void CMYDLG::PrintCrLf(int nCount)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//走纸 &amp; 换行<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString sVar;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(nCount&lt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;sVar.Format(&#34;%c&#34;,0x0a);<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;=nCount;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteFile(m_hLpt1,sVar,sVar.GetLength(),&amp;p,NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;sVar.ReleaseBuffer();&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR>有了这几个函数就可以了~,使作用时先用OpenLPT1()打开LPT1;<BR>举个例子来说一下打印和发命令:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; CMYDLG&nbsp;&nbsp;&nbsp;&nbsp; m_series;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char cOutPut[50];<BR>&nbsp;&nbsp;&nbsp;&nbsp;memset(cOutPut,0x00,sizeof(cOutPut));<BR>&nbsp;&nbsp;&nbsp;&nbsp;sprintf(cOutPut,&#34;%c%c&#34;,0x1B,0x40);//此命令用来初始化打印机<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_series.PrintStr(cOutPut);//将命令送打印机<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;memset(cOutPut,0x00,sizeof(cOutPut));<BR>&nbsp;&nbsp;&nbsp;&nbsp;sprintf(cOutPut,&#34;%c%c%c&#34;,0x1C,0x21,41);//此命令用来设置打印机字体<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_series.PrintStr(cOutPut);//将命令送打印机<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;memset(cOutPut,0x00,sizeof(cOutPut));<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(cOutPut,&#34;这是打印输出的文字&#34;);//打印内容<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_series.PrintStr(cOutPut);//送打印机<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_series.PrintCrLf(1);//回车换行<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;memset(cOutPut,0x00,sizeof(cOutPut));<BR>&nbsp;&nbsp;&nbsp;&nbsp;sprintf(cOutPut,&#34;%c%c%c&#34;,0x1C,0x21,1);//此命令用来取消已设置的打印机字体<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_series.PrintStr(cOutPut);//送打印机<BR><BR>程序打印任务完成后就用CloseHandle(m_hLpt1)关掉;<BR>各种打印机的打印命令也不尽相同;可以查相关打印机的手册来获得打印机的控制命令;以上我所用的打印命令对TP POS58/Epson 210系列 打印机有效,其它打印机我没试过;对于EPSON210 有一款是有切纸功能的,也有一条切纸命令,(我没用到,所以看了就忘了~不过可以查手册查到);<BR>写的太急,不足之处还请大家包函<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:賴京州 回复日期:2004-01-03 16:47:31
<br>内容:yoyu_x:&nbsp;&nbsp; <BR>林建华:<BR>&nbsp;&nbsp;&nbsp;&nbsp; 能否把源代码发过来我看一下。。。交个朋友如何。。。想问一下,假如我想通过 <BR>readfile与writefile怎样控制打印口的SDA与SCL脚,,,我只要你能帮我在vc里实现控制 <BR>378打印口的读写就好了。。。。谢谢!!请回复好吗???林建华同样可以帮忙吗?!<BR><BR>我以前无聊的时候用vc写了一个word软件。。。只是这个软件不全面。。有待改进。。。<BR><BR>在此想认识所有的同行。。。志同道合的人。。。。<BR>landy.jz.lai@foxconn.com<BR><BR><BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2004-01-04 08:31:05
<br>内容:谢谢朋友的回答
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:賴京州 回复日期:2004-01-04 10:14:13
<br>内容:&nbsp;&nbsp; 能否把源代码发过来我看一下。。。交个朋友如何。。。想问一下,假如我想通过 <BR>readfile与writefile怎样控制打印口的SDA与SCL脚,,,我只要你能帮我在vc里实现控制 <BR>378打印口的读写就好了。。。。谢谢!!请回复好吗???林建华同样可以帮忙吗?!<BR><BR>我以前无聊的时候用vc写了一个word软件。。。只是这个软件不全面。。有待改进。。。<BR><BR>在此想认识所有的同行。。。志同道合的人。。。。<BR>landy.jz.lai@foxconn.com
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yoyu_x 回复日期:2004-02-09 21:51:01
<br>内容:要控制SDA和SCL引脚?就是要控制它们的电平信号了?这个我不清楚~在网上查了找到有点相关的都是汇编的,而且我在想VC能不能控制到那么底程的东西?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nj_zxy 回复日期:2004-02-15 17:12:47
<br>内容:打印机缺纸时如何知道打印机的状态呢?如何复位打印机呢?请朋友帮忙
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -