在matlab中如何清空串口缓冲区
4个回答
展开全部
1.读取输入缓冲区字节数,然后将缓冲区数据全部读上来再判断一下就可以了
2.delete(s);
3.clear 数据名称
4.读进来不用就清除了吧,我也是很迷茫,我的思路就是读进来然后选择新读取就行了,缓冲区的数据就不存在了。
2.delete(s);
3.clear 数据名称
4.读进来不用就清除了吧,我也是很迷茫,我的思路就是读进来然后选择新读取就行了,缓冲区的数据就不存在了。
更多追问追答
追问
delete(s)是直接把整个串口删了
其他几个能不能说明白点
追答
要使用MATLAB接收串口数据,首先需要新建一个串口对象,并初始化,包括波特率,停止位,有无校验,输入输出缓冲区大小等。
scom=serial('COM1'); %串口com1
scom.BaudRate = 9600; %波特率
scom.InputBufferSize = 1024; %输入缓冲区
scom.OutputBufferSize = 1024; %输出缓冲区
scom.ReadAsyncMode = 'continuous'; %异步通信时,连续读串口数据
scom.BytesAvailableFcnMode = 'byte'; %中断触发事件
scom.BytesAvailableFcnCount = 100; %当缓冲区数据
scom.BytesAvailableFcn = @instrcallback; %调用回调函数
以上是串口的部分属性及相应的修改,若要查看全部属性,可使用语句get(scom),并根据需要自己的修改相关属性。特别要注意的是上面最后一句(scom.BytesAvailableFcn = @instrcallback;),这个烦了我很久。意思是当缓冲区中的数据达到100 bytes时调用instrcallback回调函数。MATLAB接收串口数据有两种方式,包括查询和调用回调函数。查询就比较简单,但是会很忙。调用回调函数就类似中断,当用户具体的串口通信事件发生时,执行中断处理。instrcallback.m在MATLAB7\toolbox\matlab\iofun\@instrument目录下面,尽量不要改动原来的内容,在末尾添加当缓冲区有指定量的数据时需要MATLAB做的工作,比如绘图,数据保存之类的。我在回调函数中做的工作暂时比较简单一点,包括将连续两个8位数据拼成16位,并存入一个二进制文件中。部分代码如下:
data=zeros(100,1);
data=fread(obj,100,'uint8');
dataout=zeros(50,1);
for i=1:50
dataout(i)=256*data(2*i)+data(2*i-1);
end
str='D:\MATLABwork\test.dat'
fid = fopen(str,'a+');
fwrite(fid,dataout,'int16');
fclose(fid);
当然,串口对象初始化之后,记得使用fopen(scom)打开串口,当工作完成时,使用fclose(scom)和delete(scom)关闭与清除串口设备。于是整个流程大致就是:创建串口的对象,初始化,打开串口,等待时间发生时调用回调函数,在主程序或者回调函数中根据自己需要关闭并清除串口对象。
经测试,能完成PC端与stm32基本的串口通信问题,包括控制信号的发送接收,数据的接收保存等,当然下位机如果使用其他单片机,只要根据协议修改相关的串口代码,同样能完成通信。
2011-11-21
展开全部
一般不建议在表格中直接编辑。
如果一定要实现编辑的话,可以使用flexgrid控件
利用rowcolchange事件,当cell(某格)获得焦点时,移动一个textbox 或其他控件到当前cell;
当控件失去焦点时,让控件visible=false,同时把数据写入到cell的textmatrix属性。
如果一定要实现编辑的话,可以使用flexgrid控件
利用rowcolchange事件,当cell(某格)获得焦点时,移动一个textbox 或其他控件到当前cell;
当控件失去焦点时,让控件visible=false,同时把数据写入到cell的textmatrix属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般不建议在表格中直接编辑。
如果一定要实现编辑的话,可以使用flexgrid控件
利用rowcolchange事件,当cell(某格)获得焦点时,移动一个textbox 或其他控件到当前cell;
当控件失去焦点时,让控件visible=false,同时把数据写入到cell的textmatrix属性。
如果一定要实现编辑的话,可以使用flexgrid控件
利用rowcolchange事件,当cell(某格)获得焦点时,移动一个textbox 或其他控件到当前cell;
当控件失去焦点时,让控件visible=false,同时把数据写入到cell的textmatrix属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询