大家好,我用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();
}
}