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写个小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)