|
Tài trợ cho PIC Vietnam |
Matlab-Simulink & Labview & 20-Sim Các công cụ mô phỏng đa ngành... |
|
Ðiều Chỉnh | Xếp Bài |
15-05-2013, 11:25 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: May 2013
Bài gửi: 1
: |
Xin giúp đỡ về serial COM trong Matlab
Em mới làm quen với Matlab.Phần nhận và truyền dữ liệu thì em đã làm được ở Tag Command. Bây giờ em muốn làm cái GUI đơn giản để giao tiếp lấy giá trị xung của động cơ rồi hiển thị lên ô Text .Em đang vướng ở chỗ không biết làm sao để tự động lấy giá trị liên tục.Tức là ở chỗ đặt đoạn code ở chỗ nào( button thì mỗi lần nhấn mới lấy được, radio button thì ko biết...., còn figure thi ko thấy tác dụng hoặc làm sai...).Nếu là Visual Basic thì đặt ở MSComm hoặc figure cũng được thì phải.Em coi cái RS232Comm của a.Ngô Hải Bắc thì chóng mặt quá( chắc do nội công chưa đủ). Vậy có ai biết giúp em với, nếu có cái file ví dụ nữa thi quá tốt!!! em cảm ơn trước!!!
|
04-08-2013, 04:14 AM | #2 | |
Đệ tử 3 túi
Tham gia ngày: Mar 2009
Bài gửi: 49
: |
Trích:
Sau khi khởi tạo cổng com với lệnh: s=serial('COM1'), COM1 là môt ví dụ, bạn dùng lệnh get(s) để lấy thông tin về cổng com ByteOrder = littleEndian BytesAvailable = 0 BytesAvailableFcn = Dòng 1 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 SERIAL specific properties: BaudRate = 9600 BreakInterruptFcn = DataBits = 8 DataTerminalReady = on FlowControl = none Parity = none PinStatus = [1x1 struct] PinStatusFcn = Port = COM1 ReadAsyncMode = continuous RequestToSend = on StopBits = 1 Terminator = LF Dòng 2 bạn quan tâm đến dòng 1 và 2, Dòng 1 định nghĩa hàm mà bạn sẽ gọi khi ngắt xảy ra Dòng 2 mô tả khi nào ngắt xảy ra: + LF: ngắt khi nhận được ký tự xuống dòng( hex: 0x0A, dec: 10, \n với C, ví dụ từ vdk bạn gửi printf("100\n")) + byte: ngắt khi cổng com nhận đủ số byte định trước Ở đây bạn chỉ cần khai báo hàm cần gọi khi ngắt, còn lại cứ để mặc định, lưu ý các khai báo này phải thực hiện trước khi mở cổng: fopen Khai báo hàm ngắt như sau: set(s,'BytesAvailableFcn',{@thanh,hObject,handles} ); Đồng thời bạn củng phải viết nội dung cho hàm thanh, hàm này bạn tự add thêm vào file *.m đi kèm với file *.fig như ví dụ bên dưới. function thanh(obj,event,hObject, handles) data=fscanf(obj); set(handles.data_text,'string',data(1:end-1)); obj là đối tượng cổng com, handles là tham chiếu tổng quát đến tất cả các đối tượng của figure, nếu không có khai báo này ở phần khai báo hàm ngắt thì bạn sẽ không thể chuyển dữ liệu nhận được đến các đối tượng khác. Trong chương trình mình đính kèm sẽ thực hiện việc tìm kiếm cổng com đang tồn tại trong máy tự động và kết nối, khi cổng com nhận được dữ liệu nó sẽ tự động chuyển đến textbox, nếu máy bạn có cỏng com ảo bạn có thể dùng phần mềm terminal để mô phỏng hoặc giao tiếp trực tiếp với vi điều khiển ví dụ bạn nhận được chuổi abc1234 và ký tự xuống dòng, nó sẽ hiện thị ra textbox abc1234 Link:http:http://www.youtube.com/watch?v=UIdkq...ature=youtu.be Hy vọng giúp ích được bạn. |
|
|
|