quynhanh05 / Lop-11A09-Nhom-02

0 stars 0 forks source link

So sánh hàm Serial.print() và Serial.write() #17

Open quynhanh05 opened 2 years ago

quynhanh05 commented 2 years ago

Phân công: @thaoly27 @ngvy65

quynhanh05 commented 2 years ago

Tối nay tụi mình bàn nhaa

thaoly27 commented 2 years ago

hello ạaa

thaoly27 commented 2 years ago

chào mng

thaoly27 commented 2 years ago

em chào thầy Hiền đẹp trai

ngvy65 commented 2 years ago

con chào thầy dthg

ngvy65 commented 2 years ago

t nghĩ Serial.write là hơn xuống trái đất, nó đơn giản và nhanh chóng, nó được thực hiện để nói chuyện nhị phân, một byte mỗi lần. thí dụ:

Serial.write(0x45); // will write 0100 0101 to the cable Mặt khác, serial.print linh hoạt hơn, nó sẽ thực hiện chuyển đổi cho bạn từ ASCII sang nhị phân, nó cũng có thể chuyển đổi sang BIN / HEX / OCT / DEC nhưng bạn cần chỉ định một đối số thứ hai như vậy

Serial.print(76, BIN) gives "0100 1100" Serial.print(76, OCT) gives "114" Serial.print("L", DEC) gives "76" Serial.print(76, HEX) gives "4C"

thaoly27 commented 2 years ago

Serial.print(): Hàm này sẽ biến đổi dữ liệu của bạn sang chuỗi trước khi gửi, ví dụ, nếu bạn muốn gửi số 123 đi thì nó sẽ chuyển thành chuỗi “123” rồi mới bắt đầu gửi. Serial.write(): Hàm này sẽ gửi chính xác dữ liệu đi (tức là dữ liệu thô, chưa biến đổi qua mã ASCII).

ngvy65 commented 2 years ago

Serial.write(); Cú pháp:

  1. Serial.write(val);
  2. Serial.write(str);
  3. Serial.write(buf, len);

Tham số: val: byte cần gửi. str: mảng cần gửi kiểu c_str – (không phải kiểu String). buf: mảng cần gửi (không phải kiểu String). len: chiều dài mảng cần gửi.

Trả về: int – số lượng byte đã gửi đi.

Hàm này sẽ gửi chính xác dữ liệu đi (tức là dữ liệu thô, chưa biến đổi qua mã ASCII). Cú pháp thứ 3 được dùng khi dữ liệu cần truyền không phải là c_str (mảng không có null ở cuối), khi đó ta phải đưa vào len để biết số lượng ký tự muốn truyền; cú pháp này cũng có thể được dùng để giới hạn dữ liệu cần gửi, vì dữ liệu gửi bây giờ không phụ thuộc vào chiều dài chuỗi mà nó chỉ phụ thuộc vào len đưa vào mà thôi.

Việc truyền dữ liệu thô, không được biến đổi qua mã ASCII sẽ làm việc nhận dữ liệu trở nên rắc rối ở khía cạnh trực quan. Cách truyền này chỉ nên được dùng để phần cứng giao tiếp ở mức độ phần cứng.

ngvy65 commented 2 years ago

Serial.print(): Cú pháp:

  1. Serial.print(val);
  2. Serial.print(val, format);

Tham số: val: ký tự cần gửi. format: định dạng của ký tự.

Trả về: long – số lượng byte đã gửi đi.

Hàm này sẽ biến đổi dữ liệu của bạn sang chuỗi trước khi gửi, ví dụ, nếu bạn muốn gửi số 123 đi thì nó sẽ chuyển thành chuỗi “123” rồi mới bắt đầu gửi. Việc gửi như thế này sẽ trực quan hơn, người dùng sẽ thấy được các giá trị một cách rõ ràng. Ở cú pháp thứ 2 format là kiểu định dạng số muốn gửi (có thể là nhị phân, thập phân, thập lục phân…).

Arduino hổ trợ các kiểu định dạng sau: BIN, HEX, DEC, OCT; lần lượt là nhị phân, thập lục phân, thập phân (mặc định), bát phân.

thaoly27 commented 2 years ago

CHỐT ĐÁP ÁN

  1. Serial.print(): Hàm này sẽ biến đổi dữ liệu của bạn sang chuỗi trước khi gửi, ví dụ, nếu bạn muốn gửi số 123 đi thì nó sẽ chuyển thành chuỗi “123” rồi mới bắt đầu gửi. Serial.write(): Hàm này sẽ gửi chính xác dữ liệu đi (tức là dữ liệu thô, chưa biến đổi qua mã ASCII).
  2. Tham số: Serial.print(): 2 tham số (val, format) Serial.write(): 4 tham số (val, str, buf. len)
  3. Trả về: Serial.print(): long - số lượng byte đã gửi đi Serial.write(): int - số lượng byte đã gửi đi
quynhanh05 commented 2 years ago

Okeee nha~ quá tuyệt dời luôn