..:: DẦU KHÍ FAMILY - HUMG ::..


 
Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng Nhập  

Share | 
 

 Kết nối với COM sử dụng Matlab

Go down 
Tác giảThông điệp
khanhthietbi
Admin
Admin
avatar

Tổng số bài gửi : 190
Điểm số : 6911
Ngày tham gia : 22/02/2011

Bài gửiTiêu đề: Kết nối với COM sử dụng Matlab   11/4/2011, 5:39 pm

Đọc vài thứ linh tinh, viết bài linh tinh chút xíu.
Truy cập vào đây để đọc Matlab/Toolboxes/Instrument Control/Tutorials







Nó hiện ra cái này

Đọc thôi!

Trong cửa sổ đầu tiên (Thẻ Serial hay Thẻ nối tiếp)
Các nút trong cửa sổ này sẽ mở các demo về hộp công cụ điều khiển thiết bị nối với cổng nối tiếp.
ASCII Read/Write - giới thiệu về đọc và ghi dữ liệu dưới dạng kí tự ascii từ thiết bị
Binary Read/Write - giới thiệu về đọc và ghi dữ liệu dạng số nhị phân từ thiết bị
Asynchronous - minh họa đặc trưng/tính chất của đọc và ghi không đồng bộ
Kích vào nút ASCII Read/Write
Demo này khám phá các toán tử đọc và ghi kí tự ASCII với đối tượng cổng nối tiếp
Thông tin thu được đối từ mô tả này cần được ghi lại để sử dụng về sau. Do đó, bạn không cần một thiết bị thực sự nào để học về các toán tử đọc/ghi kí tự ascii sử dụng một cổng nối tiếp. Thiết bị được sử dụng ở đây là một bộ hiện sóng Tektronix TDS 210.

Kích next
Các hàm và tính chất
------------------------
Những hàm này được sử dụng khi đọc và ghi văn bản
FPRINTF Ghi văn bản vào thiết bị
FSCANF Đọc dữ liệu từ thiết bị dưới định dạng văn bản

Các tính chất này liên quan tới đọc và ghi văn bản:
ValuesReceived - Xác định (Specify) tổng số các giá trị đọc từ thiết bị
ValuesSent - Xác định tổng số các giá trị gửi tới thiết bị
InputBufferSize - Xác định tổng số các byte cần thiết trong bộ đệm đầu vào tại một thời điểm.
OutputBufferSize - Xác định tổng số byte cần thiết trong bộ đệm đầu ra tại một thời điểm
Terminator - Kí tự được sử dụng để ngắt/kết thúc các lệnh gửi tới thiết bị

Kích next
Tạo một cổng nối tiếp
-----------------------------
Để bắt đầu, chúng ta tạo một đối tượng cổng nối tiếp gắn với cổng COM2
>> s = serial('COM2');
>> set(s, 'Terminator', 'CR')
>> s
Serial Port Object : Serial-COM2 ‘xác định cổng’
Communication Settings ‘Cài đặt kết nối’
Port: COM2
BaudRate: 9600 ‘tốc độ truyền tín hiệu’
Terminator: 'CR'
Communication State ‘Trạng thái kết nối với thiết bị’
Status: closed ‘chưa kết nối’
RecordStatus: off
Read/Write State ‘trạng thái đọc/ghi’
TransferStatus: idle ‘chờ đợi’
BytesAvailable: 0
ValuesReceived: 0
ValuesSent: 0

Kích next
Kết nối đối tượng cổng nối tiếp với thiết bị
---------------------------------------------------
Trước khi bạn có thể thực hiện một toán tử đọc và ghi, bạn phải kết nối đối tượng cổng nối tiếp với thiết bị bằng cách sử dụng hàm FOPEN. Nếu đối tượng được kết nối thành công, tính chất Trạng thái sẽ tự động đặt sang cấu hình là open
>> fopen(s)
>> get(s, 'Status')
ans =
open
Chú ý rằng bản tóm tắt về tính chất được cập nhật phù hợp với trạng thái mới.
>> s
Serial Port Object : Serial-COM2
Communication Settings
Port: COM2
BaudRate: 9600
Terminator: 'CR'
Communication State
Status: open
RecordStatus: off

Read/Write State
TransferStatus: idle
BytesAvailable: 0
ValuesReceived: 0
ValuesSent: 0

Kích next
Ghi dữ liệu ascii
------------------
Bạn sử dụng hàm FPRINTF để ghi các dữ liệu ascii tới thiết bị. Ví dụ, dòng lệnh 'Display:Contrast' sẽ thay đổi độ tương phản của máy hiện sóng
>> fprintf(s, 'Display:Contrast 45')
Mặc định, hàm FPRINTF hoạt động theo phương thức đồng bộ. Điều này nghĩa rằng FPRINTF chặn các dòng lệnh của Matlab cho tới khi một trong các điều sau xảy ra
- Tất cả dữ liệu đã được ghi
- Thời gian thực hiện đã hết, điều này được xác định bởi tính chất Timeout

Kích next
Ghi dữ liệu ascii (tiếp)
------------------
Mặc định hàm FPRINTF viết các kí tự ascii sử dụng định dạng là %s\n.
Tất cả các lệnh \n trong dòng lệnh gửi tới thiết bị được thay thế bởi giá trị của tính chất Terminator. Khi sử dụng định dạng mặc định, %s\n, tất cả các lệnh viết tới thiết bị sẽ kết thúc với kí tự Terminator (kí tự ngắt).

Đối với lệnh độ tương phản trước kia, kí tự kết thúc “CR” được gửi sau 'Display:Contrast 45' để chỉ ra sự kết thúc của lệnh.

Kích next
Ghi dữ liệu ascii (tiếp)
------------------
Bạn có thể thiết lập định dạng của lệnh bằng cách xác định một đối số đầu vào thứ ba cho FPRINTF. Các kí tự chuyển đổi định dạng được chấp nhận bao gồm: d, i, o, u, x, X, f, e, E, g, G, c, và s.
Ví dụ, dòng lệnh về độ tương phản trình bày phía trên có thể được viết tới thiết bị sử dụng ba lần gọi hàm FPRINTF
>> fprintf(s, '%s', 'Display:');
>> fprintf(s, '%s', 'Contrast');
>> fprintf(s, '%s\n', ' 45');
Kí tự ngắt Terminator chỉ rằng kết thúc của lệnh và được gửi trong lần gọi cuối của FPRINTF

Kích next
Các tính chất liên quan tới ghi ascii
---------------------------------------
Tính chất OutputBufferSize xác định số byte lớn nhất mà có thể được ghi tới thiết bị tại một thời điểm.
Mặc định, OutputBufferSize là 512
>> get(s, 'OutputBufferSize')
ans =
512
Nếu lệnh xác định trong FPRINTF chứa đựng hơn 512 byte, một lỗi được trả về và không có dữ liệu nào được ghi tới thiết bị.
Tính chất ValuesSent chỉ ra rằng tổng số giá trị được ghi tới thiết bị từ khi đối tượng cổng nối tiếp được kết nối với thiết bị.
>> get(s, 'ValuesSent')
ans =
40

Kích next
Đọc kí tự ascii
------------------
Bạn sử dụng hàm FSCANF để đọc dữ liệu ASCII từ thiết bị. Ví dụ, lệnh cho máy hiện sóng 'Display:Contrast?' sẽ trả về độ tương phản của máy hiện sóng
>> fprintf(s, 'Display:Contrast?')
>> data = fscanf(s)
data =
45

Kích next
Đọc dữ liệu ascii (tiếp)
------------------
Mặc định, hàm FSCANF đọc dữ liệu sử dụng định dạng '%c' và chặn các dòng lệnh của Matlab cho tới khi một trong các điều sau xuất hiện:
- Nhận được lệnh ngắt, xác định từ tính chất Terminator
- Thời gian thực hiện đã hết, xác định bởi tính chất Timeout
- Số lượng cụ thể của các giá trị được đọc

Kích next
Đọc dữ liệu ascii (tiếp)
------------------
Bạn có thể thiết lập định dạng của dữ liệu đọc bằng cách xác định một đối số đầu vào thứ hai cho FSCANF. Các kí tự chuyển đổi định dạng được chấp nhận bao gồm: d, i, o, u, x, X, f, e, E, g, G, c, và s.
Ví dụ, lệnh sau cho độ tương phản như là một số double
>> fprintf(s, 'Display:Contrast?')
>> data = fscanf(s, '%d')
data =
45
>> isnumeric(data) ‘kiểu dữ liệu’
ans =
1

Kích next
Các tính chất liên quan tới đọc ascii
--------------------------------------
Tính chất InputBufferSize xác định số byte lớn nhất mà bạn có thể đọc từ thiết bị. Mặc định InputBufferSize là 512.
>> get(s, 'InputBufferSize')
ans =
512
Tính chất được cập nhật bởi số lượng các giá trị được đọc từ thiết bị, bao gồm cả ngắt.
>> get(s, 'ValuesReceived')
ans =
6

Kích next
Thu dọn
--------
Nếu bạn kết thúc làm việc với đối tượng nối tiếp, ngắt kết nối nó với thiết bị, xóa nó khỏi bộ nhớ, và xóa nó từ không gian làm việc.
>> fclose(s);
>> delete(s);
>> clear s
Về Đầu Trang Go down
 
Kết nối với COM sử dụng Matlab
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
..:: DẦU KHÍ FAMILY - HUMG ::.. :: KIẾN THỨC, HỌC TẬP, KINH NGHIỆM :: Bài viết chuyên ngành-
Chuyển đến 
Free forum | © phpBB | Free forum support | Report an abuse | Create a free blog