Các thuộc tính

Một phần của tài liệu công nghệ SMS và xây dựng hệ thống tra cứu điểm qua mạng điện thoại di động (Trang 142 - 147)

Mặc dù MSComm có rất nhiều thuộc tính, tuy nhiên có một số thuộc tính quan trọng sau:

CommPort (Integer)

Mỗi một cổng nối tiếp có một số hiệu riêng được đại diện bằng một con số. Thuộc tính này sẽ thiết lập hoặc trả về số hiệu của cổng.

Bạn có thể thiết lập số hiệu của cổng giữa 1 và 16 vào lúc thiết kế (giá trị mặc định là 1). Tuy nhiên MSComm sẽ sinh lỗi 68 (thiết bị không sẵn có) nếu cổng không tồn tại khi bạn thử mở nó với thuộc tính PortOpen.

Một chú ý quan trọng là bạn phải thiết lập thuộc tính CommPort trước khi mở cổng.

Ví dụ: serialPort.CommPort = 4. Sẽ thiết lập số hiệu cổng là COM4.

Settings (string)

Thiết lập hoặc trả về các tham số như: tốc độ truyền dữ liệu, độ ưu tiên, số bit dữ liệu và bit dừng.

Nếu giá trị của thuộc tính này không hợp lệ khi cổng được mở, MSComm sẽ sinh lỗi 380 (giá trị thuộc tính không hợp lệ).

Chuỗi sẽ gán cho Settings (hoặc được trả về bởi Settings) có dạng như

• BBBB là tốc độ truyền dữ liệu (đo bằng baud). Các giá trị hợp lệ là: 110, 300,600, 1200, 2400, 9600, 14400, 19200, 28800,38400, 56000,128000,256000.

• P là độ ưu tiên. Các giá trị hợp lệ là: E (Even), M (Mark), N (None), O (Odd), S (Space).

• D là số bit dữ liệu. Các giá trị hợp lệ là: 4, 5, 6, 7, 8. • S là con số của bit dừng. Các giá trị hợp lệ là: 1, 1.5, 2. Giá trị mặc định của thuộc tính này là: “9600,N,8,1”

Ví dụ: serialPort.Settings = “19200,N,8,1”. Sẽ thiết lập cổng ở tốc độ 1920 byte/s.

PortOpen (Boolean)

Thiết lập hoặc trả về tình trạng của cổng (mở hoặc đóng). Thuộc tính này không sẵn có khi thiết kế, chỉ có thể sử dụng lúc thời gian chạy.

Thiết lập thuộc tính PortOpen thành True sẽ mở cổng. Ngược lại thiết lập nó thành False sẽ đóng cổng và xóa toàn bộ bộ đệm gửi và nhận. MSComm tự động đóng cổng khi ứng dụng kết thúc.

Cần chắc chắn thuộc tính CommPort được thiết lập đến một cổng sẵn có

trước khi mở cổng. Nếu không sẽ sinh lỗi 68 (thiết bị không sẵn có).

Ngoài ra, thiết bị gắn với cổng nối tiếp phải hỗ trợ các giá trị trong thuộc tính Settings. Nếu thuộc tính Settings chứa các tùy chọn mà phần cứng không hỗ trợ, phần cứng có thể không làm việc đúng.

Nếu thuộc tính DTREnable hoặc RTSEnable được thiết lập bằng True trước khi cổng được mở, thì các thuộc tính này sẽ được thiết lập thành False khi cổng được đóng.

Ví dụ: serialPort.PortOpen = true. Sẽ mở cổng.

Input (string)

Trả về và loại bỏ một dòng dữ liệu từ bộ đệm nhận. Thuộc tính này không sẵn có lúc thiết kế và là thuộc tính chỉ đọc lúc thời gian chạy.

Thuộc tính InputLen xác định số ký tự sẽ được đọc bởi thuộc tính Input. Nếu thiết lập InputLen thành 0 thì Input sẽ đọc toàn bộ nội dung của bộ đệm nhận.

Thuộc tính InputMode xác định kiểu dữ liệu được nhận với thuộc tính

Input. Nếu InputMode được thiết lập thành comInputModeText thì Input

sẽ trả về dữ liệu văn bản trong một Variant. Nếu InputMode là comInputModeBinary thì Input sẽ trả về dữ liệu nhị phân trong một mảng của các byte trong một Variant.

Ví dụ: string str = serialPort.Input. Sẽ xóa các ký tự trong bộ đệm nhận và trả về cho chuỗi str.

Output (string)

Gửi một dòng dữ liệu đến bộ đệm gửi. Thuộc tính này không sẵn có lúc thiết kế và là thuộc tính chỉ ghi lúc thời gian chạy.

Thuộc tính Output có thể truyền dữ liệu văn bản hoặc dữ liệu nhị phân.

Để gửi dữ liệu văn bản dùng thuộc tính Output bạn phải chỉ rõ một

Variant chứa đựng một chuỗi. Để gửi dữ liệu nhị phân bạn phải gán một Variant đó chứa đựng một mảng byte đến thuộc tính Output.

Thông thường, nếu gửi một chuỗi ANSI đến một ứng dụng, bạn có thể gửi nó như dữ liệu văn bản. Nếu bạn có dữ liệu đó chứa các ký tự điều khiển nhúng, ký tự Null, … thì bạn phải gửi nó như dữ liệu nhị phân.

Ví dụ: serialPort.Output = “AT<CR>”. Sẽ xuất chuỗi vào bộ đệm gửi và kết quả phản hồi sẽ được chứa trong bộ đệm nhận.

InputLen (Integer)

Thiết lập hoặc trả về số ký tự mà thuộc tính Input sẽ đọc từ bộ đệm nhận. Giá trị mặc định cho thuộc tính này là 0 có nghĩa là MSComm sẽ đọc toàn bộ nội dung trong bộ đệm nhận khi Input được dùng.

Thuộc tính này chỉ hữu ích khi đọc dữ liệu từ một máy đó xuất ra kết quả ở dạng các khối có chiều dài cố định.

Ví dụ: serialPort.InputLen = 255. Sẽ thiết lập số ký tự mỗi lần đọc là 255 ký tự.

InBufferSize (Integer)

Thiết lập hoặc trả về kích cỡ của bộ đệm nhận trong byte. Giá trị mặc định là 1024 byte. Không nhầm lẫn thuộc tính này với thuộc tính

InBufferCount, thuộc tính InBufferCount tham chiếu đến số ký tự hiện

hành đang đợi trong bộ đệm nhận.

Chú ý rằng nếu như tạo bộ đệm nhận quá lớn thì bộ nhớ dành cho ứng dụng sẽ ít đi. Tuy nhiên nếu bộ đệm nhận lại quá nhỏ, sẽ dẫn đến việc tràn bộ đệm. Cách tốt nhất là bắt đầu với kích cỡ bộ đệm là 1024 byte. Nếu lỗi tràn bộ đệm xuất hiện, tăng kích cỡ bộ đệm lên.

Ví dụ: serialPort.InBufferSize = 2048. Sẽ thiết lập kích cỡ bộ đệm nhận là 2K.

InBufferCount (Integer)

Trả về số ký tự đang chờ trong bộ đệm nhận. Thuộc tính này không sẵn có lúc thiết kế.

Thuộc tính InBufferCount tham chiếu đến số ký tự nhận được bởi modem và đang đợi trong bộ đệm nhận để bạn có thể lấy chúng ra. Có thể xóa bộ đệm bằng cách thiết lập thuộc tính này thành 0.

Ví dụ: serialPort.InBufferCount = 0. Sẽ xoá toàn bộ bộ đệm nhận.

InputMode (Integer)

Thiết lập hoặc trả về kiểu của dữ liệu nhận bởi thuộc tính Input. Các giá trị có thể gán cho thuộc tính này là:

• comInputModeText (ứng với giá trị 0): dữ liệu nhận được ở dạng văn bản.

• comInputModeBinary (ứng với giá trị 1): dữ liệu nhận được ở dạng nhị phân.

Thuộc tính InputMode xác định dữ liệu nhận được sẽ như thế nào thông qua Input. Dữ liệu nhận được hoặc sẽ là chuỗi hoặc sẽ là mảng các byte. Dùng comInputModeText cho dữ liệu đó dùng các ký tự ANSI. Dùng comInputModeBinary cho tất cả dữ liệu khác như: các ký tự điều khiển nhúng, ký tự Unicode, ký tự Null, …

OutBufferCount (Integer)

Trả về số ký tự đợi trong bộ đệm gửi. Bạn có thể dùng nó để xóa toàn bộ bộ đệm gửi. Không nhầm lẫn thuộc tính này với thuộc tính

OutBufferCount, nó tham chiếu đến tổng kích cỡ của bộ đệm gửi.

Ví dụ: serialPort.OutBufferCount = 0. Sẽ xoá toàn bộ bộ đệm gửi.

OutBufferSize (Integer)

Thiết lập hoặc trả về kích cỡ trong byte của bộ đệm gửi. Giá trị mặc định là 512 byte.

Tương tự như bộ đệm nhận, bộ đệm gửi không nên quá lớn hoặc quá nhỏ. Nên bắt đầu bộ đệm với 512 byte, nếu lỗi xuất hiện tăng bộ đệm lên.

Ví dụ: serialPort.OutBufferSize = 1024. Sẽ thiết lập kích cỡ bộ đệm gửi là 1K.

CommEvent (Integer)

Trả về giá trị lỗi hoặc giá trị sự kiện hiện hành. Thuộc tính này không sẵn có lúc thiết kế và là thuộc tính chỉ đọc khi thời gian chạy. Mặc dù sự kiện

OnComm được gọi bất cứ khi nào một lỗi hoặc một sự kiện xảy ra, tuy

nhiên nó lại không biết lỗi hoặc sự kiện xảy ra là gì. Thuộc tính

CommEvent giữ mã lỗi hoặc mã sự kiện. Để xác định chính xác lỗi hoặc

sự kiện nào sinh ra OnComm, bạn phải kiểm tra giá trị của thuộc tính này. • Các mã lỗi có thể là: comEventBreak (1001), comEventFrame

(1004), comEventOverrun (1006), comEventRxOver (1008), comEventRxParity (1009), comEventTxFull (1010), comEventDCB (1011).

• Các mã sự kiện có thể là: comEvSend (1), comEvReceive (2), comEvCTS (3), comEvDSR (4), comEvCD (5), comEvRing (6), comEvEOF (7).

Một phần của tài liệu công nghệ SMS và xây dựng hệ thống tra cứu điểm qua mạng điện thoại di động (Trang 142 - 147)

Tải bản đầy đủ (PDF)

(154 trang)