GUI problem while doing serial communication

I am doing serial communication between matlab and controller. I have created a GUI. The problem is whenever I am starting serial communication the GUI doesn't appears but when I terminate the program GUI appears. I want GUI to appear in real time.I am not getting the problem.

답변 (1개)

Walter Roberson
Walter Roberson 2016년 4월 13일

0 개 추천

Create serial object BytesAvailableFcn callbacks to handle the serial data, instead of looping around checking for data.
There is a sample GUI for serial communications in the File Exchange

댓글 수: 5

Sir thanks for your reply. What I did is I created push button for serial communication to set up and then when input comes I put if condition like if S1=='A' change the color. But the problem is color is not changing only serial communication happens. What to do?
Nachiket Patki
Nachiket Patki 2016년 4월 14일
편집: Walter Roberson 2016년 4월 14일
Its something like this.....
function pushbutton1_Callback(hObject, eventdata, handles)
global S1;global r1;
r1 = serial('COM16','BaudRate',9600);
fopen(r1);
set(r1,'Timeout',10);
S1=fgets(r1)
function varargout = AjayGUI_OutputFcn(hObject, eventdata, handles)
global S1;
if (S1=='A')
set(c21,'FaceColor','g')
set(c22,'FaceColor','w')
set(r2,'FaceColor','w')
set(c23,'FaceColor','w')
elseif (S1=='B')
set(r2,'FaceColor','w')
set(c23,'FaceColor','w')
set(c22,'FaceColor','g')
set(c21,'FaceColor','w')
elseif (S1=='C')
set(r2,'FaceColor','w')
set(c23,'FaceColor','g')
set(c22,'FaceColor','w')
set(c21,'FaceColor','w')
elseif (S1=='D')
set(r2,'FaceColor','r')
set(c23,'FaceColor','w')
set(c22,'FaceColor','w')
set(c21,'FaceColor','w')
end
axis off;
The *OutputFcn is not called until you are exiting the GUI, by which time you are probably destroying the graphics.
so how to slove this calling function problem? Where should I call it?
It would seem to make the most sense to put the display code in pushbutton1_Callback, or at least have pushbutton1_Callback call the display code.
Note: fgets() returns the line terminator as part of the string, but you are using == to do comparisons. You should use fgetl() and you should use strcmp()

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Data Type Identification에 대해 자세히 알아보기

질문:

2016년 4월 12일

댓글:

2016년 5월 9일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by