View Single Post
Old 13-04-2007, 07:43 PM   #13
Nguoi hieu hoc
Nhập môn đệ tử
 
Tham gia ngày: Aug 2006
Bài gửi: 4
:
Wink

Anh Bắc cho em hỏi 1 tí:
Trong file Rs232 Comunication.m
phần
Code:
function RS232_Communication_OpeningFcn(hObject, eventdata, handles, varargin)
 handles.output = hObject;  
guidata(hObject, handles);
có tác dụng gì vậy anh? Nếu không có 2 dòng này thì chương trình ko chạy dc.
Code:
handles.status_com = IsConnect;
dòng naỳ là để đưa ra tình trạng cổng Com là chưa nối hả anh? phần status_com là của cái nào thế anh?
em đọc trong help có nói nếu khai báo s = serial('COM1'); thì s.status là tình trạng cổng Com open hay close , còn status_com này thì em chưa hiểu , nó là tag nào của phần tử nào trong file *.fig vậy anh?
Code:
guidata(hObject,handles);
dòng này để lưu lại biến handles hả anh ? có tác dụng như thế nào vậy anh?
Code:
function button_Send_Callback(hObject, eventdata, handles) 
   IsConnect = handles.status_com;
    s = handles.com;
là thế nào vậy anh ? sao file *.m này biết rõ tag com là của ai? em đâu có thấy anh khai báo đối tượng nào là com đâu . Chẳng lẽ nó ngầm hiểu là cổng Com luôn hả anh?
Code:
function button_Send_Callback(hObject, eventdata, handles)
      strTX = get(handles.edit_TX,'String');
      fprintf(s,strTX);
vậy là anh truyền chuỗi hả anh , và 1 byte hả anh?
Code:
 handles.com = s;
     guidata(hObject,handles);
2 dòng này đẻ làm gì vậy anh?biến s là biến toàn cục nên ta lưu giá trị của nó lại cho các function khác dùng hả anh?
Code:
function button_Connect_Callback(hObject, eventdata, handles)
       s = serial(get_stringPopup(handles.popup_ComPort));
nếu s là toàn cục vậy tại sao ở function nút Connect dc bấm lại có khai báo s như thế này chi vậy anh ? chọn lại s là 1 trong các cổng Com hả anh? vậy biến s khai báo ở mấy hàm khác chi vậy anh?
Code:
  s.BytesAvailableFcn = @BytesAvailable_Callback;
    s.OutputEmptyFcn =   @OutputEmpty_Callback;
    s.BreakInterruptFcn = @BreakInterrupt_Callback;
    s.ErrorFcn = @Error_Callback;
    s.PinStatusFcn = @PinStatus_Callback;
    s.BreakInterruptFcn = @BreakInterrupt_Callback;
    s.TimerFcn = @Timer_Callback;
phần này để chi vậy anh , có dấu @ để làm gì vậy anh?
em chỉ thấy anh ghi code cho
Code:
 bytesAvailable_callback như sau:
    global hand;
    ind = fscanf(obj);  
    set(hand.edit_RX,'String',ind);
biến ind ở đây là đọc giá trị đưa vào hả anh?

Code:
 s.RecordName = get(handles.edit_RecordName,'String');s
    s.RecordMode = 'index';
tại sao chúng ta phải có phần record này vậy anh?
Code:
 function figure1_DeleteFcn(hObject, eventdata, handles)
IsConnect = handles.status_com;
if (IsConnect == 1),
    s = handles.com;
    record(s,'off')
    fclose(s);
    delete(s);
    clear s;
    IsConnect = 0;
end
delete(hObject);
còn function deletefcn có tác dụng gì vậy anh?
Code:
function figure1_CloseRequestFcn(hObject, eventdata, handles)
IsConnect = handles.status_com;
if (IsConnect == 1),
    s = handles.com;
    record(s,'off');
    fclose(s);
    delete(s);
    clear s;
    IsConnect = 0;
end
delete(hObject);
function này có tác dụng gì vậy anh?

Code:
  s.BytesAvailableFcnCount = 1;
    s.BytesAvailableFcnMode = 'terminator';
ở đây anh chỉ truyền 1 byte theo kiểu ASCII thôi hả anh? muốn 3 byte mình chỉ thay đổi s.BytesAvailableFcnCount = 3; là được hả anh?

Em thấy trong phần Simulink có hỗ trợ RS 232 luôn , sao lấy ở đó hỗ trợ được không anh? Em mới làm quen với Matlab và giao tiếp cồng Com , xin anh chỉ giáo ạ (^_^)

À anh

thay đổi nội dung bởi: Nguoi hieu hoc, 14-04-2007 lúc 12:19 AM.
Nguoi hieu hoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn