Professional Documents
Culture Documents
Rs232 Communication Matlab
Rs232 Communication Matlab
mm Matlab.
I. Chun b cc cng c cn thit.
Thng thng cc my tnh PC hoc LAPTOP ngy nay khng c cng COM (RS232), chnh v
th khi thc hin vit chng trnh giao tip RS232 bng MATLAB, chng ta cn thc hin mt
s th thut sau:
Ngoi MATLB ci sn trn my tnh chng ta c th s dng 2 cng c h tr l Virtual Serial
Port Driver v Proteus.
Trc tin hy ci t 2 phn mm trn my tnh (hy c k hng dn s dng ca phn
mm).
Khi ng MATLAB v ch sn trn ca s lnh (Command Windows). Sau khi ng phn
mm Virtual Serial Port Driver kch hot to ra cng COM o (hnh H-01).
H-01
Ch rng Virtual Serial Port Driver to ra 1 cp cng COM v c kt ni dy tn hiu o
vi nhau. iu ny rt thun li khi chng ta s dng kt hp vi Proteus trong qu trnh m phng
v thc hin chng trnh.
By gi th t ca s lnh ca MATLAB truy xut kim tra cc cng COM va to ra xem ta
thu c kt qu nh th no.
Trn ca s lnh Command Windows ca MATLAB g lnh >> s=serial (COM1)
>> s = serial('COM1')
Serial Port Object : Serial-COM1
1
Communication Settings
Port:
COM1
BaudRate:
9600
Terminator:
'LF'
Communication State
Status:
closed
RecordStatus:
off
Read/Write State
TransferStatus: idle
BytesAvailable: 0
ValuesReceived: 0
ValuesSent:
0
Nh vy i tng l Serial-COM1, tc 9600, v mt s tham s khc c lit k. Tip theo,
chng ta xem cc tham s ca i tng nh th no bng lnh >> get(s):
>> get(s)
ByteOrder = littleEndian
BytesAvailable = 0
BytesAvailableFcn =
BytesAvailableFcnCount = 48
BytesAvailableFcnMode = terminator
BytesToOutput = 0
ErrorFcn =
InputBufferSize = 512
Name = Serial-COM1
ObjectVisibility = on
OutputBufferSize = 512
OutputEmptyFcn =
RecordDetail = compact
RecordMode = overwrite
RecordName = record.txt
RecordStatus = off
Status = closed
Tag =
Timeout = 10
TimerFcn =
TimerPeriod = 1
TransferStatus = idle
Type = serial
UserData = []
ValuesReceived = 0
ValuesSent = 0
Cc i tng v thuc tnh thit lp ty thuc vo ngi lp trnh, thng thng s c cc quy
c pht sinh. Nhng trn ht chng ta nn lm theo mt chun quy c nht nh sau ny g
ri chng trnh mt cch thun tin.
% uiwait(handles.figure1);
% manual
set(handles.edit_TX,'String','');
set(handles.edit_RX,'String','');
set(handles.edit_StatusConnect,'String','Disconnect');
set(handles.edit_StatusSend,'String','');
set(handles.edit_TX,'HorizontalAlignment','Left');
set(handles.edit_RX,'HorizontalAlignment','Left');
set(handles.button_Send,'String','Send');
set(handles.button_Exit,'String','Exit');
set(handles.button_ClearTX,'String','Clear TX');
set(handles.button_ClearRX,'String','Clear RX');
set(handles.button_Connect,'String','Connect');
set(handles.button_Send,'Enable','off');
IsConnect = 0; % 1 = Connect,0 = Disconnect
%Declare global variable
global hand;
hand = handles;
save data.
handles.status_com = IsConnect;
guidata(hObject,handles);
2. function button_Send_Callback(hObject, eventdata, handles)
IsConnect = handles.status_com;
s = handles.com;
if (IsConnect == 1)
set(handles.edit_StatusSend,'String','Sending... ');
strTX = get(handles.edit_TX,'String');
fprintf(s,strTX);
set(handles.edit_StatusSend,'String','Sent successfully ');
end
handles.com = s;
guidata(hObject,handles);
3. function button_Connect_Callback(hObject, eventdata, handles)
IsConnect = handles.status_com;
6
if (IsConnect == 0),
IsConnect = 1;
% Setting for Serial Object
s = serial(get_stringPopup(handles.popup_ComPort));
s.BaudRate = get_doublePopup(handles.popup_BaudRate);
s.DataBits = get_doublePopup(handles.popup_DataBit);
s.Parity = get_stringPopup(handles.popup_ParityBit);
s.StopBit = get_doublePopup(handles.popup_StopBit);
% COM port
% Baud rate
% Data bit
% Parity bit
% Stop bit
end;
% Hide all setting popup menu.
set(handles.popup_ComPort,'Enable','off');
set(handles.popup_BaudRate,'Enable','off');
set(handles.popup_DataBit,'Enable','off');
set(handles.popup_StopBit,'Enable','off');
set(handles.popup_ParityBit,'Enable','off');
set(handles.edit_RecordName,'Enable','off');
set(handles.button_Send,'Enable','on');
else
% If Com Port is opened so close it
s = handles.com;
set(handles.button_Connect,'String','Connect');
set(handles.edit_StatusConnect,'String','Disconnected');
%record(s,'off')
% close serial port and delete serial object.
fclose(s);
IsConnect = 0;
delete(s);
% Show all setting popup menu.
set(handles.popup_ComPort,'Enable','on');
set(handles.popup_BaudRate,'Enable','on');
set(handles.popup_DataBit,'Enable','on');
set(handles.popup_StopBit,'Enable','on');
set(handles.popup_ParityBit,'Enable','on');
set(handles.edit_RecordName,'Enable','on');
set(handles.button_Send,'Enable','off');
end
% end of if.