目前卡在到底如何發送第一個BYTE 實現13BIT
後面的portocal都已經寫好了
我本來想用baudrate切換地個BYTE使用13845BARDRATE來實現13BIT
之後的數據都用20000
但QT好像沒辦法及時切換BAUDRATE發送 會先放進暫存以最後的baudrate來丟
就算我用flush清暫存 13bit->0x55 之間會空約30MS的時間
請問各位高手 該如何解決?
void MainWindow::send_LIN_command(char cmd, char byte1)
{
const SettingsDialog::Settings serial = m_settings->settings();
QByteArray data;
QString str;
const uchar *p;
bool test,test2;
test = m_serial->setBaudRate(13845);
qDebug()<<"test:"<<test;
if(test)
{
data.resize(1);//Sets the size of the byte array to size bytes.
data[0] = char(0x00); // SYNC
test2 = m_serial->write(data,1);
m_serial->waitForBytesWritten(1000);
//m_serial->flush();
test = m_serial->setBaudRate(serial.baudRate);
qDebug()<<"test2:"<<test2;
}
else
return;
//m_serial->flush();//Flushes any buffered data waiting to be written to the device.
qDebug()<<"test:"<<test;
data.resize(2);
data[0] = char(0x55); // SYNC
data[1] = cmd; // CMD
if(cmd == 0x14)
{
data.resize(5);
data[2] = byte1;
data[3] = char(0x00);
data[4] = char(0x00);
p = reinterpret_cast<const uchar*>(data.constData());
data[4] = LINCalculateSUM(p, data.size(), 3);
str.sprintf("send:%02x,%02x,%02x,%02x,%02x,%02x", p[0],p[1],p[2],p[3],p[4],p[5]);
}
m_LIN_CMD = cmd;
m_serial->write(data);
m_serial->flush();//Flushes any buffered data waiting to be written to the device.
qDebug() << str;
}