liunx下qt串口通讯怎么办,以前没接触过,现在要写串口驱动不知怎么搞,网上的资料表示不很理解

liunx下qt串口通讯怎么办,以前没接触过,现在要写串口驱动不知怎么搞,网上的资料表示不很理解,第1张

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

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去下一个别人交叉

工具包

,直接解压就好。。去友善的官网,或其他网站下这类的工具

你的问题解决没?我的问题是可以打开串口,但是写不了数据,很奇怪

我是在linux下编程

编译的时候出现的问题是:

qextserialport/win_qextserialport.h:5:21: fatal error: windows.h: No such file or directory

但是我已经把程序中所有include“win_qextserialport.h”的地方改成了“posix_qextserialport.h”

源程序在windows下没问题,可以使用,但是在fedora14下面就用不了了。。


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

原文地址:https://54852.com/yw/8426990.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存