我想通过串口COM在Qt
和μC之间发送数据。
我正在尝试发送一个字符,但是当我使用serial->write(250)
时,我收到此错误:
从'int'无效转换为'const char *
但如果我做serial->write("A")
,它就有效。你知道为什么吗?
答案 0 :(得分:0)
250由编译器解释为类型int
,而serial->write()
- 函数需要const char *
作为输入;
如果要将250
作为char发送,则必须转换类型:
char cValue = 250;
char *pCValue = &cValue;
serial->write(pCValue);
但请注意,pCValue
是指向临时字符的指针,仅在c在范围内时才有效。我猜你还需要在数组的末尾添加一个null终止符,如果你不能指定serial-class中的数据大小,正如owacoder所指出的那样。
答案 1 :(得分:0)
QSerialPort上可用于写入数据的成员来自docs:
write(const char *, qint64 ) : qint64
write(const char *) : qint64
write(const QByteArray &) : qint64
writeData(const char *, qint64 ) : qint64
writeData(const char *, qint64 ) : qint64
如果使用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);