Trong môi trường Windows việc truyền thông trực tiếp qua cổng RS232 được thực hịên qua một ActiveX có sẵn là Microsoft Comm Control. ActiveX này được lưu trữ trong file MSCOMM32.OCX. Để sử dụng Microsoft Comm Control chỉ cần bổ sung ActiveX này vào Basic Project thông qua menu Project > Components như các ActiveX đơn thuần khác. Sau đây là một số thuộc tính của đối tượng Microsoft Comm Control được sử dụng trong chương trình đọc và phân tích tín hiệu nhận được thông qua máy thu GPS.
Thuộc tính Mô tả
CommPort Số thứ tự cổng truyền thông Input Nhận kí tự từ bộ đệm Output Xuất kí tự qua cổng nối tiếp PortOpen Đóng / Mở cổng tuyền thông Settings Xác định các tham số truyền thông
Settings:
Xác định các tham số cho cổng nối tiếp. Cú pháp:
MSComm1.Settings = ParamString
MSComm1: tên đối tượng
BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là:
110 2400 38400
300 9600 (mặc định) 56000
600 14400 188000
1200 19200 256000
P: kiểm tra chẵn lẻ, với các giá trị: Giá trị Mô tả
O Odd (kiểm tra lẻ) E Even (kiểm tra chẵn)
M Mark (luôn bằng 1)
S Space (luôn bằng 0)
N Non (không kiểm tra)
D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bit.
S: số bit stop (1, 1.5, 2). Ví dụ MSComm1.Settings = "9600, O, 8, 1" sẽ xác định tốc độ truyền 9600bps, kiểm tra parity lẻ với 1 bit stop và 8 bit dữ liệu.
CommPort:
Xác định số thứ tự của cổng truyền thông. Cú pháp:
MSComm1.CommPort = PortNumber
PortNumber là giá trị nằm trong khoảng từ 1 tới 99, mặc định là 1.
Thí dụ MSComm1.CommPort = 1 xác định mở dữ liệu cổng COM1
PortOpen: Ðặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp. Nếu dùng thuộc tính này để mở cổng nối tiếp thì phải sử dụng trước hai thuộc tính Settings và CommPort. Cú pháp MSComm1.PortOpen = True | False. Giá trị xác định true để mở cổng và false để đóng cổng đồng thời xoá toàn bộ nội dung trong bộ đệm truyền và nhận. Thí dụ Mở cổng COM1 với tốc độ truyền 9600 bps
MSComm1.Settings = "9600, N, 8, 1" MSComm1.CommPort = 1
MSComm1.PortOpen = True
Các thuộc tính nhận dữ liệu:
Input: Nhận một chuỗi ký tự từ bộ đệm nhận và xoá khỏi bộ đệm nhận. Cú pháp: InputString = MSComm1.Input . Thuộc tính này kết hợp với InputLen xác định số ký tự đọc vào. Nếu InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm.
InBufferCount: Số ký tự có trong bộ đệm nhận. Cú pháp: Count = MSComm1.InBufferCount . Thuộc tính này cũng được dùng để xoá bỏ bộ đệm nhận bằng cách gán giá trị 0. MSComm1.InBufferCount = 0
InBufferSize: Đặt và xác định kích thước bộ đệm nhận (tính bằng byte). Cú pháp: MSComm1.InBufferCount = NumByte . Giá trị mặc định là 1024 byte. Kích thước bộ đệm này phải đủ lớn để tránh tình trạng mất dữ liệu. Thí dụ Ðọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệu
MSComm1.InputLen = 0
If MSComm1.InBufferCount <> 0 Then InputString = MSComm1.Input
End If
Các thuộc tính xuất dữ liệu:
Bao gồm các thuộc tính Output, OutBufferCount và OutBufferSize, chức năng của các thuộc tính này giống như các thuộc tính nhập.
CDTimeout: Ðặt và xác định khoảng thời gian lâu nhất (tính bằng ms) từ lúc phát hiện sóng mang cho tới lúc có dữ liệu. Nếu quá khoảng thời gian này mà vẫn chưa có dữ liệu thì sẽ gán thuộc tính CommEvent là CDTO (Carrier Detect Timeout Error) và tạo sự kiện OnComm.Cú pháp: MSComm1.CDTimeout = NumTime DSRTimeout: Xác định thời gian chờ tín hiệu DSR trước khi xảy ra sự kiện OnComm.
CTSTimeout: Ðặt và xác định khoảng thời gian lớn nhất (tính bằng ms) đợi tín hiệu CTS trước khi đặt thuộc tính CommEvent là CTSTO và tạo sự kiện OnComm. Cú pháp: MSComm1.CTSTimeout = NumTime
DSRTimeout: Xác định thời gian chờ tín hiệu DSR trước khi xảy ra sự kiện OnComm.
CTSTimeout: Ðặt và xác định khoảng thời gian lớn nhất (tính bằng ms) đợi tín hiệu CTS trước khi đặt thuộc tính CommEvent là CTSTO và tạo sự kiện OnComm. Cú pháp: MSComm1.CTSTimeout = NumTime
CTSHolding: Xác định đã có tín hiệu CTS hay chưa, tín hiệu này dùng cho quá trình bắt tay bằng phần cứng (cho biết DCE sẵn sàng nhận dữ liệu) trả về giá trị True hay False.
DSRHolding: Xác định trạng thái DSR (báo hiệu sự tồn tại của DCE), trả về giá trị True hay False.
DTREnable: Ðặt hay xoá tín hiệu DTR để báo sự tồn tại của DTE. Cú pháp: MSComm1.DTREnable = True | False
RTSEnable: Ðặt hay xoá tín hiệu RTS yêu cầu truyền dữ liệu đến DTE. Cú pháp: MSComm1.RTSEnable = True | False
NullDiscard: Cho phép nhận các ký tự NULL (rỗng) hay không (= True: cấm). Cú pháp: MSComm1.NullDiscard = True | False
SThreshold: Số byte trong bộ đệm truyền làm phát sinh sự kiện OnComm. Nếu giá trị này bằng 0 thì sẽ không tạo sự kiện OnComm. Cú pháp: MSComm1.SThreshold = NumChar
HandShaking: Chọn giao thức bắt tay khi thực hiện truyền dữ liệu. Cú pháp: MSComm1.HandShaking = Protocol . Các giao thức truyền bao gồm:
Giao thức Giá trị Mô tả
ComNone 0 Không bắt tay (mặc định)
ComXon/Xoff 1 Bắt tay phần mềm
ComRTS 2 Bắt tay phần cứng
ComRTSXon/Xoff 3 Bắt tay phần cứng và phần mềm
CommEvent: Trả về các lỗi truyền thông, các sự kiện xảy ra tại cổng nối tiếp
Lỗi Giá trị Mô tả
ComBreak 1001 Nhận tín hiệu Break ComCTSTO 1002 Carrier Detect Timeout
ComFrame 1004 Lỗi khung
ComOver 1006 Phần cứng không đọc ký tự trước khi gửi ComCDTO 1007 Carrier Detect Timeout
ComRxOver 1008 Tràn bộ đệm nhận ComRxParity 1009 Lỗi parity
3.3 Phân tích và thiết kế chƣơng trình
3.3.1 Biểu đồ phân cấp chức năng
Cấu trúc chương trình gồm 5 khối chức năng cơ bản :
1. Khối hiển thị bản đồ : với chức năng hiển thị bản đồ số theo các yêu cầu khác nhau.
2. Khối cập nhật bản đồ: có chức năng cập nhật dữ liệu không gian và phi không gian.
3. Khối tìm kiếm và hiển thị: có chức năng tìm kiếm và hiển thị thông tin các đối tượng trên bản đồ số.
4. Khối các tiện ích bản đồ : với chức năng cung cấp cho người dùng những tiện ích khi thao tác với bản đồ số.
5. Khối phân quyền : với chức năng phân quyền hạn của người sử dụng chương trình.
Hình 3.3 Biểu đồ phân rã chức năng hệ thống
Trong chế độ phân quyền người dùng được phân thành ba cấp khác nhau. Người dùng cấp I, mặc định là administrator, là người dùng duy nhất có khả năng thêm hoặc xoá một người dùng cấp II. Thông tin về người dùng cấp I, II sẽ được lưu trữ trong kho dữ liệu người dùng và được lấy ra so sánh khi người dùng đăng nhập hệ thống. Để bảo đảm an toàn dữ liệu các thông tin này trước khi được lưu trữ
Hệ Thống thông tin Hiển thị bản đồ Cập nhật bản đồ Tìm kiếm và hiển thị Các tiện ích bản đồ Mở bản đồ Phóng to, thu nhỏ Di chuyển bản đồ Hiện bản đồ theo layer Cập nhật thông tin đối tương
Thêm đối tượng mới
Xoá bỏ đối tượng
Tìm đối tượng theo yêu cầu
Hiển thị thông tin đối tượng
Di chuyển nhanh Đo khoảng cách Đánh dấu toạ độ Phân quyền Thêm người dùng cấp II Xoá người dùng cấp II Thay đổi password Phân tích tín hiệu GPS
trong CSDL người dùng đã được mã hoá bằng hàm băm RSA tự xây dựng. Người dùng cấp I, II có thể thực hiện cả 5 khối chức năng của chương trình. Người dùng cấp III là người dùng không cần đăng nhập hệ thống khi sử dụng chương trình và chỉ có thể sử dụng ba khối chức năng cơ bản : khối chức năng hiển thị bản đồ, khối chức năng tìm kiếm và hiển thị, khối chức năng tiện ích bản đồ.
3.3.2 Biểu đồ luồng dữ liệu 3.3.2.1 Biểu đồ mức ngữ cảnh 3.3.2.1 Biểu đồ mức ngữ cảnh
Hình 3.4 Biểu đồ ngữ cảnh hệ thống
1. Yêu cầu tạo, xoá ngưòi dùng cấp II. Để thực hiện được yêu cầu này, người dùng phải đăng nhập hệ thống với quyền hạn của người dùng cấp I (Quản trị hệ thống).
2. Yêu cầu cập nhật thông tin bản đồ. Đây là yêu cầu cập nhật các thông tin cho hệ thống như thông tin thuộc tính các đối tượng trên bản đồ, thêm các đối tượng bản đồ mới, thay đổi các thuộc tính của các đối tượng bản đồ.
3. Yêu cầu tìm kiếm, hiển thị thông tin và thực hiện các tiện ích bản đồ. Đây là các yêu cầu có thể được thực hiện từ mọi quyền hạn người dùng. Tìm kiếm đối tượng, hiển thị các thông tin đối tượng, thực hiên các chức năng tiện ích bản đồ như phóng to thu nhỏ hoặc di chuyển.
4. Thực hịên tạo, xoá người dùng cấp II.
5. Thực hiện yêu cầu cập nhật thông tin bản đồ.
6. Thực hiện các yêu cầu tìm kiếm, hiển thị thông tin và các tiện ích bản đồ.
Ngƣời dùng cấp II Ngƣời dùng cấp I Ngƣời dùng cấp III 0 Hệ thống thông tin địa lý biển (1) (3) (5) (4) (6) (6) (2)) (3) (3) (6) (5) (2)
3.2.2 Biểu đồ mức đỉnh
Hình 3.5 Biểu đồ ngữ cảnh hệ thống
1. Các yêu cầu hiển thị bản đồ từ người sử dụng.
2. Các kết quả trả về từ chương trình tương ứng với các yêu cầu hiển thị của người dùng.
3. Các yêu cầu cập nhật bản đồ từ người sử dụng cấp Ivà II
4. Các kết quả trả về từ chương trình tương ứng với các yêu cầu cập nhật của người sử dụng.
5. Các yêu cầu tìm kiếm đối tượng và hiển thị thông tin về đối tượng của người sử dụng.
6. Đối tượng được tìm thấy hoặc thông tin về đối tượng được hiển thị theo các yêu cầu của người sử dụng.
7. Các yêu cầu sử dụng các tiện ích bản đồ từ người sử dụng.
8. Các kết quả trả về từ chương trình tương ứng với các yêu cầu cập nhật của người sử dụng.
9. Các yêu cầu cập nhật thông tin người sử dụng từ người dùng cấp I, II
10.Các kết quả trả về từ chương trình tương ứng với các yêu cầu cập nhật của người sử dụng.
3.3.2.3 Biểu đồ mức dưới đỉnh
3.3.2.3.1 Khối hiển thị bản đồ
Hình 3.6 Biểu đồ ngữ cảnh hệ thống
1. Yêu cầu mở bản đồ từ người sử dụng, có thể đó là yêu cầu mở bản đồ VBB tỷ lệ 1:1.000.000 hoặc bản đồ biển Hải Phòng với tỷ lệ 1:100.000.
2. Kết quả trả về là bản đồ được mở theo yêu cầu của người dùng
3. Yêu cầu thực hiện các tiện ích bản đồ như phóng to, thu nhỏ theo các thông số yêu cầu của người dùng.
4. Bản đồ được phóng to, thu nhỏ theo yêu cầu của người sử dụng.
5. Yêu cầu di chuyển bản đồ nhằm hiển thị phần bản đồ bị che khuất của người dùng.
6. Bản đồ được di chuyển để hiển thị vùng bị che khuất theo yêu cầu.
7. Yêu cầu hiện toàn bản đồ ở mức độ phân tầng. Có thể hiển thị bản đồ với một số tầng cần thiết nhằm tối giản hóa dữ liệu hiển thị vẫn đáp ứng được nhu cầu sử dụng của người dùng.
8. Bản đồ hiển thị theo các tầng yêu cầu.
9. Quá trình kiểm tra kho CSDL bản đồ xem dữ liệu bản đồ hiện có có thể thực hiện được các yêu cầu của người dùng không.
10.Quá trình lấy các dữ liệu cần thiết cho quá trình xử lý.
Hình 3.7 Biểu đồ ngữ cảnh hệ thống
1. Yêu cầu cập nhật thông tin thuộc tính cho các đối tượng. 2. Quá trình cập nhật CSDL thuộc tính theo yêu cầu.
3. Quá trình lấy CSDL thuộc tính phù hợp với yêu cầu. 4. Kết quả trả về là thông tin thuộc tính được cập nhật. 5. Yêu cầu thêm đối tượng đồ hoạ trên bản đồ số. 6. Cập nhật CSDL đồ hoạ theo yêu cầu.
7. Quá trình lấy các đối tượng đồ hoạ từ CSDL phù hợp với yêu cầu. 8. Kết quả trả về là đối tượng mới được thêm trên bản đồ số.
9. Yêu cầu xoá đối tượng đồ hoạ trên bản đồ số.
10.Kết quả trả về là đối tượng được chọn bị xoá trên bản đồ số.
11.Kiểm tra trong CSDL thuộc tính xem có tồn tại dữ liệu thuộc tính về đối tượng muốn xoá, nếu có xoá dữ liệu về đối tượng đó trước khi xoá trong CSDL đồ hoạ.
3.3.2.3.3 Khối tìm kiếm và hiển thị
Kho DL bản đồ (10) (2) (1) (7) (8) (7) (8) (9) (5) (6) Kho DL thuộc tính Người dùng cấpI, II (2.1) Cập nhật thông tin đối tượng (2.3) Xoá đối tượng (2.2) Thêm đối tượng mới (3) (4) (11)
Hình 3.8 Biểu đồ ngữ cảnh hệ thống
1. Yêu cầu tìm kiếm đối tượng (nhóm đối tượng) của người dùng. 2. Kết quả chương trình trả về gồm vị trí, thông tin của đối tượng.
3. Quá trình kiểm tra trong CSDL thuộc tính để xác định ID của đối tượng cần tìm (nhóm đối tượng cần tìm).
4. Kết quả trả về là ID của các đối tượng cần tìm.
5. Từ ID nhận được kiểm tra trong CSDL bản đồ để xác định đối tượng. 6. Đối tượng tìm kiếm sẽ được hiển thị trên nền bản đồ số.
7. Yêu cầu hiển thị thông tin của một đối tượng trên nền bản đồ. 8. Kết quả chương trình trả về là thông tin của đối tượng.
9. Quá trình kiểm tra trong CSDL bản đồ để xác định ID của đối tượng cần hiển thị thông tin (nhóm đối tượng cần tìm).
10.Kết quả trả về là ID của các đối tượng cần hiển thị.
11.Kiểm tra trong CSDL thuộc tính theo ID để xác định thông tin đối tượng. 12.Các thông tin của đối tượng sẽ được chương trình lấy ra hiển thị.
3.3.2.3.4 Khối các tiện ích bản đồ Ngƣời dùng Ngƣời dùng (3.1) Tìm đối tượng (3.2) Hiển thị đối tượng
Kho DLthuộc tính Kho DL bản đồ
(1) (2) (3) (4) (7) (8) (10) (9) (6) (5) (11) (12)
Hình 3.9 Biểu đồ ngữ cảnh hệ thống
1. Yêu cầu di chuyển nhanh bản đồ tới vị trí đã xác định nhằm hiển thị các vùng bị che khuất của bản đồ nằm ngoài màn hình.
2. Kết quả trả về của chương trình là bản đồ đã được di chuyển nhanh tới vị trí yêu cầu.
3. Yêu cầu đo khoảng cách từ hai điểm bất kì trên bản đồ của người dùng. 4. Kết quả của quá trình đo được hiển thị.
5. Yêu cầu đánh dấu các toạ độ bất kì của người dùng. 6. Đối tượng đánh dấu sẽ được thêm vào bản đồ.
7. Quá trình kiểm tra kho dữ liệu bản đồ để lấy các dữ liệu cần thiết cho quá trình xử lý.
8. Dữ liệu được lấy ra phù hợp với các yêu cầu sử dụng.
9. Yêu cầu đọc tín hiệu từ máy thu GPS và hiển thị các thông tin liên quan như tọa độ, lịch trình, vận tốc đối tượng lên bản đồ số.
10.Tín hiệu nhận được từ máy thu GPS qua cổng RS 232.
11.Tín hiệu sau khi được phân tích và hiển thị toạ độ tương ứng lên bản đồ số.
3.3.2.3.3 Khối phân quyền
Ngƣời dùng Kho DL bản đồ 4.1 4.2 4.3 4.4 Máy thu GPS Di chuyển nhanh Đo khoảng cách Đánh dấu điểm Nhận tín hiệu GPS (8) (1) (3) (5) (9) (10) (7) (7) (7) (7) (2) (4) (6) (11) (8) (8) (8)
Hình 3.10 Biểu đồ ngữ cảnh hệ thống
1. Yêu cầu thêm người dùng cấp II từ người dùng cấp I (Người dùng có quyền quản trị hệ thống).
2. Người dùng cấp II được thêm theo yêu cầu của người dùng cấp I.
3. Quá trình cập nhật dữ liệu người dùng theo các yêu cầu. Các thao tác cập nhật dữ liệu người dùng có thể kể đến như thay đổi quyền hạn người dùng… 4. Quá trình lấy các dữ liệu người dùng phù hợp với yêu cầu.
5. Yêu cầu xoá người dùng cấp II từ người dùng cấp I (Người dùng có quyền quản trị hệ thống)
6. Người dùng cấp II bị xoá theo yêu cầu của người dùng cấp I. 7. Yêu cầu thay đổi Password từ người dùng.
8. Password được thay đổi trong CSDL người dùng.
3.3.3 Cơ sở dữ liệu thuộc tính
CSDL thuộc tính gồm các bảng dữ liệu lưu trữ thông tin thuộc tính của các đối tượng đồ hoạ tương ứng, cấu trúc của các bảng như sau :
Dữ liệu ngƣời dùng (5.1) Thêm người dùngcấp2 (5.3) Thay đổi Password (5.2) Xoá người dùngcấp2 Người dùng cấp I Người dùng cấp II Người dùng cấp I Ngƣời dùng cấp II (1) (2) (4) (3) (5) (6) (8) (7) (8) (7) (4)