【发布时间】:2013-10-22 10:56:30
【问题描述】:
这是我没想到的。我需要编写一个通过串行端口发送值的小应用程序,但值超过 127。在查看 Qt 文档时:http://qt-project.org/doc/qt-5.1/qtserialport/qserialport.html - 除非我遗漏了一些明显的东西,否则 QSerialPort::write() 方法不会似乎支持高于 127(十进制)的任何值。
例如,我碰巧需要发送 0xFF(十进制 255),所以当方法似乎只支持“签名”字符时,我该如何发送(同样,除非我遗漏了什么)。我正在寻找一个接受“int”或无符号字符的 write() 方法版本,它可以让我在十进制中达到 255。
virtual qint64 writeData(const char * data, qint64 maxSize)
看,没有“unsigned char *”也没有“int”,那么我如何发送一个包含 5 个值的数组,其中每个值都高于 127(十进制)?
【问题讨论】:
-
反正是个指针参数,谁在乎呢?随心所欲地投射它 - writeData() 无论如何都会发送它。
-
马丁是对的。它是一个指向数组的指针。创建一个数组,用你的数据调用 WriteData 填充,它就会消失。
-
嗯,你确定吗?我刚刚尝试了这个快速测试: char *ptr = new char[5];指针[0] = 255; ShowMessage((int)ptr[0]);我得到-1。当我将“unsigned”放在“char”前面并再次运行代码时,我得到 255。这非常重要。远端设备是投影仪和屏幕等,因此数据必须正确。
-
它正在发送原始字节,因此您可以像其他人写的那样随意解释它。
标签: c++ qt qtserialport