Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 写入串行端口:从';int';至';常量字符*';_Qt - Fatal编程技术网

Qt 写入串行端口:从';int';至';常量字符*';

Qt 写入串行端口:从';int';至';常量字符*';,qt,Qt,我想通过串口COM在Qt和µC之间发送数据 我试图发送一个字符,但当我使用串行->写入(250)时,出现以下错误: 从“int”到“const char”的转换无效* 但是如果我做了串行->写(“A”),它就可以工作了。你知道为什么吗?250被编译器解释为类型int,而serial->write()-函数需要一个const char*作为输入; 如果要将250作为字符发送,则必须转换类型: char cValue = 250; char *pCValue = &cValue; seria

我想通过串口COM在
Qt
和µC之间发送数据

我试图发送一个字符,但当我使用
串行->写入(250)
时,出现以下错误:

从“int”到“const char”的转换无效*


但是如果我做了
串行->写(“A”)
,它就可以工作了。你知道为什么吗?

250被编译器解释为类型
int
,而
serial->write()
-函数需要一个
const char*
作为输入; 如果要将
250
作为字符发送,则必须转换类型:

char cValue = 250;
char *pCValue = &cValue;
serial->write(pCValue);

但是,请注意,
pCValue
是指向临时字符的指针,并且仅在c在范围内时有效。我猜,如果您不能指定串行类中的数据大小,您还需要在数组的末尾添加一个空终止符,正如owacoder所指出的那样。

QSerialPort上可用于写入数据的成员来自:

如果您使用
serial->write(250)
编译器将数字转换为int,而threre不是管理int的成员。相反,如果您使用
serial->write(“A”)
则“A”可以转换为
char*

要发送大量字节,可以使用QByteArray:

QByteArray cmd;
cmd.append('A');
cmd.append('B');
cmd.append('C');
serial -> write (cmd);
通过这种方式发送所有字符,有很多有用的Qt类可以将对象转换为QByteArray;例如,一个QString就是这样简单地转换成QByteArray:

QString str = "ABC";
QByteArray cmd = str.toLatin1();
serial -> write (cmd);

你能展示一下你的代码吗?当你说“写250”时,你是什么意思?您想发送字符串
“250”
,还是由一个值为250的字节组成的字符串
“\xFA”
?不,我想以十进制0xFA的形式发送250谢谢,但这很烦人,如果我有很多值要发送怎么办?我不能使用cast?创建一个char数组,例如有5个值:char values[]={150、200、100、100、100}(或者最好使用std::array)或std::vector,如果大小不固定(并将vector的data()-函数传递给write函数),谢谢您,如果我使用serial->write(values);如何选择值[3]?@A.Fagrell-“250被编译器解释为int类型,而serial->write()-函数需要一个常量字符*作为输入”-它还要求
const char*
以nul结尾,而您的代码不会这样做。@OWA命令这样做,或者可以在serial类中指定一个大小。我不知道这些要求。
QString str = "ABC";
QByteArray cmd = str.toLatin1();
serial -> write (cmd);