怎么用matlab读取串口数据?

怎么用matlab读取串口数据?,第1张

s=serial('com1')//设置串口

set(s,'BaudRate',9600,'StopBits',1,'Parity','none','DataBits',8,'InputBufferSize',255)

//串口的一些设置,注意,'none'有引号,有些值如InputBufferSize只能在串口关闭时才能设置,

//所以不建议先打开串口

fopen(s)//打开串口

fwrite(s,100)//打100(十进制)写入串口也可以是一维数组,可以用示波器测伍大庆com的第3个引脚

a=fread(s)

//读出串口数据,由于matlab是顺序执行的,所以这里读不到100,

//程序会卡腔握在这里直到读到数据为止,好像是存完buffer吧,这里忘了。

//仿液自己从com的第2个引脚给数据试试看就清楚了

fclose(s)//关闭串口

串口读取/读取数据一般分为三步:打开串口,设置串口(波特率,串口数据传送方式薯带等),然后是串口读取数据或者发送数据

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

...展开串口读取/读取数据一般分为三步:打开串口,设置串口(波特率,串口数据传送方式等),然后是串口读取数据或者发送数据

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的数据读取以及数据传送方式来写你的程序了收起

最新版matlab,现在推荐使用serialport *** 作,相较于原函数serial()更加简单,创建速度誉扒更快。

官族镇方链接为:

https://ww2.mathworks.cn/help/matlab/ref/serialport.html

其中,port为端口号,baudrate为波特率,Name可选read、readline、write等等,具体参考链接。

按照我的理解,兆虚粗matlab中创建的串口为虚拟串口,退出即会抹除串口使用痕迹

通俗理解就是,matlab的.m程序运行结束后,这个串口发生过的事情不会在串口中留存

传统的串口调试助手退出时会保留串口状态

所以matlab中使用串口时,要在.m文件运行过程中进行一切 *** 作


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存