查看: 3037|回复: 20
|
[vb.net] Dos Printing的问题 (解决了)
[复制链接]
|
|
我正在写一个program,print ticket之类的,我要速度快,所以用vb.net call dos的print command来print,我成功了,但...那些字都比较偏向右方,左方空荡荡的
我用的纸是两边有洞的computer form,每一行的最后一个字只有2/3,剩下的1/3被洞吞掉了,printer是 Panasonic KP1124,右边用来固定computer form的固定器(不知道更好的形容词)已经被我放到尽头了,我用dos来print的,跟print dialog没关系吧?
我甚至用Type command在dos里面看,简直是完美无暇...
会是什么问题呢?
还有一个问题,vb.net里有个papersize function,但只能get,不能set,要如何才能set papersize呢?
[ 本帖最后由 Choy_2l 于 23-7-2006 10:26 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 11-7-2006 06:35 PM
|
显示全部楼层
不好意思,发觉自己搞错了,把纸张固定在正中间不就可以了吗?自己太钻牛角尖,而且set papersize的问题我昨晚也已经搞定了,应该把这帖关掉了。
但我还有一个问题,要如何让纸张卷上卷下呢?方便user不用再手动卷纸,print完所有ticket后才一次过撕开。。。 |
|
|
|
|
|
|
|
发表于 12-7-2006 10:40 AM
|
显示全部楼层
原帖由 Choy_2l 于 11-7-2006 06:35 PM 发表
但我还有一个问题,要如何让纸张卷上卷下呢?方便user不用 ...
当印完整张单时,Form Feed 纸张,print chr$(10),卷上。我不会卷下的,
要撕纸直接在印表机按 [Tear Off]。 |
|
|
|
|
|
|
|
楼主 |
发表于 12-7-2006 07:56 PM
|
显示全部楼层
就当作是解决了吧!人终归还是要靠自己的,无论如何,谢谢你的意见 |
|
|
|
|
|
|
|
楼主 |
发表于 17-7-2006 09:29 PM
|
显示全部楼层
又有一个问题,我只是要print半张A4纸,可是它每次都吐出一整张A4,我试过set成别的size,但情况还是一样!到底是怎么回事? |
|
|
|
|
|
|
|
发表于 18-7-2006 10:19 AM
|
显示全部楼层
Win98 就用 custom paper size
WinXP 就 Start > Printers & Faxes > File > Print Server Properties
选 A4,点 [v] Create a new form,改 Form name: A4 half
Height: 5.85in,点 [Save form] 按钮。
Console printing 的 Escape Sequence Command 不会写了。很久以前我是参考 Epson 的书。 |
|
|
|
|
|
|
|
楼主 |
发表于 18-7-2006 06:35 PM
|
显示全部楼层
原帖由 白日梦 于 18-7-2006 10:19 AM 发表
Win98 就用 custom paper size
WinXP 就 Start > Printers & Faxes > File > Print Server Properties
选 A4,点 Create a new form,改 Form name: A4 half
Height: 5.85in,点 按钮。
这个昨晚已经弄懂了,刚刚在office test过,结果还是一样。
Console printing 的 Escape Sequence Command
或许这才是最重要的,你说参考epson书,意思是说每一个牌子的command都不一样吗?
如果说set paper size的话,我倒是有一个好东西,昨晚找到的,programmatically set paper size,用C#写的,那一位高手得空就帮忙convert去vb.net再寄一份给我,感激不尽 |
|
|
|
|
|
|
|
发表于 19-7-2006 10:39 AM
|
显示全部楼层
Sending Printer Command
(不答你的问题,你先试以下的)
Page format
ESC C n Set Page Length in Lines
n = number of lines,1《n《127
注: Letter size的正常情况66行1页
ESC C 0 n Set Page Length in Inches
n = number of inches,1《n《22
注: Letter size的正常情况11寸1页
以上的指令适用于 Epson LQ2170,NEC P2000 |
|
|
|
|
|
|
|
发表于 19-7-2006 12:34 PM
|
显示全部楼层
关于Escape Sequences,白老大已经写给你了。。。
刚才,检查了kx-1121的manual。。。发现它有“卷下”(reverse)的指令。。。
margin也可以设定。。。
卷一行,LF (ascii 10)
卷一张纸,FF (ascii 12)
牌子不同,但是它们的command是通用的。。。
我以前有试过用epson inkjet color printer来代替panasonic-kx1121。。。
但是,如果用laser printer就不可以了。。。
给你们看看一个非常好玩的东西。。。这是panasonic printer driver的一部分:
- ..... continue from somewhere
- }
- *Command: CmdStartDoc
- {
- *Order: DOC_SETUP.1
- *Cmd: "<1B>@<1B>t<011B>6"
- }
- *Command: CmdStartPage
- {
- *Order: PAGE_SETUP.1
- *Cmd: "<0D>"
- }
- *Command: CmdEndJob
- {
- *Order: JOB_FINISH.1
- *Cmd: "<0D1B>@<1B>t<00>"
- }
- *RotateCoordinate?: FALSE
- *RotateRaster?: FALSE
- *RotateFont?: FALSE
- *switch: Orientation
- {
- *case: PORTRAIT
- {
- *TextCaps: LIST(TC_OP_CHARACTER,TC_EA_DOUBLE,TC_IA_ABLE,TC_UA_ABLE,TC_RA_ABLE)
- }
- *case: LANDSCAPE_CC270
- {
- *TextCaps: LIST(TC_RA_ABLE)
- }
- }
- *CursorXAfterCR: AT_CURSOR_X_ORIGIN
- *YMoveAttributes: LIST(SEND_CR_FIRST,FAVOR_LF)
- *MaxLineSpacing: 255
- *XMoveThreshold: 0
- *YMoveThreshold: *
- *XMoveUnit: 60
- *YMoveUnit: 180
- *Command: CmdXMoveAbsolute { *Cmd : "<1B>$" %l{(DestX / 12) } }
- *Command: CmdYMoveRelDown { *Cmd : "<1B>J" %c[0,255]{max_repeat((DestYRel / 4) )} }
- *Command: CmdSetLineSpacing { *Cmd : "<1B>+" %c[0,255]{(LinefeedSpacing / 2) } }
- *Command: CmdCR { *Cmd : "<0D>" }
- *Command: CmdLF { *Cmd : "<0A>" }
- *Command: CmdFF { *Cmd : "<0C>" }
- *Command: CmdUniDirectionOn { *Cmd : "<1B>U<01>" }
- *Command: CmdUniDirectionOff { *Cmd : "<1B>U<00>" }
- *EjectPageWithFF?: TRUE
- *OutputDataFormat: V_BYTE
- *OptimizeLeftBound?: FALSE
- *CursorXAfterSendBlockData: AT_GRXDATA_END
- *CursorYAfterSendBlockData: NO_MOVE
- *DefaultFont: 5
- *DefaultCTT: 2
- *switch: Orientation
- {
- *case: PORTRAIT
- {
- *DeviceFonts: LIST(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
- + 17,18,19,20,21,22,23,24,25,26,27,28,29,30,51,52,
- + 53,54,55,56,57,58,59,60)
- }
- *case: LANDSCAPE_CC270
- {
- *DeviceFonts: LIST()
- }
- }
- *Command: CmdBoldOn { *Cmd : "<1B>G" }
- *Command: CmdBoldOff { *Cmd : "<1B>H" }
- *Command: CmdItalicOn { *Cmd : "<1B>4" }
- *Command: CmdItalicOff { *Cmd : "<1B>5" }
- *Command: CmdUnderlineOn { *Cmd : "<1B>-<01>" }
- *Command: CmdUnderlineOff { *Cmd : "<1B>-<00>" }
- ..... continue to end
复制代码
从这里,可以看得出,printer driver也需要用Escape Sequences来跟printer“对话”。。。 |
|
|
|
|
|
|
|
发表于 19-7-2006 12:54 PM
|
显示全部楼层
dot matrix 印表机是用 Escape Sequence Printer Command 来处理特别的东西,
laser 印表机用 PCL,忘了正确名称,好像是 Postscript Command Language。
这个我就不会弄,所以 Clipper 所写的软件就卡住,不能印。 |
|
|
|
|
|
|
|
发表于 19-7-2006 01:54 PM
|
显示全部楼层
如果说set paper size的话,我倒是有一个好东西,昨晚找到的,programmatically set paper size,用C#写的,那一位高手得空就帮忙convert去vb.net再寄一份给我,感激不尽
我在想。。。。
这样的做法。。。是不是能达到最高效果。。。
类似的“programmatically set paper size”我有研究过。。。
不过,可惜没有做成。。。那时,我想的比这个更加复杂。
原则上,只要调用api就可以了。。。
OpenPrinter,ClosePrinter,AddForm,SetForm,DeleteForm和DocumentProperties。。。
不过。。。。等我成功之后。。。再告诉你吧。。。
PS,把标题改掉吧。。。一直看到你写着“解决了”
[ 本帖最后由 meemee 于 19-7-2006 01:56 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 19-7-2006 08:03 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 20-7-2006 10:03 AM
|
显示全部楼层
回复 #12 Choy_2l 的帖子
就这样简单,老实说你们所给的建议已大大超出我的知识范围,无论如何,非常感激你们的建议
呵呵,不是很会。。。但是竟然懂prn这个老古董的东西。。。
有没有玩过copy con prn
emm.....不需要 〉这个符号。。。
以下几个都可以试试:
copy c:\abc.txt prn
copy c:\abc.txt prn /b
copy c:\abc.txt lpt1
copy c:\abc.txt lpt1 /b
其实,如果只是单单需要把text sent去printer可以直接写batch档。。。
echo off
copy c:\startDoc.dat prn /b
copy c:\abc.txt prn /b
copy c:\endDoc.dat prn /b
echo on
startDoc.dat和endDoc.dat用来收藏start和end signal的Escape Sequences
page format,margin,长度的Escape Sequences也可以放在startDoc.dat里。。。
如果你会上面的东西可以自己先试试。。。
帮你convert成vb.net的code需要一些时间。。。 |
|
|
|
|
|
|
|
发表于 20-7-2006 12:37 PM
|
显示全部楼层
DOS 指令
把印表机当档案用 prn 和 lpt1 都可以
如果是就没有 >
copy filename.ext prn
或
copy filename.ext lpt1
type filename.ext >prn
或
type filename.ext >lpt1 |
|
|
|
|
|
|
|
楼主 |
发表于 20-7-2006 07:53 PM
|
显示全部楼层
不好意思这么迟才回帖,因为office没得上网,暂时当作是解决了吧!连续两天开夜车,快晕倒了,我需要好好休息一番
这东西只是做来好玩的,成功的话就免费送给老板,顺便看看有谁要买(到底是什么program不能说,因为有点非法性质)
明天回office试试,你可别害我。。。:@
帮你convert成vb.net的code需要一些时间。。。
拿你的时间(take your time),我已经把那C# class打包成dll来用了
DOS 指令
把印表机当档案用 prn 和 lpt1 都可以
如果是就没有 >
copy filename.ext prn
或
copy filename.ext lpt1
type filename.ext >prn
或
type filename.ext >lpt1
不愧是版主,心地太好了,谢谢 |
|
|
|
|
|
|
|
发表于 21-7-2006 10:19 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 21-7-2006 10:51 AM
|
显示全部楼层
嘻嘻。。。终于成功了。。。在vb.net里直接用Escape Sequences跟printer“对话”
我相信你的方法,应该不是最快的。。。因为spooler会制作emf的spool file。
另一个坏处是只可以用在winXP和2k。。。好像也不support remote printer。。。
好处是machine independent。。。别的牌子printer也没问题。。。
我用的方法,直接call spooler把data和Escape Sequences送去printer driver。。。可以support win98和winXP。。。
坏处是machine dependent
[size=-1]- Imports System.Runtime.InteropServices
- Module winapi
- Private Const PRINTER_ENUM_CONNECTIONS As Int32 = &H4
- Private Const PRINTER_ENUM_LOCAL As Int32 = &H2
- 'Find a printer with drivername "Panasonic KX"
- Private Const myPrinter As String = "Panasonic KX"
- Private Structure DOC_INFO_1
- <MarshalAs(UnmanagedType.LPStr)> Dim pDocName As String
- <MarshalAs(UnmanagedType.LPStr)> Dim ppOutputFile As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pDataType As String
- End Structure
- Private Structure PRINTER_INFO_2
- 'Must use <MarshalAs(UnmanagedType.LPStr)>
- 'Using LPStr (not LPTStr), cause LPTStr will
- 'interpret unicode
- <MarshalAs(UnmanagedType.LPStr)> Dim pServerName As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pPrinterName As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pShareName As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pPortName As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pDriverName As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pComment As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pLocation As String
- Dim pDevMode As IntPtr
- <MarshalAs(UnmanagedType.LPStr)> Dim pSepFile As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pPrintProcessor As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pDataType As String
- <MarshalAs(UnmanagedType.LPStr)> Dim pParameters As String
- Dim pSecurityDescriptor As IntPtr
- Dim Attributes As Int32
- Dim Priority As Int32
- Dim DefaultPriority As Int32
- Dim StartTime As Int32
- Dim UntilTime As Int32
- Dim Status As Int32
- Dim cJobs As Int32
- Dim AveragePPM As Int32
- End Structure
- Private Declare Function EnumPrinters Lib "winspool.drv" Alias "EnumPrintersA" _
- (ByVal flags As Int32, ByVal name As String, ByVal Level As Int32, ByVal pPrinterEnum As IntPtr, ByVal cdBuf As Int32, ByRef pcbNeeded As Int32, ByRef pcReturned As Int32) As Int32
- 'The last parameter should be PRINTER_DEFAULTS type
- 'but I use intPtr, cause I don't need it... (also can use int32)
- Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, ByRef phPrinter As Int32, ByVal pDefault As IntPtr) As Int32
- Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Integer) As Integer
- 'I use string for 2nd parameter...
- Private Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Integer, ByVal pBuf As String, ByVal cdBuf As Int32, ByRef pcWritten As Int32) As Int32
- Private Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Int32, ByVal Level As Int32, ByRef pDocInfo As DOC_INFO_1) As Integer
- 'Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Int32) As Int32
- 'Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Int32) As Int32
- Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Int32) As Int32
- Function GetMyPrinter() As String
- Dim byteNeeded As Int32
- Dim numOfPrinter As Int32
- Dim i As Int32, StructSize As Int32
- Dim buffer, ptTmp As IntPtr
- Dim PrinterInfo As PRINTER_INFO_2
- Dim foundName As String
- EnumPrinters(PRINTER_ENUM_CONNECTIONS Or PRINTER_ENUM_LOCAL, _
- vbNullString, 2, IntPtr.Zero, 0, byteNeeded, numOfPrinter)
- buffer = Marshal.AllocHGlobal(byteNeeded)
- ptTmp = buffer
- EnumPrinters(PRINTER_ENUM_CONNECTIONS Or PRINTER_ENUM_LOCAL, _
- vbNullString, 2, buffer, byteNeeded, byteNeeded, numOfPrinter)
- StructSize = Marshal.SizeOf(PrinterInfo)
- For i = 1 To numOfPrinter
- PrinterInfo = Marshal.PtrToStructure(ptTmp, PrinterInfo.GetType)
- If PrinterInfo.pDriverName.IndexOf(myPrinter, 0) = 0 Then
- foundName = PrinterInfo.pPrinterName
- Exit For
- End If
- ptTmp = IntPtr.op_Explicit(ptTmp.ToInt32 + StructSize)
- Next
- Marshal.FreeHGlobal(buffer)
- Return foundName
- End Function
- Sub PrintTestPage()
- Dim foundPrinter As String
- foundPrinter = GetMyPrinter()
- Dim HPrinter As Int32
- Dim iResult As Int32
- If OpenPrinter(foundPrinter, HPrinter, IntPtr.Zero) = 0 Then
- MessageBox.Show("Cann't open printer")
- End
- End If
- StartPrintJob(HPrinter)
- 'Create 2 pages of test page (with 3.5" long)
- CreateTestData(3.5, HPrinter)
- iResult = EndDocPrinter(HPrinter)
- ClosePrinter(HPrinter)
- End Sub
- 'PageLen specify the length of page in inch
- Sub CreateTestData(ByVal PageLen As Single, ByRef hPrinter As Int32)
- Dim PageLenESC As String
- Dim TestData As String
- Dim TestStr1 As String, TestStr2 As String
- Dim FormFeed As String
- Dim NewPage As String
- Dim NewJob As String, EndJob As String
- Dim BytePrint As Int32
- Dim iResult As Int32
- 'Use to feed next page
- FormFeed = Chr(12)
- 'Use to signal new page
- NewPage = Chr(13)
- 'Start new job
- NewJob = Chr(27) & "@" & Chr(27) & "t" & Chr(1) & Chr(27) & "6"
- 'End job
- EndJob = Chr(27) & "@" & Chr(27) & "t" & Chr(0)
- 'Create escape sequence for custom length
- PageLenESC = Chr(27) & "2"
- PageLenESC = PageLenESC & Chr(27) & "C" & Chr(CInt(PageLen * 6))
- 'String to be print
- TestStr1 = " Test Page 1 ~~ 3.5"""
- TestStr2 = " Test Page 2 ~~ 3.5"""
- TestStr1 = PageLenESC & TestStr1 & FormFeed
- TestStr2 = PageLenESC & TestStr2 & FormFeed
- TestData = NewJob & TestStr1 & TestStr2 & EndJob
- iResult = WritePrinter(hPrinter, TestData, Len(TestData), BytePrint)
- End Sub
- Private Sub StartPrintJob(ByRef HPrinter As Int32)
- Dim JobBuffer As DOC_INFO_1
- Dim iResult As Int32
- JobBuffer.pDocName = "Vb.net Test Page"
- JobBuffer.ppOutputFile = vbNullString
- JobBuffer.pDataType = "RAW"
- iResult = StartDocPrinter(HPrinter, 1, JobBuffer)
- 'iResult = StartPagePrinter(HPrinter)
- End Sub
- Sub main()
- PrintTestPage()
- End Sub
- End Module
复制代码
[ 本帖最后由 meemee 于 21-7-2006 10:53 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 21-7-2006 09:05 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 21-7-2006 11:29 PM
|
显示全部楼层
刚才又想到,是否可以套用dos的font,然后用printdocument给print出来,问题是不是很肯定dos用什么font
那些嫌疑font是隐藏(hidden)在windows\fonts里头,试过
Me.Font = New Font("MS-Dos CP 437", 10, FontStyle.Regular, GraphicsUnit.Point)
不行咧。。。而且也不肯定printing速度是不是一样快
meemee兄你说machine dependence真的是说只能用panasonic?老板现在用的是universal的吧。。。那条水来帮我们装这个program前怎可能知道我们用的是什么机啊。。
臭水来的,一个烂dos program(大概900KB)竟然bill我们RM1700 !但它可以卷上卷下,我工作方便不少。。。
谁有panasonic manual吗?我找不到,我也要batch tutorial
(可能我search的方式不对,只找到要钱的control或shareware,还是Internet变得越来越商业化了?)
对了meemee兄,明天才能够test你的program,我家没有printer,开始觉得vb.net有点麻烦,要install framework才可以跑
[ 本帖最后由 Choy_2l 于 21-7-2006 11:30 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 22-7-2006 06:08 PM
|
显示全部楼层
Machine dependent。。。就像。。。laser printer就不可以用了。。。因为,laser printer用的是PCL和portscript。。。
一些老古董的inkjet可以用。。。像epson stylus pro。。。新款的就不知道了。。。
不过,我只用一些简单的指令。。。所以多数的dot matrix都可以compatible。。。
这样的设定font法是不可以的。。。因为,你用的是dos interface (vb.net call dos的print command)。。。然而,me.font。。。是window interface。。。
要设定font。。。也是通过escape sequences。。。
这是我新改的,我加入了其他的font。。。你把CreateTestData这个procedure换新的:
[size=-1]- 'PageLen specify the length of page in inch
- Sub CreateTestData(ByVal PageLen As Single, ByRef hPrinter As Int32)
- Dim PageLenESC As String
- Dim TestData As String
- Dim TestStr1 As String, TestStr2 As String
- Dim FormFeed As String
- Dim Feed_6_LF As String
- Dim NewJob As String, EndJob As String
- Dim BytePrint As Int32
- Dim iResult As Int32
- 'Use to feed next page
- FormFeed = Chr(12)
- '6 Line feed
- Feed_6_LF = vbLf & vbLf & vbLf & vbLf & vbLf & vbLf
- 'Start new job
- NewJob = Chr(27) & "@" & Chr(27) & "t" & Chr(1) & Chr(27) & "6"
- 'End job
- EndJob = Chr(27) & "@" & Chr(27) & "t" & Chr(0)
- 'Create escape sequence for custom length
- PageLenESC = Chr(27) & "2"
- PageLenESC = PageLenESC & Chr(27) & "C" & Chr(CInt(PageLen * 6))
- 'String to be print
- TestStr1 = " Test Page 1 ~~ 3.5"""
- 'Scroll 6 line
- TestStr1 = TestStr1 & Feed_6_LF
- TestStr1 = TestStr1 & " After 6 LF = 1""" & vbLf & vbLf
- 'Bold Printing
- TestStr1 = TestStr1 & Chr(27) & "G"
- TestStr1 = TestStr1 & " Bold print" & vbLf & vbLf
- TestStr1 = TestStr1 & Chr(27) & "H" 'Release bold
- 'Underline Printing
- TestStr1 = TestStr1 & Chr(27) & "-" & Chr(1)
- TestStr1 = TestStr1 & " underline" & vbLf & vbLf
- TestStr1 = TestStr1 & Chr(27) & "-" & Chr(0) 'Release underline
- 'Italic Printing
- TestStr1 = TestStr1 & Chr(27) & "4"
- TestStr1 = TestStr1 & " Italic print" & vbLf & vbLf
- TestStr1 = TestStr1 & Chr(27) & "5" 'Release italic
- 'Double High Printing
- TestStr1 = TestStr1 & Chr(27) & "w" & Chr(1) 'Set
- TestStr1 = TestStr1 & " Double High" & vbLf & vbLf
- TestStr1 = TestStr1 & Chr(27) & "w" & Chr(0) 'Release
- TestStr2 = " Test Page 2 ~~ 3.5""" & vbLf & vbLf
- 'Double Wide Printing
- TestStr2 = TestStr2 & Chr(14)
- TestStr2 = TestStr2 & " Double wide" & vbLf & vbLf
- TestStr2 = TestStr2 & Chr(20) 'Release
- 'PS font
- TestStr2 = TestStr2 & Chr(27) & "x" & Chr(1) 'LQ font
- TestStr2 = TestStr2 & Chr(27) & "k" & Chr(6) 'PS font
- TestStr2 = TestStr2 & " PS font" & vbLf & vbLf
- TestStr2 = TestStr2 & Chr(27) & "k" & Chr(2) 'courier font
- TestStr2 = TestStr2 & Chr(27) & "x" & Chr(2) 'Draft font
- 'Last test
- TestStr2 = TestStr2 & " Last test -- End"
- TestStr1 = PageLenESC & TestStr1 & FormFeed
- TestStr2 = PageLenESC & TestStr2 & FormFeed
- TestData = NewJob & TestStr1 & TestStr2 & EndJob
- iResult = WritePrinter(hPrinter, TestData, Len(TestData), BytePrint)
- End Sub
复制代码
据我所知,这个coding可以用在,panasonic kx-1121或以上,epson LQ-850或以上的printer。。。
卷上,卷下的指令也可以放进去。。。
Epson LQ-850的manual可以从:
这里下载
(没有scanner)不能帮你scan。。。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|