我有一个带有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/