• 5015阅读
  • 1回复

[提问]求助:2440开发板的串口接收不到数据 [复制链接]

上一主题 下一主题
离线darkeria
 
只看楼主 倒序阅读 楼主  发表于: 2012-03-07
大家好,我用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();
    }
}
离线dbzhang800

只看该作者 1楼 发表于: 2012-03-08
不清楚你用的版本是何处下载的,但从 Posix_QextSerialPort 可以看出:至少是5年以前的版本。所以不敢确定是谁的bug

或许你可以试试这个 http://code.google.com/r/dbzhang800-qextserialport/
快速回复
限100 字节
 
上一个 下一个