我想通過串口COM在Qt
和μC之間發送數據。寫入串口:從'int'到'const char *'的無效轉換
我試圖發送一個字符,但是當我用serial->write(250)
,我得到這個錯誤:
invalid conversion from 'int' to 'const char*
但如果我這樣做serial->write("A")
,它的工作原理。你有什麼想法,爲什麼?
我想通過串口COM在Qt
和μC之間發送數據。寫入串口:從'int'到'const char *'的無效轉換
我試圖發送一個字符,但是當我用serial->write(250)
,我得到這個錯誤:
invalid conversion from 'int' to 'const char*
但如果我這樣做serial->write("A")
,它的工作原理。你有什麼想法,爲什麼?
250由編譯器解釋爲int
類型,而serial->write()
函數需要const char *
作爲輸入; 如果你想發送250
爲一個char,你要轉換的類型:
char cValue = 250;
char *pCValue = &cValue;
serial->write(pCValue);
但是,請注意,pCValue
是指向臨時字符,只會是有效的,而c是在範圍內。我猜你還需要在數組的末尾添加一個空終止符,如果你不能在串行類中指定數據大小,就像owacoder指出的那樣。
上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);
這樣,把所有人物和有很多,可以將對象轉換爲一個QByteArray中有用的Qt類的;例如一個QString就是這樣簡單地轉換爲QByteArray:
QString str = "ABC";
QByteArray cmd = str.toLatin1();
serial -> write (cmd);
你能展示一些你的代碼嗎?請發佈[最小,完整和可驗證示例](http://www.stackoverflow.com/help/mcve)。 – owacoder
當你說「寫250」時,你是什麼意思?你想發送字符串「250」還是字符串「」\ xFA「'由單個字節值爲250的字符串組成? –
不,我想發送250十進制0xFA在十六進制 – Ale