![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Hỏi về cách ép kiểu trong VC++(Hiển thị trong giao tiếp RS232)
Trong một TUT của anh Ngo Hai Bac có nói về phần ép kiểu trong VC++. Nội dung như sau:
Chuyển từ kiểu CString ‐> VARIANT: tôi dùng lớp ColeVariant ( các bạn có thể tra trong MSDN dùng tab Index) là dạng đóng gói của kiểu cấu trúc VARIANT, lớp này có hàm khởi tạo COleVariant( CString& strSrc ); và do đó nó có thể làm tham số cho hàm SetInput của MSComm. Vì vậy chúng ta chỉ cần khai báo một biến ColeVariant là xong. CString data_tosend = “Example”; CodeVariant temp(data_tosend); m_mscomm1.SetInput(temp); ‐ Chuyển từ kiểu VARIANT sang kiểu CString. Các bạn xem lại định nghĩa cấu trúc VARIANT ở trên xem có biến nào có kiểu trả về kiểu tương thích với kiểu CString( tức có thể ép kiểu để trở thành kiểu CString). Tôi thấy có thành phần BSTR bstrVal; Do đó ta chỉ việc ép kiểu là xong. VARIANT data; CString m_strData = (CString) data.bstrVal; Cho mình hỏi các hàm ép kiểu dữ liệu khác như thế nào, như chuyển qua ascii hay hexa... Xin cảm ơn! |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Cảm ơn anh Nam, ý của em là khi nhận một dữ liệu rồi hiển thị với nhiều kiểu biểu diễn khác nhau, ascii,hexa,nhị phân ...(với cách hướng dẫn như anh Bắc).
Xin cảm ơn! thay đổi nội dung bởi: saoxathu, 17-02-2009 lúc 06:21 PM. |
![]() |
![]() |
![]() |
#4 | |
Trưởng lão PIC bang
|
Trích:
Tóm lại, để biết có thể ép kiểu hay không, cần biết kiểu dữ liệu ở đầu vào, và kiểu dữ liệu cần có ở đầu ra. Nếu không tương thích thì phải chuyển đổi, còn nếu tương thích thì có thể ép kiểu. Ép kiểu chẳng qua là để trình biên dịch có thể biên dịch đúng, ví dụ, string và array of byte có thể coi là tương thích. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Ý của em đơn giản hơn anh Nam nghĩ nhiều.
Em ví dụ nhé: Em gửi lên máy tính số 32( thập phân), trên giao diện em muốn nó hiển thị kết quả nhật dưới dạng:hexa 0x20,oct 40,Bin 00100000, ascii A ... Em dùng VC++ Cảm ơn anh! |
![]() |
![]() |
![]() |
#6 | |
Trưởng lão PIC bang
|
Trích:
- Hexadecimal: chia số cần hiển thị thành từng cụm 4 bit liên tiếp (từ bit thấp nhất đi ngược lên), rồi giải mã để hiển thị (một cụm số như vậy sẽ là 1 hexa digit), như vậy sẽ có 2 cụm. - Octal: chia số cần hiển thị thành từng cụm 3 bit liên tiếp (từ bit thấp nhất đi ngược lên), rồi giải mã để hiển thị (một cụm số như vậy sẽ là 1 octal digit), như vậy sẽ có 3 cụm (cụm cao nhất chỉ có 2 bit). - Binary: test lần lượt từng bit để hiển thị thành '1' hay '0', như vậy sẽ có 8 lần test cho 8 vị trí bit. - ASCII: sử dụng toàn bộ 8 bit để tra bảng mã ASCII. Không cần ép kiểu ở đây, bạn chỉ muốn hiển thị ở những format khác nhau mà thôi. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#7 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Biến nhận của em khai báo là VARIANT data;vậy chia kiểu gì anh Nam, em nghĩ kiểu gì cũng phải ép kiểu chứ.
|
![]() |
![]() |
![]() |
#8 | |
Trưởng lão PIC bang
|
Trích:
Nếu bạn muốn gửi những giá trị > 256 thập phân, bạn vẫn có thể làm theo cách trên, gửi nhiều byte liên tiếp của giá trị đó, sau đó dùng các phương pháp đã nêu để hiển thị giá trị nhiều byte này ở những format khác nhau. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Cám ơn anh Nam, em sẽ thử, em bị ảnh hưởng bởi cách xử lý của anh Bắc, nên mới định giải quyết theo hướng đó. Nhưng anh Nam xem lại xem, người ta có thường phải viết một hàm chỉ để biểu diễn kiểu đó không nhỉ?
|
![]() |
![]() |
![]() |
#10 | |
Trưởng lão PIC bang
|
Trích:
Nếu bạn muốn nói đến các hàm chuyển đổi format để hiển thị: đúng, cộng đồng thường có một thư viện liên quan đến việc này (với PIC thì có thể tham khảo ở PIClist http://www.piclist.com/techref/micro...adix/index.htm). Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#11 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Làm quen VC++ không lâu nên còn một số thứ rất mơ hồ. Người ta send file như thế nào vậy anh Nam?
Cảm ơn anh! |
![]() |
![]() |
![]() |
#12 |
Đệ tử 1 túi
Tham gia ngày: Sep 2007
Bài gửi: 12
: |
![]() ![]() ![]() |
![]() |
![]() |
![]() |
#13 | |
Trưởng lão PIC bang
|
Trích:
Bạn định gửi file từ đâu đến đâu? Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#14 |
Đệ tử 1 túi
Tham gia ngày: Aug 2007
Bài gửi: 15
: |
Em định gửi một mảng dữ liệu từ vi điều khiển lên, dữ liệu và kết quả tính toán được đóng gói thành file lưu trên máy tính, và theo chiều ngược lại khi cần.
|
![]() |
![]() |
![]() |
#15 | |
Trưởng lão PIC bang
|
Trích:
Có nhiều thuật toán chuyển đổi dữ liệu qua lại giữa binary và ASCII (dành cho máy tính) có thể tìm thấy trên internet bằng google. Việc thao tác trên file văn bản đã được hỗ trợ bởi các hàm thư viện của C++. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|