2013-11-28 34 views
1

首先,感谢您花时间看一下我的帖子,并帮助我解决我遇到的这个问题。来自ocx库的只读属性很奇怪的问题?

我已经搜索,阅读了很多帖子,我还没有找到一个好的答案,并且我的代码保持失败,这是我的情况:我有一个OCX库(.ocx文件),我添加了该引用到我的VB.NET 2008应用程序MSDN建议,该库是假设发送命令打印机,完美我可以打开我的端口,并发送我的命令完美,但是发生的是,在发送下一个命令之前,我必须等到打印机会改变它的状态(从繁忙到空闲),但是我无法获得正确等待的代码,我想确定问题是出现在库还是我的代码中,因此我添加了一个手表以查看该变量如果它真的发生变化,它是做什么的,所以我没有什么是怎么回事的想法,让我你你我的代码:

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() 

我已经尝试了很多东西,我试过的事情之一是这样的: 只要你知道 AxEpsonF​​PHostControl1.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时的一个枚举0

这是我试过的延迟:

Public Sub FPDelayNew() 
    While AxEpsonFPHostControl1.CtlState = EpsonFPHostControlX.TxFiscalState.EFP_S_Busy 
     System.Threading.Thread.Sleep(0) 
    End While 
End Sub 

它不会在所有的工作,有时程序将只执行此方法快速度,或者如果我用一个破发点的应用程序将只是挂,当我运行这种方法一步一步,所以我没有线索,这是怎么回事。

我已经尝试过的手表,以检查是否AxEpsonF​​PHostControl1.CtlState没有改变它的状态,它这样做。

试图与事件,与此相同,用做until..loop和相同的尝试,我希望我可以找到谁可以帮我这个问题,最好的问候!

我终于找到了一个解决方案,如果你需要使用这个库帮助可以联系我[email protected]

+0

只需发布答案,在此留下您的电子邮件地址并不合适。 –

回答

0

我没有正确地检查状态,你需要一遍又一遍地发送命令直到它返回文档所说的成功为止,并且枚举TxFiscalState根本不能在64位计算机上运行,​​因此请停止尝试,至少在我使用的库中没有。