Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
2,09 MB
Nội dung
1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN HỒNG PHÚC NGHIÊN CỨU HỆ THỐNG BIỂU QUYẾT ĐIỆN TỬ SỐ Nghành: Công nghệ Điện tử- Viễn Thông Chuyên nghành: Kỹ thuật Điện tử Mã số: 60.52.70 LUẬN VĂN THẠC SĨ NGƢỜI HƢỚNG DẪN KHOA HỌC PGS.TS Trần Quang Vinh Hà Nội- 2009 MỤC LỤC LỜI CÁM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG MỞ ĐẦU 10 CHƢƠNG 1:TỔNG QUAN VỀ HỆ THỐNG BIỂU QUYẾT ĐIỆN TỬSỐ (DCN) 11 1.2 Giới thiệu tổng quan hệ thống biểu điện tử số DCN 12 1.2.1 Thiết bị phân tập 13 1.2.2 Thiết bị điều khiển trung tâm CCU 13 1.3 Định tuyến hệ thống âm hệ DCN 14 1.4 Nguyên lý hoạt động hệ thống biểu số 15 1.4.1 Sơ đồ nguyên lý hoạt động hệ thống biểu điện tử số 15 1.4.2 Cấu trúc Bộ điều khiển trung tâm CCU 15 1.4.3 Nguyên lý hoạt động hệ thống biểu điện tử số DCN 16 1.5 Các phần mềm ứng dụng điều khiển hệ thống biểu điện tử số DCN: 17 CHƢƠNG 2: CẤU HÌNH HỆ THỐNG BIỂU QUYẾT ĐIỆN TỬ SỐ DCN 18 2.1 Cấu hình hệ thống biểu số DCN 18 2.1.2 Hệ thống biểu điện tử số DCN Multi- CCU 18 2.2 Thông số cổng CCU kết nối với PC kết nối với camera 20 2.3 Thông số kỹ thuật cổng nối tiếp RS 232 21 2.3.1 Truyền thông hai nút 25 2.3.2 Truy xuất trực tiếp thông qua cổng COM 26 CHƢƠNG 3:GIAO DIỆN ĐIỂU KHIỂN TỪ XA ĐẾN HỆ THỐNG DCN 27 3.1 Mơ hình hệ thống điều khiển từ xa 27 3.2 Các thông số điều khiển từ xa 27 3.2.1 Kiểu thông báo định dạng 27 3.2.2 Kiểu định dạng thông báo 28 3.2.3 Định dạng yêu cầu điều khiển từ xa 28 3.2.4 Định dạng đáp ứng điều khiển từ xa 29 3.2.5 Định dạng thông báo cập nhật MDSC_NOTIFY 29 3.2.6 Định dạng thông số truyền thông 30 3.3 Thủ tục truyền thông điều khiển trung tâm 30 3.3.1 Đặc tính giao thức truyền thơng Full 31 3.3.2 Tham số nhận biết thông tin 33 3.3.3 Giao thức truyền thông 34 3.3.3.1 Gói liệu không trả lời 35 3.3.3.2 Giá trị thời gian kết nối đƣờng truyền 36 CHƢƠNG 4: XÂY DỰNG PHẦN MỀM BIỂU QUYẾT 37 4.1 Chức đăng ký đại biểu 37 4.1.1 Đăng ký tham dự 37 4.1.2 Điều khiển truy cập hệ thống 37 4.1.4 Kết hợp đăng ký tham dự với truy cập hệ thống 38 4.1.5 Thông số chức 38 4.2 Điều khiển microphone hệ thống biểu điện tử số 38 4.2.1 Các bƣớc đăng ký phát biểu 38 4.2.2 Chƣơng trình kiểm sốt danh sách đại biểu 39 4.3 Biểu điện tử 41 4.3.1 Các kiểu loại biểu điện tử số 41 4.3.2 Các bƣớc thực biểu điện tử số 41 4.3.3 Xây dựng chƣơng trình hiển thị kết biểu 43 4.4 Kết ghép nối máy tính với điều khiển trung tâm 51 KẾT LUẬN 55 TÀI LIỆU THAM KHẢO 56 PHỤ LỤC 57 DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT TỪ VIẾT TẮT NỘI DUNG Ý NGHĨA ACN Audio Communication Network Mạng truyền âm AT Attendance Registration Đăng ký điểm danh CCU Central Control Unit Bộ điều khiển trung tâm DCN Digital Congress Network Mạng hội nghị số EIA Electronics Industry Associations Hiệp hội điện tử công nghiệp Mỹ LCD Liquid Crystal Display Màn tinh thể lỏng PA Public Address Hệ thống công cộng PC Personal Computer Máy vi tính PRAEDIC Profession Audio Encoding Decoding Intergrated Circuit Vi mạch mã hóa giải mã tín hiệu tiếng chuyên dụng remote controller Device (e.g PC) connected to the CCU Bộ điều khiển từ xa RFS Remote Function Services Gói dịch vụ chức điều khiển từ từ xa SC System Configuration Cấu hình hệ thống SI System Installation Cài đặt hệ thống UnitId Unit identification, also called unit- Thiết bị đƣợc khai báo hệ number thống DCN VT Voting application Ứng dụng biểu identification of a unit within the DCN system DANH MỤC CÁC BẢNG Tên bảng Nội dung Bảng 1.1 Thông số kỹ thuật chuẩn RS232 Bảng 1.2 Chức cổng nối tiếp Bảng 1.3 Các ngắt cổng COM Bảng 1.4 Thông số kết nối đƣờng truyền Bảng 1.5 Sự kiện comevent Bảng 1.6 Bảng kiện Bảng 1.7 Bảng thiết lập giao thức bắt tay DANH MỤC CÁC HÌNH VẼ Hình Tên hình 1.1 Sơ đồ tổng quan hệ thống biểu số 1.2 Sơ đồ định tuyến âm hệ thống biểu số DCN 1.3 Sơ đồ nguyên lý hệ thống biểu điện tử số DCN 1.4 Hình ảnh bên điều khiển trung tâm CCU 1.5 Hình ảnh bên ngoại điều khiển trung tâm CCU 2.1 Kết nối hệ thống DCN độc lập 2.2 Kết nối hệ thống biểu điện tử số Multi CCU 2.3 Tín hiệu truyền ký tự „A‟ 2.4 Sơ đồ chân cổng nối tiếp 2.5 Kết nối đơn giản truyền thông nối tiếp 2.6 Kết nối truyền thơng nối tiếp dùng tín hiệu bắt tay 3.1 Sơ đồ ghép nối với điều khiển từ xa 3.2 Sơ đồ trạng thái truyền thủ tục truyền “ FULL” 4.1 Giao diện phần mềm biểu 4.2 Giao diện Danh sách đăng ký phát biểu 4.3 Giao diện hiển thị kết biểu 4.4 Cơ sở liệu đại biểu 4.5 Cơ sở liệu tỉnh, thành phố 4.6 Toàn cảnh phiên họp Quốc hội 4.7 Hệ thống biểu Hội trƣờng Bộ Quốc phòng 4.8 Giao diện điều khiển Mic biểu 4.9 Tra cứu thông tin đại biểu 4.10 Hiển thị danh sách đăng ký phát biểu 4.11 Kết bắt đầu biểu 4.12 Kết biểu hết thời gian biểu 10 MỞ ĐẦU Ngày nay, lĩnh vực Công nghệ thông tin truyền thông (ICT) đƣợc phát triển mạnh mẽ với công nghệ đại đƣợc đời Nó xâm nhập vào lĩnh vực đời sống xã hội Việc xã hội hố thơng tin phát triển từ phần cứng, phần mềm, hệ thống mạng viễn thông hệ thống dành cho xử lý thông tin, hệ thống truyền thông, hệ thống điều khiển từ xa, v.v…đã góp phần nâng cao chất lƣợng, độ tin cậy, hiệu công việc tiết kiệm mặt thời gian, không gian, địa điểm với khoảng cách xa kết nối điều khiển từ xa Hệ thống biểu điện tử số DCN sử dụng công nghệ kỹ thuật số đại cho việc điều khiển hội nghị với hàng nghìn ngƣời Hệ thống đạt đƣợc hiệu ƣu việt từ điều khiển âm thanh, đăng ký đại biểu, phân quyền ngƣời truy cập, truyền đa ngôn ngữ, biểu điện tử, ghép nối điều khiển từ xa đƣợc tích hợp vào hệ thống Với phƣơng thức biểu truyền thống hình thức giơ tay, bỏ phiếu kín nhiều cơng sức thời gian kiểm phiếu thời gian, dễ sai sót Biểu điện tử số cho kết biểu nhanh chóng, độ tin cậy cao có khả lƣu trữ trạng thái biểu Đề tài Luận văn “Nghiên cứu Hệ thống biểu điện tử số” có nội dung nghiên cứu hệ thống với tính trội, độ tin cậy kỹ thuật, thông số truyền dẫn, ghép nối điều khiển từ xa với trung tâm điều khiển Qua đó, ta phát triển nhiều ứng dụng nhằm khai thác hệ thống tốt nhƣ điều khiển hội nghị từ xa, biểu điện tử từ xa Luận văn gồm chƣơng Chƣơng 1: Tổng quan hệ thống biểu điện tử số DCN Chƣơng 2: Cấu hình hệ thống biểu số DCN Giao tiếp cổng nối tiếp RS232 Chƣơng 3: Nghiên cứu thủ tục truyền thông hệ thống biểu điện tử số DCN Chƣơng 4: Xây dựng phần mềm biểu 11 CHƢƠNG TỔNG QUAN VỀ HỆ THỐNG BIỂU QUYẾT ĐIỆN TỬSỐ (DCN) 1.1 Sơ đồ tổng quan hệ thống biểu điện tử số DCN Hình 1.1: Sơ đồ tổng quan hệ thống biểu số Hệ thống biểu điện tử số sử dụng công nghệ kỹ thuật điện tử viễn thông Hệ thống biểu điện tử DCN bao gồm nhƣ hình 1.1: Trung tâm điều khiển Bộ vi xử lý trung tâm, Bộ xử lý số tín hiệu, Bộ nhớ EPROM,… Quản lý sở liệu đại biểu, Quản lý điều khiển microphone đại biểu: danh sách đăng ký phát biểu, danh sách phát biểu, điều khiển tắt mở microphone, Điều khiển biểu điện tử: khởi tạo thời gian, biểu quyết, huỷ biểu quyết, hiển thị kết biểu quyết, quản lý điểm danh đại biểu v.v… Hệ thống ghép nối âm mở rộng Hệ thống tạo đƣờng âm chất lƣợng cao ghép nối với hệ thống âm ngoài: mixer, khuyếch đại công suất (amplifier), loa Hệ thống phát hồng ngoại 12 Hệ thống phiên dịch hồng ngoại sử dụng sóng hồng ngoại để phát kênh dịch riêng lẻ Ứng với kênh hồng ngoại ngôn ngữ dịch Qua thu hồng ngoại ngƣời nghe lựa chọn ngơn ngữ phù hợp với ngơn ngữ Hệ thống mạng Hệ thống sử dụng để kết nối điều khiển từ xa, chẳng hạn: truyền hình hội nghị, điều khiển từ xa hệ thống biểu điện tử số DCN, mạng máy tính điều khiển, hiển thị thông tin đại biểu, kết biểu quyết, thông báo hội nghị, nhắn tin… 1.2 Giới thiệu tổng quan hệ thống biểu điện tử số DCN: Hệ thống biểu điện tử số DCN cung cấp phƣơng tiện điều khiển linh động, mềm dẻo cho loại hội nghị, từ hội thảo nhỏ đến hội nghị quốc tế, hội nghị đa ngôn ngữ với hàng trăm đại biểu Hệ thống DCN cung cấp dịch vụ từ quản lý điều khiển microphone, nhận dạng đại biểu, đăng ký đại biểu, biểu điện tử, hiển thị thông tin đến thiết bị phân phối, hiển thị mở rộng hệ thống phiên dịch đồng thời điều khiển camera tự động Toàn thiết bị DCN bao gồm: Thiết bị phân bố gồm: microphone đại biểu, microphone chủ toạ… Thiết bị phân bố thực chức nhƣ sau: - Chức biểu điện tử theo trạng thái: điểm danh, biểu quyết, không biểu quyết, không tán thành - Chức đọc thẻ chíp - Chức microphone: đăng ký, hủy đăng ký phát biểu - Chức thông tin hội nghị - Chức chủ tọa hội nghị Thiết bị điểu khiển trung tâm CCU: Bao gồm vi xử lý, xử lý số, nhớ đƣờng bus ACN1, ACN2 Bộ điều khiển trung tâm quản lý, điều khiển microphone, Biểu quyết, truyền thông đến phần mềm điều khiển, điều khiển từ xa… Thiết bị phiên dịch thiết bị phân phối dịch: Thiết bị sử dụng để truyền tải, phân phối ngôn ngữ theo kênh dịch để đại biểu hội nghị lựa chọn ngôn ngữ cho phù hợp với ngôn ngữ Thiết bị hiểu thị thơng tin: Bảng hiển thị kết biểu Hall Display, Màn hiển thị điều khiển, Màn hình lớn: để hiển thị thơng báo, hình ảnh, q trình biểu quyết, kết biểu lên hình 53 Phần mềm biểu điện tử xây dựng ngôn ngữ Visual Basic 6, sở liệu đại biểu xây dựng Access 97 với tính sau: Tra cứu thơng tin Đại biểu Quốc hội: Hình 4.9: Tra cứu thông tin đại biểu 2.Hiển thị Danh sách đăng ký phát biểu: Hình 4.10: Hiển thị danh sách đăng ký phát biểu 54 Hiển thị kết biểu quyết: Hiển thị kết biểu khởi tạo biểu quyết: Hình 4.11: Kết bắt đầu biểu Hiển thị kết biểu sau hết thời gian biểu quyết: Hình 4.12:Kết biểu hết thời gian biểu 55 KẾT LUẬN Bản luận văn sâu nghiên cứu hệ thống biểu điện tử số DCN với nguyên lý hoạt động, định tuyến âm thanh, thông số truyền thông, giao thức truyền điều khiển trung tâm CCU với thiết bị điều khiển từ xa Luận văn nêu tổng quan hệ thống biểu số nêu bật đƣợc đặc tính truy cập hệ thống, loại biểu điện tử, bƣớc thực điều khiển microphone, biểu điện tử số chuẩn ghép nối RS 232C, sâu tìm hiểu trình điểu khiển MS Com ngơn ngữ Visual Basic Đặc biệt, việc xây dựng phần mềm biểu luận văn hiển thị đƣợc kết biểu điện tử hệ thống biểu điện tử số DCN phiên họp Quốc hội, Danh sách đăng ký đại biểu Quốc hội, truy cập thông tin đại biểu Quốc hội Việc thực ghép nối máy tính với hệ thống biểu số qua cổng port điều khiển trung tâm hệ thống biểu số hội trƣờng Bộ Quốc phịng sử dụng trình điều khiển MS Com Visual Basic Trong luận văn xây dựng phần mềm biểu hiển thị đƣợc kết biểu quyết, danh sách đăng ký phát biểu Vì vậy, cần hoàn thiện phần mềm biểu thêm tính sở liệu đại biểu có kèm theo hình ảnh, lƣu trữ chi tiết kết biểu quyết, tìm kiếm đại biểu theo tỉnh, thành phố, tên đại biểu v.v… làm cho phần mềm hoàn thiện Trên sở nghiên cứu nguyên lý hệ thống biểu điện tử số, hƣớng nghiên cứu tiếp đề tài luận văn thiết kế mạch biểu ứng dụng thực tế 56 TÀI LIỆU THAM KHẢO Tiếng Việt Phạm Văn Ất (2008), Hướng dẫn sử dụng Access 2003 - 2007, NXB Giao thông vận tải, Hà Nội Phạm Thị Ngọc Mai (2005), Microsoft Visual Basic 6.0 & lập trình sở liệu, NXB Lao động - Xã hội, Hà Nội Trần Quang Vinh (2008), Cấu trúc máy vi tính, NXB Đại học Quốc gia Hà Nội, Hà Nội Tiếng Anh Bosch Security System (2003), General Remote Interface Description Bosch Security System (2003), AT Remote Interface Description Bosch Security System (2003), VT Remote Interface Description Bosch Security System (2003), MM Remote Interface Description Philips Comunication, Security & Image (2002), Digital Congress Network DCN Instalation & Operating Manual Bosch Security System (2003), SC &SI Remote Interface Description 10 MSDN Library (2001), Visual Tools and Languages/ Visual Studio 6.0 Documentation / Visual Basic Documentation / Reference/ Control Reference / ActiveX Control/ MSComm Control 57 PHỤ LỤC Khai báo biến giá trị theo hệ thống biểu số: Sub InitCommandTable() CmdTable(cmdMicroOn) = "$1" CmdTable(cmdMicroOff) = "$2" CmdTable(cmdAllMicroOff) = "$3" CmdTable(cmdPrioMicroOn) = "$4" CmdTable(cmdPrioMicroOff) = "$5" CmdTable(cmdRemainSpeech) = "$6" CmdTable(cmdRequestOn) = "&1" CmdTable(cmdRequestOff) = "&2" CmdTable(cmdAllRequestOff) = "&3" CmdTable(cmdVoteIndYes) = "#1" CmdTable(cmdVoteIndNo) = "#2" CmdTable(cmdVoteIndAbstain) = "#3" CmdTable(cmdVoteIndNoVoted) = "#4" CmdTable(cmdVoteTotal) = "%1" CmdTable(cmdVoteTotalResYes) = "%2" CmdTable(cmdVoteTotalResNo) = "%3" CmdTable(cmdVoteTotalResAbstain) = "%4" CmdTable(cmdVoteTotalResNoVoted) = "%5" CmdTable(cmdCardIn) = "!1" CmdTable(cmdCardOut) = "!2" End Sub Sub GetCommand() Dim CRLF As String Dim tmp As TCmd Dim i As Integer Dim j As Integer Dim s As String Dim n As Integer Dim cmd As String Dim Idx As Integer CRLF = Chr(13) j = InStr(InputBuffer, CRLF) While j > s = Left(InputBuffer, j) InputBuffer = Right(InputBuffer, Len(InputBuffer) - j) n = Len(s) 58 For i = To n - cmd = Mid(s, i, 2) Select Case cmd Case CmdTable(cmdMicroOn) tmp.CmdID = cmdMicroOn tmp.Seat = Val(Mid(s, i + 2, 4)) tmp.Index = ConvertToInt(Mid(s, i + 6, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdMicroOff) tmp.CmdID = cmdMicroOff tmp.Seat = Val(Mid(s, i + 2, 4)) tmp.Index = ConvertToInt(Mid(s, i + 6, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdVoteIndYes) Idx = ConvertToInt(Mid(s, i + 2, 4)) If Idx < MaxDelegate - Then VoteIndTable(Idx) = cmdVoteIndYes End If Exit For Case CmdTable(cmdVoteIndNo) Idx = ConvertToInt(Mid(s, i + 2, 4)) If Idx < MaxDelegate - Then VoteIndTable(Idx) = cmdVoteIndNo End If Exit For Case CmdTable(cmdVoteIndAbstain) Idx = ConvertToInt(Mid(s, i + 2, 4)) If Idx < MaxDelegate - Then VoteIndTable(Idx) = cmdVoteIndNoVoted End If Exit For Case CmdTable(cmdVoteIndNoVoted) Idx = ConvertToInt(Mid(s, i + 2, 4)) If Idx < MaxDelegate - Then VoteIndTable(Idx) = cmdVoteIndNoVoted End If Exit For Case CmdTable(cmdVoteTotal) tmp.CmdID = cmdVoteTotal tmp.Total = Val(Mid(s, i + 2, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdVoteTotalResYes) tmp.CmdID = cmdVoteTotalResYes 59 tmp.Total = Val(Mid(s, i + 2, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdVoteTotalResNo) tmp.CmdID = cmdVoteTotalResNo tmp.Total = Val(Mid(s, i + 2, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdVoteTotalResAbstain) tmp.CmdID = cmdVoteTotalResAbstain tmp.Total = Val(Mid(s, i + 2, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdCardIn) tmp.CmdID = cmdCardIn tmp.Card = Val(Mid(s, i + 2, 4)) tmp.Seat = Val(Mid(s, i + 6, 4)) tmp.Index = ConvertToInt(Mid(s, i + 10, 4)) SendCmdToAllUser tmp Exit For Case CmdTable(cmdCardOut) tmp.CmdID = cmdCardOut tmp.Card = Val(Mid(s, i + 2, 4)) tmp.Seat = Val(Mid(s, i + 6, 4)) tmp.Index = ConvertToInt(Mid(s, i + 10, 4)) SendCmdToAllUser tmp Exit For End Select Next i j = InStr(InputBuffer, CRLF) Wend End Sub Sub SendCmdToAllUser(cmd As TCmd) Dim i As Integer For i = To cUser - SendCmdToUser i, cmd Next i End Sub Sub SendCmdToUser(uid As Integer, cmd As TCmd) Dim n As Integer n = UserCmds(uid).Pointer + UserCmds(uid).Counter If n >= BufferLen Then UserCmds(uid).Buffer(n - BufferLen) = cmd Else UserCmds(uid).Buffer(n) = cmd End If 60 UserCmds(uid).Counter = UserCmds(uid).Counter + If UserCmds(uid).Counter = BufferLen Then UserCmds(uid).Counter = UserCmds(uid).Counter - UserCmds(uid).Pointer = UserCmds(uid).Pointer + If UserCmds(uid).Pointer = BufferLen Then UserCmds(uid).Pointer = End If End If End Sub Sub SendMsgToUser(uid As Integer, Sender As String, Msg As String) Dim n As Integer n = UserMsgs(uid).Pointer + UserMsgs(uid).Counter If n >= MaxMsgNote Then UserMsgs(uid).Sender(n - MaxMsgNote) = Sender UserMsgs(uid).MsgNote(n - MaxMsgNote) = Msg Else UserMsgs(uid).Sender(n) = Sender UserMsgs(uid).MsgNote(n) = Msg End If UserMsgs(uid).Counter = UserMsgs(uid).Counter + If UserMsgs(uid).Counter = MaxMsgNote Then UserMsgs(uid).Counter = UserMsgs(uid).Counter - UserMsgs(uid).Pointer = UserMsgs(uid).Pointer + If UserMsgs(uid).Pointer = MaxMsgNote Then UserMsgs(uid).Pointer = End If End If End Sub Function ConvertToInt(s As String) As Integer Dim ch As String Dim tmp As Integer Dim rate(5) As Integer Dim n As Integer Dim i As Integer Dim x As Integer rate(4) = rate(3) = 16 rate(2) = 16 * 16 rate(1) = 16 * 16 * 16 tmp = s = Trim(s) If s = "????" Then ConvertToInt = Exit Function End If 61 n = Len(s) For i = n To Step -1 x = Asc(Mid(s, i, 1)) - Asc("0") If x >= And x 255 And tmp < 384 Then tmp = tmp - 128 End If If tmp > 511 And tmp < 640 Then tmp = tmp - 256 End If If tmp > 767 Then tmp = tmp - 384 End If ConvertToInt = tmp End Function Function SendCmdToFile(uid As Integer, cmd As TCmd) As Boolean Dim hf As Integer Dim fn As String On Error Resume Next fn = UserCmdFileName(uid) If Trim(fn) = "" Then SendCmdToFile = False Exit Function End If If Dir(fn) = "" Then hf = FreeFile Open fn For Binary As hf 'Len = LenB(cmd) Put hf, , cmd Close hf SendCmdToFile = True Else SendCmdToFile = False End If End Function Function SendMsgToFile(uid As Integer, Sender As String, Msg As String) As Boolean Dim hf As Integer Dim fn As String Dim s As String * 60 62 Dim s1 As String * 255 On Error Resume Next s = Trim(Sender) s1 = Trim(Msg) fn = UserMsgFileName(uid) If Trim(fn) = "" Then SendMsgToFile = False Exit Function End If If Dir(fn) = "" Then hf = FreeFile Open fn For Binary As hf Put hf, , s Put hf, , s1 Close hf SendMsgToFile = True Else SendMsgToFile = False End If End Function Sub InitComm(ComObj As Control, ComPort As Integer, Setting As String) On Error Resume Next ComObj.CommPort = ComPort ComObj.Settings = UCase(Setting) ComObj.InputLen = ComObj.PortOpen = True InputBuffer = "" End Sub Sub ComEvent(ComObj As MSComm) Dim s As String s = ComObj.Input InputBuffer = InputBuffer & s GetCommand 'InputBuffer End Sub Đoạn chƣơng trình hiển thị Danh sách đăng ký phát biểu: Private Sub cmdRegister_Click() Dim tmp As TCmd Dim i As Integer Dim c As Integer If tCardNumber.Text = "" Then Exit Sub If IndexToSeat(Val(tCardNumber.Text)) = Then Exit Sub 63 c = lbRequestOn.ListCount For i = To c - If Val(tCardNumber.Text) = LRequestIndex(i).Index And _ Val(tOrder.Text) > c Then tOrder.Text = c + tCardNumber.Text = "" tCardNumber.SetFocus Exit Sub End If Next i ' Request On tmp.CmdID = cmdRequestOn tmp.cmdIndex = Val(tOrder.Text) - tmp.Index = Val(tCardNumber.Text) tmp.Seat = IndexToSeat(Val(tCardNumber.Text)) SendCmdToAllUser tmp 'lblInfo.Caption = "" tCardNumber.Text = "" tCardNumber.SetFocus End Sub Private Sub Form_Activate() Dim c As Integer c = lbRequestOn.ListCount ' tCardNumber.SetFocus tOrder.Text = Trim(Str(c + 1)) End Sub Private Sub lbMicroOn_GotFocus() If Me.Visible Then lbMicroOn.ListIndex = -1 tCardNumber.SetFocus End If End Sub Private Sub lbrequeston_GotFocus() If Me.Visible Then tCardNumber.SetFocus End If End Sub Private Sub SSFrame2_Click() 64 End Sub Private Sub tCardNumber_Change() Dim dInfo As TDelegate Dim s As String Dim i As Integer If Len(Trim(tCardNumber.Text)) > Or _ Val(tCardNumber.Text) > MaxDelegate Or _ Val(tCardNumber.Text) < Then tCardNumber.Text = "" ' lblInfo.Caption = "" Exit Sub End If For i = To Len(tCardNumber.Text) If Asc(Mid(tCardNumber.Text, i, 1)) < Asc("0") Or _ Asc(Mid(tCardNumber.Text, i, 1)) > Asc("9") Then tCardNumber.Text = "" ' lblInfo.Caption = "" Exit Sub End If Next i If IndexToSeat(Val(tCardNumber.Text)) > Then i = DelegateSearch(Val(tCardNumber.Text)) If i = -1 Then ResetDelegateInfo dInfo Else dInfo = DelegateTable(i) End If s = Padr(Trim(dInfo.DelegateName), 25, " ") + _ Padr(Trim(dInfo.GroupName), 25, " ") + _ "Sè ghÕ : " + Padr(Trim(Str(IndexToSeat(dInfo.CardNumber))), 4, " ") + _ " Micro : " + Trim(Str(STML(IndexToSeat(dInfo.CardNumber)))) 'lblInfo.Caption = s Else ' lblInfo.Caption = "" End If End Sub Private Sub tCardNumber_KeyDown(KeyCode As Integer, Shift As Integer) Dim tmp As TCmd Dim Idx As Integer Dim i As Integer Dim Shiftdown As Integer Dim c As Integer ' Arrow Up was pressed If KeyCode = vbKeyUp And lbRequestOn.ListCount > Then If lbRequestOn.ListIndex = -1 Then lbRequestOn.ListIndex = 65 ElseIf lbRequestOn.ListIndex > Then lbRequestOn.ListIndex = lbRequestOn.ListIndex - End If End If ' Arrow Down was pressed If KeyCode = vbKeyDown And lbRequestOn.ListCount > Then If lbRequestOn.ListIndex = -1 Then lbRequestOn.ListIndex = ElseIf lbRequestOn.ListIndex < lbRequestOn.ListCount - Then lbRequestOn.ListIndex = lbRequestOn.ListIndex + End If End If ' Home key was pressed If KeyCode = vbKeyHome And lbRequestOn.ListCount > Then lbRequestOn.ListIndex = End If ' End key was pressed If KeyCode = vbKeyEnd And lbRequestOn.ListCount > Then lbRequestOn.ListIndex = lbRequestOn.ListCount - End If If Trim(tCardNumber.Text) = "" Or _ Val(tCardNumber.Text) > 999 Then tCardNumber.Text = "" Exit Sub End If Shiftdown = (Shift And vbShiftMask) > Idx = Val(tCardNumber.Text) c = frmTMicro.lbRequestOn.ListCount ' Delete key was pressed ' Xoa mot dong Danh sach dai bieu DANG KY PHAT BIEU If Not Shiftdown And KeyCode = vbKeyDelete Then If c > Then For i = To lbRequestOn.ListCount - If Idx = LRequestIndex(i).Index Then 'off current request tmp.CmdID = cmdRequestOff tmp.cmdIndex = Idx tmp.Index = Val(tCardNumber.Text) tmp.Seat = IndexToSeat(tmp.Index) SendCmdToAllUser tmp ' lblInfo.Caption = "" tCardNumber.Text = "" 66 tCardNumber.SetFocus End If Next i End If End If ' Shift + Delete key pressed ' Xoa mot dong Danh sach dai bieu PHAT BIEU If Shiftdown And KeyCode = vbKeyDelete And _ lbMicroOn.ListCount Then For i = To lbMicroOn.ListCount - If Idx = LMicroIndex(i, 0) Then 'off current micro tmp.CmdID = cmdMicroOff tmp.Index = LMicroIndex(i, 0) tmp.Seat = LMicroIndex(i, 1) SendCmdToAllUser tmp tCardNumber.Text = "" tCardNumber.SetFocus Exit For End If Next i End If ' shift + Insert ket was pressed If Shiftdown And KeyCode = vbKeyInsert Then For i = To lbMicroOn.ListCount - If Idx = LMicroIndex(i, 0) Then tCardNumber.Text = "" Exit Sub End If Next i ' On new micro tmp.CmdID = cmdMicroOn tmp.Seat = IndexToSeat(Idx) tmp.Index = Val(tCardNumber.Text) SendCmdToAllUser tmp tCardNumber.Text = "" tCardNumber.SetFocus End If End Sub Private Sub tOrder_Change() Dim c As Integer Dim i As Integer 67 c = frmTMicro.lbRequestOn.ListCount If Len(tOrder.Text) > Or _ Val(tOrder.Text) > 99 Or _ Val(tOrder.Text) c + Then tOrder.Text = Trim(Str(c + 1)) tOrder.SelStart = tOrder.SelLength = Exit Sub End If For i = To Len(tOrder.Text) If Asc(Mid(Trim(tOrder.Text), i, 1)) < Asc("0") Or _ Asc(Mid(Trim(tOrder.Text), i, 1)) > Asc("9") Then tOrder.Text = Trim(Str(c + 1)) tOrder.SelStart = tOrder.SelLength = Exit Sub End If Next i End Sub Private Sub tOrder_GotFocus() tOrder.SelStart = tOrder.SelLength = End Sub Đoạn chƣơng trình hiển thị thơng tin đại biểu: Private Sub Form_Load() Dim s As String For i = To TotalDelegate - s = Padr(DelegateTable(i).DelegateName, 25, " ") + _ Padr(DelegateTable(i).GroupName, 25, " ") + _ Padr(Str(DelegateTable(i).CardNumber), 4, " ") lDelegate.AddItem s Next i End Sub