如何在FAXCOMEXLib中正确解码FaxJobStatus?

时间:2017-08-29 21:08:44

标签: c# fax interfax

我使用FAXCOMEXLib为我的网络应用创建了一个传真作业界面。传真机制正在工作并正确发送传真。我正在尝试设置一些传真状态的记录,我正在使用docs中定义的监听器:

    public FaxInterface()
    {
        faxSrv = new FaxServer();
        var serverName = Environment.MachineName;
        faxSrv.Connect(serverName);
        faxSrv.OnOutgoingJobChanged += faxSrv_OnOutgoingJobChanged;
        faxSrv.OnOutgoingJobAdded += faxSrv_OnOutgoingJobAdded;
        faxSrv.OnOutgoingJobRemoved += faxSrv_OnOutgoingJobRemoved;
        faxSrv.ListenToServerEvents(FAXCOMEXLib.FAX_SERVER_EVENTS_TYPE_ENUM.fsetOUT_QUEUE |
                            FAXCOMEXLib.FAX_SERVER_EVENTS_TYPE_ENUM.fsetIN_QUEUE);
    }

这很有效。我的事件监听器正在被正确触发。但我在JobChanged监听器中的一些数据遇到了问题,这些数据定义如下:

    private void faxSrv_OnOutgoingJobChanged(FaxServer pfaxserver, string bstrjobid, FaxJobStatus pjobstatus)
    {
        using (IDbConnection db = new SqlConnection(ConnectionStringHelper.ConnectionString))
        {
            db.Execute("update T_FAXLOG set LogText = CONCAT(LogText, @newText) where JobId = @jobId", new { newText = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:ff tt") + " " + pjobstatus.Status.ToString() + Environment.NewLine, jobId = bstrjobid });
        }
    }

我的问题是我似乎在传递给我的函数的pjobstatus.Status中获得了意外的值。如果我pjobstatus.Status类型的“查看定义”(这是:enum FAX_JOB_STATUS_ENUM),我在定义中看到了这一点:

namespace FAXCOMEXLib
{
    public enum FAX_JOB_STATUS_ENUM
    {
        fjsPENDING = 1,
        fjsINPROGRESS = 2,
        fjsFAILED = 8,
        fjsPAUSED = 16,
        fjsNOLINE = 32,
        fjsRETRYING = 64,
        fjsRETRIES_EXCEEDED = 128,
        fjsCOMPLETED = 256,
        fjsCANCELED = 512,
        fjsCANCELING = 1024,
        fjsROUTING = 2048
    }
}

然而,当我运行我的应用程序并在我的服务器中“暂停”我的传真过程时,我在状态字段中得到值“49”。而且,正如您所看到的那样,这个数字在定义中没有任何意义。我希望暂停得到“16”,但我得到一个“49”。我在这里错过了什么吗?在其他地方还有其他一些文件吗?或者我需要以某种方式解码该值吗?

提前致谢。

0 个答案:

没有答案