大家好,我用mini 2440通过串口跟pc机通信,结果能发送但收不到pc的数据,同样的程序放到pc机上跟开发板上的串口助手通信就可收可发,不知道有没有谁之前碰到过同样的情形呢?是不是我串口那里设置的不对?我使用的是网上那个介绍得很多的第三方类,设置部分的代码如下:
void initform::ComInit()
{
    portName = "/dev/ttySAC1";
    mybaud = BAUD9600;
    mydatabits = DATA_8;
    myparity = PAR_NONE;
    mystopbits = STOP_1;
    myflow = FLOW_OFF;
    mytimeout = (long)500;
    myserial = new DataCollectThread(portName, mybaud, mydatabits, myparity, mystopbits, myflow, mytimeout);
    myserial->start();
}
串口线程如下:
DataCollectThread::DataCollectThread(QString portName,BaudRateType baud, DataBitsType databits, ParityType parity, StopBitsType stopbits, FlowType flow, long timeout)
{
    struct PortSettings ttySetting; // s3c2440--{BAUD115200,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};
    myCom = new Posix_QextSerialPort(portName,ttySetting);
    myCom->open(QIODevice::ReadWrite);    //以可读写方式打开串口
    myCom->setBaudRate(baud);
    myCom->setDataBits(databits);
    myCom->setParity(parity);
    myCom->setStopBits(stopbits);
    myCom->setFlowControl(flow);
    myCom->setTimeout(0,timeout);
 
}
DataCollectThread::~DataCollectThread()
{
}
void DataCollectThread::run()
{
    while(!stopped)
    {
         usleep(50000);    //delay 50ms
         mutex.lock();
         QByteArray temp = myCom->readAll();          //读取串口缓冲区的所有数据给临时变量temp
         QString str(temp);
         if(str!="")
            CommString+=str;
         mutex.unlock();
    }
}