紧急求助一个串口接收数据,写入文本并画图的MATLAB程序,求大神帮忙 10

如题,急用,求好心的大神帮个忙... 如题,急用,求好心的大神帮个忙 展开
 我来答
小黄人小锐
2016-05-19
知道答主
回答量:13
采纳率:0%
帮助的人:4.9万
展开全部
串口读取/读取数据一般分为三步:打开串口,设置串口(波特率,串口数据传送方式等),然后是串口读取数据或者发送数据

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(),你把这几个函数搞懂,具体的参数含义,百度上有的,如果让我一个个具体说,说不过来的哦。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式