
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下面就用不了了。。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)