请教:linux下Qt读取串口的问题

请教:linux下Qt读取串口的问题,第1张

de=C/C++][/void Download::readMyCom()

{

qWarning("read!")

qDebug() <<"read: "<<myCom->bytesAvailable()<<"bytes"

QByteArray temp = myCom->readAll()

ui->textBrowser->insertPlainText(temp)

QFile file("write2fileName")

//如果打开失败则给出提示并退出函数

if(!file.open(QFile::Append | QIODevice::Text)){

qWarning("fail to open the file!")

return

}

QDataStream out(&file)

串口通信一般为三步:打开串口,串口设置,向串口发送数据或者向串口接受数据:

void OpenComm()

{

hCom=CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,0,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,

NULL)

}

void SetComm()

{

SetupComm(hCom,1024,1024)

DCB dcb

dcb.BaudRate=115200

dcb.fParity=NOPARITY

dcb.ByteSize=8

dcb.StopBits=ONESTOPBIT

GetCommState(hCom,&dcb)

if(!GetCommState(hCom,&dcb)){

std::cerr<<"串口被占用"<<std::endl

return

}

if(!SetCommMask(hCom,EV_RXCHAR|EV_TXEMPTY)){

std::cerr<<"掩码设置失败"<<std::endl

}

}

void SendMessageOut(const BYTE snd[],int len)

{

DWORD factdata=100

DWORD res=0

wOverLapped.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL) //创建事件

BOOL tempflag = WriteFile(hCom,snd,len,&factdata,&wOverLapped)//在数据缓冲Ipbuffer不知道是否有问题

if(tempflag!=0)

{

std::cerr<<"等待信号"<<std::endl

res=WaitForSingleObject(wOverLapped.hEvent,5000)

WriteFile(hCom,snd,len,&factdata,&wOverLapped)

}

if(res!=WAIT_OBJECT_0)

std::cout<<"数据发送失败"<<std::endl

}

这是向串口发送数据的,主要函数为WriteFile()读取ReadFile(),具体用法 百度一下

1、可以

2、qt Creator只是一个集成开发工具,这个版本随意,网上下就可以,qte不是用最新,而是最好用跟你在Linux开台开发一样的。首先要在Linux下交叉编译qte的库,然后再将Lib这些文件移植在板子上,最后通过交叉编译好的库去编译你在pc上编写的程序,放到板子上运行!关于交叉编译qt的文章,网上可以搜到很多。

3、WIN7平台的交叉编译工具安装比较麻烦,不推荐使用,直接在Linux去下一个别人交叉工具包,直接解压就好。。去友善的官网,或其他网站下这类的工具


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7471729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存