我有一个带有textDataToSend QTextEdit字段的GUI,我想使用在fWrite函数中输入的数据,该函数接受(LPVOID lpBuffer, DWORD dwBytesToWrite)参数。

现在,我使用:

dataToSend[0] = ui->textDataToSend->toPlainText().toUInt(&bStatus,16);
sendData(dataToSend,1);


其中sendData像这样:

DWORD sendData(char* txBuffer, unsigned long txBufferSize) {
    int status;
    status = fWrite(handle, txBuffer, txBufferSize);
    return status;
}


这样我就可以发送一个字节。

我要使用的数据是长度可变的十六进制字符串(例如“ aa0011”,“ 1122334455”,...)。我完全没有经验,可以请您提出一些好的,适当的,更聪明的方法来做到这一点吗?

最佳答案

首先使QString脱离文本编辑

QString textEditString = ui->textDataToSend->toPlainText();


当您拥有QString时,可以同时获得“缓冲区”和“缓冲区大小”,如下所示。

//First get the byte array from the string
QByteArray bArray = textEditString.toLatin1();

//Get the size of the string in bytes
int length = bArray.size();

//Get the string buffer
char *tBuffer = bArray.data();


现在将这些值传递到您的发送数据

sendData(tBuffer, length);


任何LPVOID都不过是Void指针。
fWrite应该可以顺利使用tBuffer

关于c++ - Qt5:QTextEdit到(LPVOID lpBuffer,DWORD dwBytesToWrite),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48751500/

10-10 06:20