📄 subject_44353.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> DCB dcb;<BR> FillMemory(&dcb, sizeof(dcb), 0);<BR><BR> //先在类中定义成员:HANDLE m_hLpt1;<BR><BR> m_hLpt1=CreateFile( "LPT1", <BR> GENERIC_READ | GENERIC_WRITE,<BR> 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL); <BR> // 打开串口,异步操作<BR> if( m_hLpt1 == INVALID_HANDLE_VALUE) <BR> {<BR> CloseHandle(m_hLpt1);<BR> return( FALSE );<BR> }<BR> <BR> dcb.DCBlength = sizeof( DCB );<BR> GetCommState( m_hLpt1, &dcb ); // 获得端口默认设置<BR> dcb.BaudRate=CBR_9600;//波特率<BR> dcb.ByteSize=8;<BR> dcb.Parity=EVENPARITY;//NOPARITY;<BR> dcb.StopBits=(BYTE) ONESTOPBIT;//停止位<BR> SetCommState(m_hLpt1,&dcb);//用以上参数设置端口<BR><BR> return(TRUE);<BR>}<BR>//打印函数:<BR>//这个函数可以用来打印输出字符串,也用来向打印机发送命令<BR>void CMYDLG::PrintStr(char *str)<BR>{<BR> //打印字符串<BR> DWORD p;<BR> if(strlen(str)<=0)<BR> return;<BR> WriteFile(m_hLpt1,str,strlen(str),&p,NULL);<BR> if(GetLastError()==ERROR_IO_PENDING)<BR> {<BR> AfxMessageBox("IO Error");<BR> } <BR>}<BR>//走纸换行函数:(其实就是向打印机写命令)<BR>void CMYDLG::PrintCrLf(int nCount)<BR>{<BR> //走纸 & 换行<BR> CString sVar;<BR> int i;<BR> DWORD p;<BR> if(nCount<0)<BR> return;<BR> sVar.Format("%c",0x0a);<BR> for(i=0;i<=nCount;i++)<BR> WriteFile(m_hLpt1,sVar,sVar.GetLength(),&p,NULL);<BR> sVar.ReleaseBuffer(); <BR>}<BR>有了这几个函数就可以了~,使作用时先用OpenLPT1()打开LPT1;<BR>举个例子来说一下打印和发命令:<BR><BR> CMYDLG m_series; <BR> char cOutPut[50];<BR> memset(cOutPut,0x00,sizeof(cOutPut));<BR> sprintf(cOutPut,"%c%c",0x1B,0x40);//此命令用来初始化打印机<BR> m_series.PrintStr(cOutPut);//将命令送打印机<BR><BR> memset(cOutPut,0x00,sizeof(cOutPut));<BR> sprintf(cOutPut,"%c%c%c",0x1C,0x21,41);//此命令用来设置打印机字体<BR> m_series.PrintStr(cOutPut);//将命令送打印机<BR><BR> memset(cOutPut,0x00,sizeof(cOutPut));<BR> strcpy(cOutPut,"这是打印输出的文字");//打印内容<BR> m_series.PrintStr(cOutPut);//送打印机<BR> m_series.PrintCrLf(1);//回车换行<BR> <BR> memset(cOutPut,0x00,sizeof(cOutPut));<BR> sprintf(cOutPut,"%c%c%c",0x1C,0x21,1);//此命令用来取消已设置的打印机字体<BR> 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: <BR>林建华:<BR> 能否把源代码发过来我看一下。。。交个朋友如何。。。想问一下,假如我想通过 <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>内容: 能否把源代码发过来我看一下。。。交个朋友如何。。。想问一下,假如我想通过 <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 + -