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;
}
这是发送数据的设置 接受数据很类似 你可以根据自己情况修改,然后你就可以根据MATLAB的数据读取以及数据传送方式来写你的程序了
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;
}
这是发送数据的设置 接受数据很类似 你可以根据自己情况修改,然后你就可以根据MATLAB的数据读取以及数据传送方式来写你的程序了
追问
能不能加个QQ细说一下TnT
追答
额 我把程序给你了 ,你按照那三步是没错的,如果有一些小问题,你在百度上查一下就可以的了。主要函数是 CreateFIle() ;SetupComm();WiteFile()/ReadFile(),你把这几个函数搞懂,具体的参数含义,百度上有的,如果让我一个个具体说,说不过来的哦。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询