【发布时间】:2013-12-13 22:36:40
【问题描述】:
首先,感谢您抽出宝贵时间查看我的帖子,并帮助我解决这个问题。
我已经搜索,阅读了很多帖子,但我没有找到一个好的答案,我的代码一直失败,这是我的情况:我有一个 OCX 库(.ocx 文件),我正在将该引用添加到正如 MSDN 建议的那样,我的 VB.NET 2008 应用程序,该库假设将命令发送到打印机,完美我可以打开我的端口并完美地发送我的命令,但是发生的事情是,在我发送下一个命令之前,我必须等到打印机更改其状态(从忙碌到空闲),但我无法获得正确等待的代码,我想确定问题出在库还是我的代码上,所以我在该变量中添加了一个监视以查看是否它真的在改变,它正在这样做,所以我不知道这里发生了什么,让我给你我的代码:
AxEpsonFPHostControl1.CommPort = EpsonFPHostControlX.TxCommPort.Com1 'Set my com port
AxEpsonFPHostControl1.BaudRate = EpsonFPHostControlX.TxBaudRate.br9600 ' set my baud rate
AxEpsonFPHostControl1.ProtocolType = EpsonFPHostControlX.TxProtocolType.protocol_Extended
AxEpsonFPHostControl1.OpenPort() ' I open my port
OpenTicket(params) ' Here I send a command, you can ignore the parameters
FPDelayNew() ' Here I TRY to create a delay that waits until the printer change from busy to Idle
SendItem(params) ' Here I send a command, you can ignore the parameters
FPDelayNew() ' Here I TRY to create a delay that waits until the printer change from busy to Idle
AxEpsonFPHostControl1.ClosePort()
我尝试了很多东西,我尝试的其中一件事是: 只是让你知道 AxEpsonFPHostControl1.CtlState
是一个
Public Overridable Readonly Property CtlState() As EpsonFPHostControlX.TxFiscalState according to visual studio when I hover over.
还有
EpsonFPHostControlX.TxFiscalState.EFP_S_Busy
当 EFP_S_Busy 为 2 时只是一个枚举
这就是我尝试延迟的方式:
Public Sub FPDelayNew()
While AxEpsonFPHostControl1.CtlState = EpsonFPHostControlX.TxFiscalState.EFP_S_Busy
System.Threading.Thread.Sleep(0)
End While
End Sub
根本不起作用,有时程序会快速执行此方法,或者如果我使用断点,当我逐步运行此方法时应用程序会挂起,所以我不知道那是怎么回事。
我已经尝试使用手表来检查 AxEpsonFPHostControl1.CtlState 是否没有改变它的状态,并且它正在改变它。
尝试了一个事件,同样的,尝试了一个 do until..loop 和同样的,我希望我能找到可以帮助我的人,最好的问候!
我终于找到了解决方案,如果您需要有关此库的帮助,可以联系我 luisarmando.molina@yahoo.com
【问题讨论】:
-
只发布答案,在这里留下您的电子邮件地址是不合适的。
标签: vb.net dll delay ocx printers