怎样在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;

dcbBaudRate=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;

dcbBaudRate=115200;

dcbfParity=NOPARITY;

dcbByteSize=8;

dcbStopBits=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;

wOverLappedhEvent=CreateEvent(NULL,TRUE,FALSE,NULL);

//创建事件

BOOL

tempflag

=

WriteFile(hCom,snd,len,&factdata,&wOverLapped);//在数据缓冲Ipbuffer不知道是否有问题

if(tempflag!=0)

{

std::cerr<<"等待信号"<<std::endl;

res=WaitForSingleObject(wOverLappedhEvent,5000);

WriteFile(hCom,snd,len,&factdata,&wOverLapped);

}

if(res!=WAIT_OBJECT_0)

std::cout<<"数据发送失败"<<std::endl;

}

这是发送数据的设置

接受数据很类似

你可以根据自己情况修改,然后你就可以根据MATLAB的数据读取以及数据传送方式来写你的程序了收起

%%%%没有用到内部函数!!!

PrimeNumber=[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97];

k=1;

for i=2:100

temp=i(i-1)-1;

for j=1:length(PrimeNumber)

if temp==PrimeNumber(j)

Result(k,1)=i; %亲密数对中的第一个数

Result(k,2)=i-1; %亲密数对中的第二个数

Result(k,3)=temp; %亲密素数

k=k+1;

break;

end

end

end

% 计算亲密素数和

SumPrime=0;

for i=1:k-1

SumPrime=SumPrime+Result(i,3);

end

% 数对个数

disp('数对个数');disp(k-1);

% 亲密素数和

disp('亲密素数和');disp(SumPrime);

以上就是关于怎样在matlab中读取串口全部的内容,包括:怎样在matlab中读取串口、紧急求助一个串口接收数据,写入文本并画图的MATLAB程序,求大神帮忙、用matlab写个小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9752351.html

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

发表评论

登录后才能评论

评论列表(0条)

保存