DEX / UCS将数据发送到蓝牙加密狗

时间:2018-08-22 19:45:28

标签: android bluetooth dex

我正在开发一个使用DEX / UCS协议发送发票数据的模块。在android上,这意味着使用蓝牙软件狗连接到DEX端口(例如this one)。初始通信正常,我可以毫无问题地发送和接收字节,但是在初次握手之后,我尝试发送查询(ENQ控制字符),它说在我的日志上已发送并且没有错误发生,但是字节从未到达我的字节测试平台。我有一个端口嗅探器,以检查从测试平台发送了什么,并且ENQ从未到达那里。我应该注意,它不是发送的第一个ENQ,在握手开始时一切正常,在ENQ发出1秒之前,我成功发送了另一个控制字符。 这是一些用于将这些字节写入蓝牙软件狗的代码

private static Boolean BidForLine() {
    final int MAX_TRIES = 11;
    final String PROC_NAME = CLASS_NAME + ".BidForLine";

    Boolean blnResult = false;

    Logger.writeLog(PROC_NAME, "Start");
    int intTryCount = 1;

    while ((!blnResult) && (intTryCount <= MAX_TRIES)) {
        blnResult = SendEnquiry();
        blnResult = blnResult && ReceiveAck(true);
        intTryCount++;
    }
    Logger.writeLog(PROC_NAME, "End:" + blnResult.toString());

    return blnResult;
}

private static Boolean SendEnquiry() {
    final String PROC_NAME = CLASS_NAME + ".SendEnquiry";

    Boolean blnResult = true;

    Logger.writeLog(PROC_NAME, "Start");
    WriteData(SpecialCharacters.ENQUIRY);
    Logger.writeLog(PROC_NAME, "End:" + blnResult.toString());

    return blnResult;
}

private static void WriteData(String strData) {
    final String PROC_NAME = CLASS_NAME + ".WriteData";

    Logger.writeLog(PROC_NAME, "Send:" + DataFormatter.FormatString(strData));
    try {
        DexBluetoothPort().write(strData);
    }
    catch (Exception ex) {
        Logger.processException(PROC_NAME, ex);
    }
}

public void write (String strData) throws IOException{
    outputStream.write(strData.getBytes("ASCII"));
}

在成功的传输和失败的传输之间,套接字未关闭或加密狗断开连接。可能是什么原因导致它没有发送?

0 个答案:

没有答案