Robofun 機器人論壇
標題:
arduino接收外部命令延遲的問題
[打印本頁]
作者:
adolclistin
時間:
2017-6-12 17:32
標題:
arduino接收外部命令延遲的問題
各位前輩大家好
我使用Qt的QSerialPort,傳送指令給arduino,進行特定的動作。
當我發送指令的瞬間可以看到arduino板子上的RX燈亮了一下,過了約一秒才開始動做。
若我使用arduino 程式內建的序列埠監控視窗,指令一下,arduino馬上就反應了。
以下是我程式的部分
arduino part
//-----------------------------------------------------------------------------------------------------------------
void setup() {
myStepper.setSpeed(60);
Serial.begin(9600);
}
char orderindex;
int value;
void loop() {
if(Serial.available()){
orderindex = Serial.read();
value = Serial.parseInt();
orderchoose(orderindex, value);
}
void orderchoose(char orderI, int value)
{
switch(orderI)
{
case 'f':
myStepper.step(-value);
break;
case 'b':
myStepper.step(value);
break;
case 'r':
myStepper.setSpeed(value);
break;
case 'e':
//if(value == 1)
// stepmotor.enable();
//else
// stepmotor.disable();
break;
}
return;
}
Qt QSerialPart 設定
//---------------------------------------------------------------------------------------------------------
void MainWindow::connectarduino()
{
arduino_port_name = ui->serialport_cb->currentText();
arduino->setPortName(arduino_port_name);
arduino->open(QSerialPort::WriteOnly);
arduino->setBaudRate(QSerialPort::Baud9600);
arduino->setDataBits(QSerialPort::Data8);
arduino->setParity(QSerialPort::NoParity);
arduino->setStopBits(QSerialPort::OneStop);
arduino->setFlowControl(QSerialPort::NoFlowControl);
}
Qt QSerialPart 傳送資料
void MainWindow::updata(QString command)
{
if(arduino->isWritable()){
arduino->write(command.toStdString().c_str());
//arduino->flush();
}else{
qDebug() << "Couldn't write to serial!";
}
}
//--------------------------------------------------------------------------------------------------------
補充說明一下,在傳資料裡,flush函式,qt的說明是將所有要傳送的資料立刻傳送。但是我使用後發現他會傳兩次,一次是write, 第二次是flush,所以我就把他註解掉了。
請問是否有大大知道如何改善延遲的問題。
謝謝!
作者:
超新手
時間:
2017-6-12 18:25
並不是延遲
而是它一斷時間沒收到資料(預設一秒),
就會逾時
所以應該你只送了第一個字元orderI
而沒送接下來的資料value
所以你的 updata(???) 中, 到底傳送了什麼字串
貼出來看看
另外, 字串最後記得要加 \r\n
如 f100\r\n
作者:
adolclistin
時間:
2017-6-12 18:34
感謝超新手的回覆,
原來我沒有在後面加上\r\n
加上去之後就沒這個問題了。
再次謝謝!
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2