Giới thiệu các hàm API và hàm visual c++ quan trọng sử dụng trong việc lập trình truyền thông nối tiếp

17 502 0
Giới thiệu các hàm API và hàm visual c++ quan trọng sử dụng trong việc lập trình truyền thông nối tiếp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

GIỚI HIỆU CÁC HÀM API VÀ HÀM VISUAL C++ QUAN TRỌNG SỬ DỤNG TRONG VIỆC LẬP TRÌNH TRUYỀN THÔNG NỐI TIẾP Hàm CreateFile(): Chức năng: Tạo mở hay cắt bớt tập tin, cổng COM, thiết bị, dịch vụ, hay bàn điều khiển Một handle trả để truy cập đối tượng HANDLE CreateFile( LPCTSTR lpFileName, //tên file DWORD dwDesiredAccess, //phương thức truy cập DWORD dwShareMode, //chế độ chia sẻ LPSECURITY_ATTRIBUTES lpSecurityAttributes, //thuộc tính bảo mật DWORD dwCreationDispostion, //sự kiện xảy tạo file DWORD dwFlagsAndAttributes, //cờ thuộc tính file HANDLE hTemplateFile ); Các tham số lpFileName [vào] Chuỗi khác rỗng chứa tên đối tượng, file, cổng COM, thiết bị đĩa, bàn điều khiển, để tạo hay mở Khi lpFileName đến cổng cần mở, bạn phải thêm dấu ‘:’ dằng sau tên Thí dụ định COM1: để mở cổng COM1 Khi sử dụng IrCOMM, định COM3: dwDesiredAccess [vào] Phương thức truy cập đối tượng Một ứng dụng thực truy cập đọc (read-only), ghi (write-only), đọc/ghi, hay truy vấn thiết bị Bảng sau mô tả giá trị dwDesiredAccess Giá trị Mô tả Xác định truy vấn đối tượng Một ứng dụng thực truy vấn thuộc tính đối tượng mà không truy cập vào thiết bị GENERIC_READ Chỉ định phương thức cho phép đọc lên đối tượng Dữ liệu đọc trỏ file di chuyển đối tượng Kết hợp với GENERIC_WRITE để truy cập dạng đọc/ghi GENERIC_WRITE Chỉ định phương thức cho phép ghi lên đối tượng Dữ liệu ghi trỏ file di chuyển đối tượng Kết hợp với GENERIC_READ để truy cập dạng đọc/ghi dwShareMode [vào] Chế độ chia sẻ cho đối tượng Nếu dwShareMode = 0, đối tượng chia sẻ Các thao tác bên đối tượng sẻ không thành công handle đóng Tham số có nhiều giá trị khác Bảng sau sẻ cho thấy giá trị thích hợp dwShareMode Giá trị Mô tả FILE_SHARE_READ Thao tác đối tượng thành công thực đọc file FILE_SHARE_WRITE Thao tác đối tượng thành công ghi file lpSecurityAttributes [vào] Luôn = NULL dwCreationDispostion [vào] Sự kiện xảy file tồn tại, không tồn Bảng sau mô tả gía trị khả dụng cho dwCreationDispostion Giá trị Mô tả CREATE_NEW Tạo file Hàm không thành công file tồn CREATE_ALWAYS Tạo file Nếu file tồn ghi đè OPEN_EXISTING Mở file Hàm không thành công file không tồn Phải sử dụng cờ mở thiết bị hàm createfile() bao gồm console OPEN_ALWAYS Mở file tồn Nếu không, tạo file trường hợp cờ dwCreationDisposition đặt CREATE_NEW TRUNCATE_EXISTING Mở file Mở lần, file bị cắt bớt nên kích thước bytes Phải định truy cập GENERIC_WRITE loại cờ Hàm thất bại file không tồn dwFlagsAndAttributes [in] Thuộc tính cờ cho file Mọi kết hợp thuộc tính có file chấp nhận tham số dwFlagsAndAttributes Tất thuộc tính khác chứa thuộc tính FILE_ATTRIBUTE_NORMAL bảng sau mô tả thuộc tính dwFlagsAndAttributes Value Description FILE_ATTRIBUTE_ARCHIVE Xác định file lưu trữ Ứng dụng dùng thuộc tính để đánh dấu file trường hợp lưu hay loại bỏ FILE_ATTRIBUTE_HIDDEN Xác định file bị ẩn Nó danh sách thư mục thông thường FILE_ATTRIBUTE_NORMAL Xác định file tập thuộc tính khác Thuộc tính sử dụng FILE_ATTRIBUTE_READONLY Xác định file đọc FILE_ATTRIBUTE_SYSTEM Xác định file phần hay dành riêng cho hệ điều hành (OS) FILE_ATTRIBUTE_TEMPORARY Không hỗ trợ Mọi kết hợp cờ cho phép chấp nhận tham số dwFlagsAndAttributes Bảng sau cho thấy giá trị cờ cho phép dwFlagsAndAttributes Giá trị Mô tả FILE_FLAG_WRITE_THROUGH Chỉ định hệ thống cache ghi liệu lên đĩa Hệ thống đệm trình ghi, chậm trễ việc đẩy FILE_FLAG_OVERLAPPED Cờ không hỗ trợ; phép đa xử lý đọc/ghi lúc lên thiết bị phép FILE_FLAG_RANDOM_ACCES Chỉ định file truy cập ngẫu nhiên Hệ thống S dựa vào điều để tối ưu việc lưu đệm file hTemplateFile [vào] Được bỏ qua; Giá trị trả Một handle trỏ đến file vừa mở Nếu file tồn trước gọi hàm cờ dwCreationDisposition CREATE_ALWAYS hay OPEN_ALWAYS, Một lời gọi hàm GetLastError trả ERROR_ALREADY_EXISTS, hàm mở file thành công Nếu file tồn trước gọi hàm, GetLastError trả INVALID_HANDLE_VALUE có lỗi Để lấy thông tin chi tiết lỗi, gọi hàm GetLastError Chú ý Sử dụng hàm CloseHandle để đóng kênh truy cập đối tượng trả từ hàm CreateFile Xác định giá trị cho dwDesiredAccess cho phép ứng dụng dò tìm thuộc tính đối tượng mà chí không truy cập vào thiết bị Kiểu truy cập có ích, Thí dụ ứng dụng muốn biết kích thước ổ đĩa định dạng mà ổ đĩa hỗ trợ mà đĩa ổ đĩa Danh sách sau cho thấy thao tác hàm CreateFile loại file, tài nguyên thông tin, thiết bị, bàn điều khiển: • Các file Khi tạo hay cắt bớt file tồn tại, hàm CreateFile thực hành động sau: • Kết hợp thuộc tính cờ xác định dwFlagsAndAttributes với thuộc tính FILE_ATTRIBUTE_ARCHIVE • Đặt chiều dài file • CreateFile xử dụng để truy cập file MODULES nhớ ROM Các Module lưu trữ nhiều định dạng khác mà ứng dụng truy cập File ROM truy cập dùng hàm CreateFile file đoạn FILES Khi mở file tồn tại, hàm CreateFile bỏ qua thuộc tính xác định dwFlagsAndAttributes xác định chiều dài file dược vào giá trị dwCreationDisposition Sử dụng cờ FILE_FLAG_RANDOM_ACCESS file lưu RAM, đặt file vùng lưu trữ đối tượng, không cho phép nén file Nếu đề cao thực thi, giải pháp Thao tác đọc ghi file nén chậm so với file không nén Cổng COM • Hàm CreateFile có thê tạo handle đến cổng COM Bằng cách đặt tham số dwCreationDisposition OPEN_EXISTING, phương thức truy cập đọc, ghi, hay đọc/ghi phép Hàm SetupComm() Xác lập thông số truyền thông cho thiết bị BOOL SetupComm( HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue ); Các tham số hFile [vào] Handle trỏ đến thiết bị truyền thông Hàm CreateFile trả handle dwInQueue [vào] Xác định kích thước đệm vào thiết bị, tính byte dwOutQueue [vào] Xác định kích thước đệm thiết bị, tính byte Các giá trị trả Khác không thành công ngược lại thất bại Dùng hàm GetlastError để lấy chi tiết mã lỗi Ghi Sau tiến trình CreateFile thực trả handle đến tài nguyên thông tin gọi hàm SetupComm để xác lập thông số cho thiết bị Nếu không xác lập thông số thiết bị sử dụng tham số mặc định xảy việc gọi hàm để mở tài nguyên thông tin khác Tham số dwInQueue dwOutQueue xác định kích thước (byte) yêu cầu cho đệm bên thiết bị dùng trình điều khiển thiết bị Thí dụ giáo thức YMODEM gói có kích thước lớn 1024 byte Kích thước đệm yêu cầu cho tài nguyên YMODEM 1200 byte Thiết bị nhận liệu theo kích thước buffer, lại tự sử dụng mô hình đệm Hàm PurgeComm Hàm xóa tất kí tự đệm vào đệm tài nguyên thông tin Nó dừng việc đọc ghi tài nguyên BOOL PurgeComm( HANDLE hFile, DWORD dwFlags ); Các tham số hFile [vào] Handle trỏ đến tài nguyên thông tin dwFlags [in] Xác định hành động thực Theo mô tả bảng sau: Giá trị Mô tả PURGE_TXABORT Hủy bỏ tất trình ghi thời trình ghi chưa hoàn tất PURGE_RXABORT Hủy bỏ tất trình đọc thời trình đọc chưa hoàn tất PURGE_TXCLEAR Xóa đệm ra, thiết bị có đệm PURGE_RXCLEAR Xóa đệm vào thiết bị có đệm vào Giá trị trả Khác không thành công Bằng không thất bại Chi tiết lỗi trả hàm GetLastError Ghi Nếu tiểu trình sử dụng PurgeComm để chùi đệm ra, kí tự bị xóa không truyền Để chùi đệm mà đảm bảo liệu truyền gọi hàm FlushFileBuffers (một phương thức để đồng hóa) Chú ý rằng, đôi khi, hàm FlushFileBuffers đựoc đưa để điều khiển luồng không ghi time-outs, không trả trình ghi kết thúc Cấu trúc DCB (Device Control Block - Khối điều khiển thiết bị) Cấu trúc DCB định nghĩa thiết lập điều khiển cho thiết bị truyền thông nối tiếp typedef struct _DCB { DWORD DCBlength; // kích thước DCB DWORD BaudRate; // tốc độ truyền DWORD fBinary: 1; // chế độ nhị phân, không kiểm tra EOF DWORD fParity: 1; // cho phép kiểm tra chẵn lẽ DWORD fOutxCtsFlow:1; // điều khiển luồng CTS (Clear To Send) DWORD fOutxDsrFlow:1; // điều khiển luồng DSR (Data Set Ready) DWORD fDtrControl:2; // kiểu điều khiển luồng DTR (Data Terminal Ready) DWORD fDsrSensitivity:1; // độ nhạy DSR DWORD fTXContinueOnXoff:1; // XOFF tiếp tục Tx DWORD fOutX: 1; // điều khiển luồng XON/XOFF DWORD fInX: 1; // điều khiển luồng vào XON/XOFF DWORD fErrorChar: 1; // cho phép thay lỗi DWORD fNull: 1; // cho phép cắt bớt phần NULL DWORD fRtsControl:2; // điều khiển luồng RTS (Ready To Send) DWORD fAbortOnError:1; // bỏ qua lỗi DWORD fDummy2:17; // dành riêng WORD wReserved; // trạng thái không sử dụng WORD XonLim; // ngưỡng truyền XON WORD XoffLim; // ngưỡng truyền XOFF BYTE ByteSize; // số lượng bit/byte, 4-8 BYTE Parity; // 0-4=no,odd,even,mark,space BYTE StopBits; // 0,1,2 = 1, 1.5, char XonChar; // kí tự XON Tx Rx char XoffChar; // kí tự XOFF Tx Rx char ErrorChar; // kí tự thay lỗi char EofChar; // kí tự kết thúc char EvtChar; // kí tự trạng thái nhận WORD wReserved1; // dành riêng, không sử dụng } DCB; Các thành phần DCBlength Xác định chiều dài (byte) khối cấu trúc DCB BaudRate Xác định tốc độ baud mà thiết bị hoạt động Thành phần giá trị tại, giá trị sau: CBR_110 //110 bits per second CBR_19200 CBR_300 CBR_38400 CBR_600 CBR_56000 CBR_1200 CBR_57600 CBR_2400 CBR_115200 CBR_4800 CBR_128000 CBR_9600 CBR_256000 CBR_14400 fBinary Chỉ định chế độ nhị phân Các hàm Window32 API không hỗ trợ chế độ nhị phân, giá trị phải TRUE fParity Chỉ định xem có cho phép kiểm tra chẵn lẻ không Nếu TRUE, thực kiểm tra chẵn lẽ với báo cáo lỗi có fOutxCtsFlow Xác định xem tín hiệu CTS (clear-to-send) có giám sát cho điều khiển luồng hay không Nếu TRUE CTS tắt, đầu dừng CTS gửi lại lần fOutxDsrFlow Xác định xem tín hiệu DSR (Data-Send-Ready) có giám sát cho điều khiển luồng hay không Nếu TRUE DSR tắt, đầu dừng DSR gửi lại lần fDtrControl Xác định điều khiển luồng DTR (data-terminal-ready) Thành phần giá trị sau Giá trị Ý nghĩa DTR_CONTROL_DISABLE Vô hiệu hóa DTR DTR_CONTROL_ENABLE Cho phép DTR DTR_CONTROL_HANDSHAKE Cho phép DTR dạng ‘bắt tay’ handshake phép, Nếu ứng dụng tăng dòng hàm EscapeCommFunction gây lỗi fDsrSensitivity Xác định xem trình điều khiển truyền thông sẵn sàng trạng thái đón nhận tín hiệu DSRl Nếu gí trị TRUE trình điều khiển bỏ qua tất byte liệu nhận trừ đường vào DSR modem trạng thái cao fTXContinueOnXoff Xác định việc truyền có dừng lại đệm vào đầy trình điều khiển thiết bị truyền kí tự XoffChar Nếu mang giá trị TRUE, việc truyền tiếp tục sau đệm vào đạt đến giá trị XoffLim xác định đầy trình điều khiển thiết bị truyền kí tự XoffChar để dừng việc nhận byte Nếu mang giá trị FALSE, việc truyền không tiếp tục đệm vào phạm vi XonLim rỗng trình điều khiển thiết bị truyền kí tự XonChar để tiếp tục nhận fOutX Xác định xem điều khiển luồng XON/XOFF có sử dụng suốt trình truyền Nếu mang gía trị TRUE, việc truyền dừng nhận kí tự XoffChar bắt đầu lại nhận kí tự XonChar fInX Xác định xem điều khiển luồng XON/XOFF sử dụng suốt trình nhận Nếu TRUE, kí tự XoffChar gửi đệm vào khoảng XoffLim đầy, kí tự XonChar gửi đệm vào XonLim rỗng fErrorChar Xác định xem byte nhận có lỗi chẵn lẽ thay kí tự thuộc ErrorChar Nếu TRUE fParity TRUE, việc thay xảy fNull Xác định em có bỏ qua byte rổng không Nếu TRUE, thực bỏ qua fRtsControl Xác định điều khiển luồng RTS (request-to-send) Có thể có giá trị sau: Giá trị Ý nghĩa RTS_CONTROL_DISABLE Vô hiệu hóa dòng RTS RTS_CONTROL_ENABLE Cho phép dòng RTS RTS_CONTROL_HANDSHAKE Cho phép chế độ bắt tay RTS Trình điều RTS_CONTROL_TOGGLE khiển thiết bị nâng dòng RTS đệm (vào) "type-ahead" bé so với đầy hạ dòng RTS đệm lớn ¾ so với đầy Nếu chế độ bẳt tay cho phép, gây lỗi cho ứng dụng thực tăng dòng sử dụng hàm EscapeCommFunction Xác định dòng RTSsẽ trạng thái cao byte sẵn sàng để truyền Sau tất byte đệm gửi, dòng RTS trở trạng thái thấp fAbortOnError Xác định xem trình đọc ghi có bị dừng lại xảy lỗi hay không Nếu TRUE, trình điều khiển thiết bị bỏ qua tất thao tác đọc ghi với trạng thái lỗi Trình điều khiển thiết bị không thực thao tác đọc ghi ứng dụng xác nhận lỗi cách gọi hàm ClearCommError fDummy2 Dành riêng, không sử dụng wReserved Không sử dụng, mang giá trị XonLim Xác định số lượng tối thiểu byte đệm vào trước kích hoạt điều khiển luồng để ngăn chặn đầu gửi Chú ý đầu gửi truyền kí tự sau tín hiệu điều khiển luồng kích hoạt, giá trị phải khác Điều xem điều khiển luồng XON/XOFF, RTS, hay DTR xác định fInX, fRtsControl, hay fDtrControl XoffLim Xác định số lượng tối đa byte phép đệm vào trước điều khiển luồng kích hoạt phép truyền đầu gửi Xem điều khiển luồng vào XON/XOFF, RTS, hay DTR xác định fInX, fRtsControl, hay fDtrControl Số lượng tối đa byte cho phép tính cách trừ giá trị với kích thước (byte) đệm vào ByteSize Xác định số bit/byte đầu nhận gửi Parity Xác định mô hình chắn lẽ dùng Có giá trị sau: Giá trị Ý nghĩa EVENPARITY MARKPARITY NOPARITY ODDPARITY SPACEPARITY Ngang Đánh dấu Không có Lẽ Khoảng trắng StopBits Xác định số lượng bit dừng sử dụng Có thể có giá trị sau Giá trị Ý nghĩa ONESTOPBIT bit dừng ONE5STOPBITS 1.5 bit dừng TWOSTOPBITS bit dừng XonChar Xác định kí tự XON cho truyền nhận XoffChar Xác định kí tự XOFF cho truyền nhận ErrorChar Xác định kí tự thay trường hợp lỗi chẵ lẽ EofChar Xác định kí tự kết thúc EvtChar Xác định kí tự tín hiệu wReserved1 Không dùng Ghi Khi khối câu trúc DCB sử dụng để cấu hình 8250, giá trị sau định thiết lập thành phần ByteSize StopBits: Số lượng databit phải đến bit Sử dụng bit liệu với bit dừng kết hợp sai, giống 6, 7, hay bit liệu với 1.5 bit dừng • • Hàm GetCommState Hàm nhận thiết lập thời thiết bị thông tin BOOL GetCommState( HANDLE hFile, // trỏ đến thiết bị thông tin LPDCB lpDCB // khối điều khiển thiết bị ); Các tham số hFile [vào] Trỏ đến thiết bị thông tin Hàm CreateFile trả trỏ lpDCB [ra] Trỏ đến cấu trúc DCB nhận thông tin thiết lập Các giá trị trả Giá trị trả khác không thành công ngược lại trả 0, dùng hàm GetLastError để biết chi tiết lỗi Hàm SetCommState Hàm SetCommState cấu hình thiết bị thông tin dựa thông tin có khối DCB Hàm thiết lập tất giá trị phần cứng điều khiển không xóa liệu đệm BOOL SetCommState( HANDLE hFile, // trỏ đến thiết bị thông tin LPDCB lpDCB // khối thông tin điều khiển ); Các tham số hFile [vào] trỏ đến thiết bị thông tin Hàm CreateFile trả trỏ lpDCB [vào] Trỏ đến khối DCB chứa thông tin cấu hình thiết bị Các giá trị trả Hàm thành công giá trị trả khác Hàm thất bại giá trị trả 0, dùng hàm GetLastError để lấy chi tiết lỗi Ghi Hàm SetCommState sử dụng khối DCB để xác định cấu hình muốn Hàm GetCommState Trả thiết lập Để thiết lập vài tham số khối cấu trúc DCB, bạn nên hiệu chỉnh khối DCB điền cách gọi GetCommState Điều bảo đảm cấu trúc DCB có giá trị phù hợp Hàm SetCommState thất bại thành phần XonChar cấu trúc DCB thành phần XoffChar Khi hàm SetCommState sử dụng để cấu hình 8250, ràng buộc áu áp đặt cho thành phần ByteSize StopBits DCB: Số lượng bit liệu phải từ đến Cấu trúc COMSTAT Cấu trúc COMSTAT chứa thông tin thiết bị truyền thông cấu trúc điền hàm ClearCommError typedef struct _COMSTAT { DWORD fCtsHold : 1; DWORD fDsrHold : 1; DWORD fRlsdHold : 1; DWORD fXoffHold : 1; DWORD fXoffSent : 1; DWORD fEof : 1; DWORD fTxim : 1; DWORD fReserved : 25; DWORD cbInQue; DWORD cbOutQue; } COMSTAT, *LPCOMSTAT; Các thành phần fCtsHold Xác định xem việc truyền có phải chờ tín hiệu CTS (clear-to-send) Nếu TRUE việc truyền phải chờ fDsrHold Xác định xem việc truyền có phải chờ tín hiệu DSR (data-set-ready) để gửi hay không Nếu TRUE, chờ fRlsdHold Xác định xe viêc truyền có phải chờ tín hiệu RLSD (receive-line-signaldetect) để gửi hay không Nếu TRUE, chờ fXoffHold Xác định xem việc truyền phải chờ nhận kí tự XOFF hay không Nếu TRUE, chờ fXoffSent Xác định xem trình truyền đợi kí tự XOFF gửi hay không Nếu TRUE, đợi Treo trình truyền kí tự XOFF truyền đến hệ thống mà hệ thống nhận kí tự XON mà không quan tâm đến kí tự fEof Xác định xem kí tự end-of-file (EOF) vừa nhận hay không Nếu TRUE, kí tự EOF vừa nhận fTxim Nếu TRUE, có kí tự xếp hàng để truyền mà kí tự gửi đến thiết bị cách sử dụng hàm TransmitCommChar Thiết bị thông tin truyền liên tục kí tự đệm thiết bị fReserved Không sử dụng cbInQue Xác định số lượng byte nhận từ đầu gửi nối tiếpnhưng chưa đọc thao tác ReadFile cbOutQue Xác định số lượng byte liệu người dùng lại cần truyền thao tác ghi Giá trị cho việc ghi không phủ chồng Hàm ReadFile Hàm ReadFile đọc liệu từ file, bắt đầu vị trí xác định trỏ file Sau trình đọc hoàn tất, trỏ file tăng lên số số byte vừa đọc được, ngoại trừ trường hợp trỏ file tạo với thuộc tính phủ chồng (overlap) Nếu trỏ file tạo cho việc vào phủ chồng (I/O), Ứng dụng phải tự thực tăng trỏ file sau phép đọc file Hàm thiết kế cho thao tác đồng không đồng Hàm ReadFileEx thiết kế cho thao tác không đồng Nó cho phép ứng dụng thực phép xử lí khác suốt trình đọc file BOOL ReadFile( HANDLE hFile, // trỏ đến file LPVOID lpBuffer, // đệm liệu DWORD nNumberOfBytesToRead, // số lượng byte để đọc LPDWORD lpNumberOfBytesRead, // số lượng byte đọc LPOVERLAPPED lpOverlapped // đệm phủ lắp ); Các tham số hFile [vào] Trỏ đến file cần đọc Con trỏ file phải tạo với truy cập GENERIC_READ lpBuffer [ra] Trỏ đến đệm nhận liệu đọc từ file nNumberOfBytesToRead [vào] Xác định số byte cần đọc lpNumberOfBytesRead [ra] Trỏ đến biến nhận giá trị số byte đọc Hàm ReadFile đặt giá trị trước thực thao tác hay kiểm lỗi Nếu tham số hàm ReadFile trả TRUE ống đặt tên, đầu lại ống thông điệp gọi hàm WriteFile với nNumberOfBytesToWrite đặt lpOverlapped [vào] Trỏ đến cấu trúc phủ chồng OVERLAPPED Cấu trúc yêu cầu hFile tạo với cờ FILE_FLAG_OVERLAPPED Nếu hFile mở với cờ FILE_FLAG_OVERLAPPED, tham số lpOverlapped phải khác NULL Nó phải trỏ đến cấu trúc OVERLAPPED phù hợp Nếu hFile tạo với cờ FILE_FLAG_OVERLAPPED lpOverlapped NULL, hàm báo cáo sai thao tác đọc hoàn tất Nếu hFile mở với cờ FILE_FLAG_OVERLAPPED lpOverlapped khác NULL, thao tác đọc bắt đầu offset xác định cấu trúc OVERLAPPED ReadFile trả trước thao tác đọc file hoàn tất Trong trường hợp này, ReadFile trả FALSE hàm GetLastError trả lỗi ERROR_IO_PENDING Điều cho phép tiếp tục thực tiến trình thao tác đọc hoàn tất Sự kiện xác định cấu trúc OVERLAPPED đặt cho tín hiệu trạng thái trước việc đọc hoàn tất Nếu hFile không mở với FILE_FLAG_OVERLAPPED lpOverlapped NULL, thao tác đọc bắt đầu vị trí file ReadFile không trả việc đọc hoàn tất Giá trị trả Hàm thành công giá trị trả khác Hàm thất bại giá trị trả 0, dùng hàm GetLastError để lấy chi tiết lỗi Hàm WriteFile Hàm WriteFile ghi liệu vào file, bắt đầu vị trí xác định trỏ file Sau trình ghi hoàn tất, trỏ file tăng lên số số byte vừa ghi được, ngoại trừ trường hợp trỏ file tạo với thuộc tính phủ chồng (overlap) Nếu trỏ file tạo cho việc vào phủ chồng, Ứng dụng phải tự thực tăng trỏ file sau phép ghi file Hàm thiết kế cho thao tác đồng không đồng Hàm WriteFileEx thiết kế cho thao tác không đồng Nó cho phép ứng dụng thực phép xử lí khác suốt trình ghi file BOOL WriteFile( HANDLE hFile, // handle to file LPCVOID lpBuffer, // data buffer DWORD nNumberOfBytesToWrite, // number of bytes to write LPDWORD lpNumberOfBytesWritten, // number of bytes written LPOVERLAPPED lpOverlapped // overlapped buffer ); Các tham số hFile [vào] Trỏ đến file cần ghi Con trỏ file phải tạo với phương thức truy cập GENERIC_WRITE lpBuffer [vào] Trỏ đến đệm chứa liệu cần ghi vào file nNumberOfBytesToWrite [vào] Xác định số lượng byte cần ghi Giá trị xác định không ghi Thực thao tác ghi rỗng phụ thuộc vào hệ thống file Để cát bớt hay mở rộng fie, xử dụng hàm SetEndOfFile lpNumberOfBytesWritten [ra] Trỏ đến biến nhận giá tri số byte ghi hàm WriteFile đặt giá trị trước làm việc hay kiểm lỗi lpOverlapped [vào] Trỏ đến cấu trúc OVERLAPPED Yêu cầu cấu trúc hFile mở với cờ FILE_FLAG_OVERLAPPED Nếu hFile mở với cờ FILE_FLAG_OVERLAPPED, tham số lpOverlapped phải khác NULL Nó phải trỏ đến cấu trúc OVERLAPPED phù hợp Nếu hFile mở với cờ FILE_FLAG_OVERLAPPED lpOverlapped NULL, hàm báo cáo sai công việc ghi file hoàn tất Nếu hFile mở với cờ FILE_FLAG_OVERLAPPED lpOverlapped khác NULL, thao tác ghi bắt đầu offset xác định cấu trúc OVERLAPPED WriteFile trả trước thao tác ghi file hoàn tất Trong trường hợp này, WriteFile trả FALSE hàm GetLastError trả lỗi ERROR_IO_PENDING Điều cho phép tiếp tục thực tiến trình thao tác ghi hoàn tất Sự kiện xác định cấu trúc OVERLAPPED đặt cho tín hiệu trạng thái trước việc ghi hoàn tất Nếu hFile không mở với FILE_FLAG_OVERLAPPED lpOverlapped NULL, thao tác ghi bắt đầu vị trí file WriteFile không trả việc ghi hoàn tất Giá trị trả Hàm thành công giá trị trả khác Hàm thất bại giá trị trả 0, dùng hàm GetLastError để lấy chi tiết lỗi [...]... bị bằng cách sử dụng hàm TransmitCommChar Thiết bị thông tin truyền liên tục các kí tự trong bộ đệm ra của thiết bị fReserved Không sử dụng cbInQue Xác định số lượng các byte được nhận từ đầu gửi nối tiếpnhưng chưa được đọc bởi thao tác ReadFile cbOutQue Xác định số lượng byte dữ liệu người dùng còn lại cần truyền bằng thao tác ghi Giá trị này bằng 0 cho việc ghi không phủ chồng 8 Hàm ReadFile Hàm ReadFile... bị ); Các tham số hFile [vào] Trỏ đến thiết bị thông tin Hàm CreateFile trả về con trỏ này lpDCB [ra] Trỏ đến cấu trúc DCB nhận về thông tin thiết lập Các giá trị trả về Giá trị trả về khác không nếu thành công ngược lại trả về 0, dùng hàm GetLastError để biết chi tiết lỗi 6 Hàm SetCommState Hàm SetCommState cấu hình thiết bị thông tin dựa trên thông tin có trong khối DCB Hàm thiết lập tất cả các giá... giá trị phần cứng và điều khiển nhưng không xóa dữ liệu trong bộ đệm BOOL SetCommState( HANDLE hFile, // trỏ đến thiết bị thông tin LPDCB lpDCB // khối thông tin điều khiển ); Các tham số hFile [vào] trỏ đến thiết bị thông tin Hàm CreateFile trả về con trỏ này lpDCB [vào] Trỏ đến khối DCB chứa thông tin cấu hình thiết bị Các giá trị trả về Hàm thành công nếu giá trị trả về khác 0 Hàm thất bại nếu giá... được sử dụng để cấu hình 8250, các giá trị sau được chỉ định thiết lập thành phần ByteSize và StopBits: Số lượng databit phải là 5 đến 8 bit Sử dụng 5 bit dữ liệu với 2 bit dừng là một sự kết hợp sai, cũng giống như 6, 7, hay 8 bit dữ liệu với 1.5 bit dừng • • 5 Hàm GetCommState Hàm nhận về thiết lập hiện thời của thiết bị thông tin hiện tại BOOL GetCommState( HANDLE hFile, // trỏ đến thiết bị thông. .. bại nếu giá trị trả về bằng 0, dùng hàm GetLastError để lấy chi tiết lỗi Ghi chú Hàm SetCommState sử dụng khối DCB để xác định cấu hình mình muốn Hàm GetCommState Trả về thiết lập hiện tại Để thiết lập một vài tham số của khối cấu trúc DCB, bạn nên hiệu chỉnh khối DCB đã được điền bằng cách gọi GetCommState Điều này bảo đảm rằng cấu trúc DCB có các giá trị phù hợp Hàm SetCommState thất bại nếu thành... *LPCOMSTAT; Các thành phần fCtsHold Xác định xem việc truyền có phải chờ tín hiệu CTS (clear-to-send) Nếu TRUE việc truyền phải chờ fDsrHold Xác định xem việc truyền có phải chờ tín hiệu DSR (data-set-ready) để được gửi hay không Nếu TRUE, đang chờ fRlsdHold Xác định xe viêc truyền có phải chờ tín hiệu RLSD (receive-line-signaldetect) để được gửi hay không Nếu TRUE, đang chờ fXoffHold Xác định xem việc truyền. .. bằng Đánh dấu Không có Lẽ Khoảng trắng StopBits Xác định số lượng các bit dừng được sử dụng Có thể có các giá trị sau Giá trị Ý nghĩa ONESTOPBIT 1 bit dừng ONE5STOPBITS 1.5 bit dừng TWOSTOPBITS 2 bit dừng XonChar Xác định kí tự XON cho cả truyền và nhận XoffChar Xác định kí tự XOFF cho cả truyền và nhận ErrorChar Xác định kí tự thay thế trong trường hợp lỗi chẵ lẽ EofChar Xác định kí tự kết thúc EvtChar... FILE_FLAG_OVERLAPPED và lpOverlapped bằng NULL, hàm có thể báo cáo sai rằng thao tác đọc đã hoàn tất Nếu hFile được mở với cờ FILE_FLAG_OVERLAPPED và lpOverlapped khác NULL, thao tác đọc bắt đầu tại offset được xác định trong cấu trúc OVERLAPPED và ReadFile có thể trả về trước khi thao tác đọc file hoàn tất Trong trường hợp này, ReadFile trả về FALSE và hàm GetLastError trả về lỗi ERROR_IO_PENDING Điều này cho phép tiếp. .. hiện tiến trình trong khi thao tác đọc hoàn tất Sự kiện được xác định trong cấu trúc OVERLAPPED được đặt cho tín hiệu trạng thái trước khi việc đọc hoàn tất Nếu hFile không được mở với FILE_FLAG_OVERLAPPED và lpOverlapped là NULL, thao tác đọc bắt đầu tại vị trí hiện tại của file và ReadFile không trả về cho đến khi việc đọc hoàn tất Giá trị trả về Hàm thành công nếu giá trị trả về khác 0 Hàm thất bại... lpOverlapped là NULL, hàm có thể báo cáo sai rằng công việc ghi file đã hoàn tất Nếu hFile được mở với cờ FILE_FLAG_OVERLAPPED và lpOverlapped khác NULL, thao tác ghi bắt đầu tại offset được xác định trong cấu trúc OVERLAPPED và WriteFile có thể trả về trước khi thao tác ghi file hoàn tất Trong trường hợp này, WriteFile trả về FALSE và hàm GetLastError trả về lỗi ERROR_IO_PENDING Điều này cho phép tiếp tục thực ... tiến trình CreateFile thực trả handle đến tài nguyên thông tin gọi hàm SetupComm để xác lập thông số cho thiết bị Nếu không xác lập thông số thiết bị sử dụng tham số mặc định xảy việc gọi hàm. .. lại tự sử dụng mô hình đệm Hàm PurgeComm Hàm xóa tất kí tự đệm vào đệm tài nguyên thông tin Nó dừng việc đọc ghi tài nguyên BOOL PurgeComm( HANDLE hFile, DWORD dwFlags ); Các tham số hFile [vào]... trừ đường vào DSR modem trạng thái cao fTXContinueOnXoff Xác định việc truyền có dừng lại đệm vào đầy trình điều khiển thiết bị truyền kí tự XoffChar Nếu mang giá trị TRUE, việc truyền tiếp tục

Ngày đăng: 03/01/2016, 19:12

Từ khóa liên quan

Mục lục

  • Các tham số

  • Giá trị trả về

  • Chú ý

  • Các tham số

  • Các giá trị trả về

  • Ghi chú

  • Các tham số

  • Giá trị trả về

  • Ghi chú

  • Các thành phần

  • Ghi chú

  • Các tham số

  • Các giá trị trả về

  • Các tham số

  • Các giá trị trả về

  • Ghi chú

  • Các thành phần

  • Các tham số

  • Giá trị trả về

  • Các tham số

Tài liệu cùng người dùng

Tài liệu liên quan