RS232 ポート (シリアル) で指紋と対話する必要があります。私は魅力のように機能するpythonコードを持っています:
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 9600, parity='N', timeout=2)
print ser
ser.open()
ser.write(chr(0x00)) # channel 1 byte (alway the same)
ser.write(chr(0x05)) # command 1 byte
ser.write(chr(0x00)) # param1 2 bytes (byte low)
ser.write(chr(0x00)) # param1 2 bytes (byte hight)
ser.write(chr(0x00)) # param2 2 bytes (byte low)
ser.write(chr(0x00)) # param2 2 bytes (byte hight)
ser.write(chr(0x00)) # lwExtraData 2 bytes (byte low)
ser.write(chr(0x00)) # lwExtraData 2 bytes (byte hight)
ser.write(chr(0x00)) # hwExtraData 2 bytes (byte low)
ser.write(chr(0x00)) # hwExtraData 2 bytes (byte hight)
ser.write(chr(0x00)) # ErrorCode 1 byte
sum = 0x05 % 256
ser.write(chr(sum)) # Checksum (modulo 256) 1 byte
print "\nRespuesta Secugen :\n"
cadena = ser.read(12)
for i in range(12):
print(hex(ord(cadena[i]))),
ser.close()
しかし、このコードを C++/Qt 用に変換する必要があります。どの関数を使用する必要があるのか 正確にはわかりません。
私はこれを試しました:
serial = new QextSerialPort(serialPort);
serial->setBaudRate(BAUD9600);
serial->setFlowControl(FLOW_OFF);
serial->setParity(PAR_NONE);
serial->setDataBits(DATA_8);
serial->setStopBits(STOP_1);
serial->setTimeout(2);
res = serial->open(QIODevice::ReadWrite);
if(res)
{
QByteArray zero = QByteArray::fromHex("\x00");
serial->write(zero);
[...]
qDebug() << "byte a lire : " << serial->bytesAvailable();
QByteArray test = serial->readAll();
}
可能であれば、QextSerialPort 拡張機能を使用したいと考えています。私は試しましたが、成功しませんでした。どのような変換を行う必要があるかを正確に理解していないと思います。
- 編集 -
私の質問は、シリアルポートを管理するクラスに関するものではありません。申し訳ありませんが、私の質問はあまり明確ではありませんでした。Python のコードと同じコードを再現するための解決策がわかりません: RS232 で hex に文字を送信します。