Arduino ide qserialport不向arduino发送字符

Arduino ide qserialport不向arduino发送字符,arduino-ide,Arduino Ide,我在尝试从WIN7上的qt5应用程序向连接到Arduino的comport发送字符(即“R”)时遇到问题。 我打算在Arduino上闪烁led,我的Arduino部件工作正常 这是我的qt代码: #include <QTextStream> #include <QCoreApplication> #include <QtSerialPort/QSerialPortInfo> #include <QSerialPort> #include <i

我在尝试从WIN7上的qt5应用程序向连接到Arduino的comport发送字符(即“R”)时遇到问题。 我打算在Arduino上闪烁led,我的Arduino部件工作正常

这是我的qt代码:

#include <QTextStream>
#include <QCoreApplication>
#include <QtSerialPort/QSerialPortInfo>
#include <QSerialPort>
#include <iostream>
#include <QtCore>

QT_USE_NAMESPACE

using namespace std;
QSerialPort serial;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextStream out(stdout);
    QList<QSerialPortInfo> serialPortInfoList = QSerialPortInfo::availablePorts();

    out << QObject::tr("Total number of ports available: ") << serialPortInfoList.count() << endl;


    foreach (const QSerialPortInfo &serialPortInfo, serialPortInfoList) {
        out << endl
            << QObject::tr("Port: ") << serialPortInfo.portName() << endl
            << QObject::tr("Location: ") << serialPortInfo.systemLocation() << endl
            << QObject::tr("Description: ") << serialPortInfo.description() << endl
            << QObject::tr("Manufacturer: ") << serialPortInfo.manufacturer() << endl
            << QObject::tr("Vendor Identifier: ") << (serialPortInfo.hasVendorIdentifier() ? QByteArray::number(serialPortInfo.vendorIdentifier(), 16) : QByteArray()) << endl
            << QObject::tr("Product Identifier: ") << (serialPortInfo.hasProductIdentifier() ? QByteArray::number(serialPortInfo.productIdentifier(), 16) : QByteArray()) << endl
            << QObject::tr("Busy: ") << (serialPortInfo.isBusy() ? QObject::tr("Yes") : QObject::tr("No")) << endl;
    }

    serial.setPortName("COM5");
    serial.open(QIODevice::ReadWrite);
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);
    serial.setFlowControl(QSerialPort::NoFlowControl);




        if(!serial.isOpen())
        {
          std::cout<<"port is not open"<<endl;
          //serial.open(QIODevice::ReadWrite);
        }

    if(serial.isWritable()==true)
    {
        std::cout<<"port writable..."<<endl;
    }



    QByteArray data("R");

    serial.write(data);
    serial.flush();
    std::cout<<"value sent!!! "<<std::endl;
    serial.close();

    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
QT_使用名称空间
使用名称空间std;
QSerialPort系列;
int main(int argc,char*argv[])
{
qcorea应用程序(argc、argv);
QTextStream out(标准输出);
QList serialportinfo=QSerialPortInfo::availableport();
out您是否正在等待arduino代码中的cr lf(0x0D 0x0A)

QByteArray ba;
ba.resize(3);
ba[0] = 0x5c; //'R'
ba[1] = 0x0d;
ba[2] = 0x0a;
或者用

QByteArray data("R\r\n");


我想我已经找到了一个部分的解决方案,但它仍然是不完整的

当我第一次按debug时,qt不会向Arduino发送任何信号,但当我第二次按debug时,它的行为与预期一样

那么,要让它运行两次,不是很奇怪吗?

如果问题存在于其他地方,请告诉我


任何帮助…

我想是的,这是我的arduino代码:int输入;int led=13;void设置(){Serial.begin(9600);pinMode(led,输出);Serial.println(“Started…”);}void循环(){input=Serial.read();if(input='R'){digitalWrite(led,HIGH);//打开led(高是电压电平)延迟(1000);Serial.println(“LED亮起!”;}如果(输入=s'){数字写入(LED,低);//打开LED(高是电压电平)延迟(1000);Serial.println(“LED熄灭!”);}这是否意味着它发送'R',而回车连续返回?如果是这样,它没有解决问题,问题首先会持续,即使它工作到目前为止,您应该将serial.read函数放入if(serial.available()>0){}测试。尝试发送“R\R\n”或“R\n”到arduino进行测试。我想您是指serial.write,但我没有任何可用()还是可用功能??
QByteArray data("R\n");