首先,感谢您花时间看看我的帖子,并帮助我克服这个问题。
我已经搜索过,阅读过很多帖子而且我找不到一个好的答案,而且我的代码仍然失败,这是我的情况:我有一个OCX库(.ocx文件),我正在添加该引用我的VB.NET 2008应用程序作为MSDN建议,该库假设将命令发送到打印机,完美我可以打开我的端口并完美地发送我的命令,但是发生的事情是在我发送下一个命令之前我必须等到打印机改变它的状态(从Busy到Idle),但是我无法获得正确等待的代码,我想确定问题是在库或我的代码中,所以我添加了一个监视该变量以查看是否它真的在改变它正在做,所以我不知道这里发生了什么,让我告诉你我的代码:
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
只是一个枚举
这就是我尝试延迟的方法:
Public Sub FPDelayNew()
While AxEpsonFPHostControl1.CtlState = EpsonFPHostControlX.TxFiscalState.EFP_S_Busy
System.Threading.Thread.Sleep(0)
End While
End Sub
它根本不起作用,有时程序会快速执行这个方法,或者如果我使用断点,应用程序只会在我逐步运行此方法时挂起,所以我没有线索那是怎么回事。
我已经尝试过手表来检查AxEpsonFPHostControl1.CtlState是否没有改变它的状态,而且它正在这样做。
尝试了一个事件,同样的,尝试了一个直到.loop和同样的,我希望我能找到一个可以帮助我的人,最好的问候!
我终于找到了解决方案,如果您需要有关此库的帮助,可以联系我luisarmando.molina@yahoo.com
答案 0 :(得分:0)
我没有正确检查状态,你需要一遍又一遍地发送命令,直到它返回成功,这是文档所说的,也就是枚举TxFiscalState根本不能在64位计算机上工作所以停止尝试,至少我使用它的库没有。