1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

ĐỀ CƯƠNG BÀI GIẢNG HỆ THỐNG NHÚNG

114 265 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 114
Dung lượng 2,68 MB

Nội dung

Chương 1: TỔNG QUAN VỀ LẬP TRÌNH ĐIỀU KHIỂN HỆ THỐNG Ngày nay với sự phát triển của khoa học kỹ thuật và công nghệ, lao động thủ công đã được thay thế bằng các hệ thống tự động hóa. Các hệ thống này có thể được vận hành và giám sát trực tiếp hoặc gián tiếp thông qua máy vi tính. Việc vận hành và giám sát thông qua máy vi tính đòi hỏi các thiết bị phải được kết nối với máy tính và có phần mềm điều khiển riêng. Chính vì vậy “Lập trình điều khiển hệ thống” được ra đời để giải quyết vấn đề đó. 1.1. Lập trình điều khiển hệ thống là gì?

LËp Tr×nh §iÒu KhiÓn HÖ Thèng Chương 1: TỔNG QUAN VỀ LẬP TRÌNH ĐIỀU KHIỂN HỆ THỐNG Ngày nay với sự phát triển của khoa học kỹ thuật và công nghệ, lao động thủ công đã được thay thế bằng các hệ thống tự động hóa. Các hệ thống này có thể được vận hành và giám sát trực tiếp hoặc gián tiếp thông qua máy vi tính. Việc vận hành và giám sát thông qua máy vi tính đòi hỏi các thiết bị phải được kết nối với máy tính và có phần mềm điều khiển riêng. Chính vì vậy “Lập trình điều khiển hệ thống” được ra đời để giải quyết vấn đề đó. 1.1. Lập trình điều khiển hệ thống là gì? Là lập trình được phần mềm có giao diện và chức năng phù hợp, đáp ứng được nhiệm vụ giao tiếp và điều khiển thiêt bị, hệ thống được ghép nối với máy tính thông qua các cổng truyền thông. Mục tiêu và nhiệm vụ lập trình điều khiển các thiết bị từ máy tính: - Tạo được giao diện biểu diễn và mô phỏng các hoạt động cần thiết cho các thiết bị được điều khiển, thể hiện được đầy đủ các tính năng như trên thiết bị thực tế (nút ấn, cảm biến …) - Thực hiện được việc ghép nối, giao tiếp với các thiết bị thông qua các cổng giao tiếp của máy tính như: COM, LPT, USB - Thực hiện được truyền thông với thiết bị, điều khiển thiết bị thông qua các giao thức làm việc chung của thiết bị và phần mền điều khiển. - Đóng gói được phần mền tạo thành bộ cài để sử dụng lâu dài. 1.2. Ghép nối máy tính với các thiết bị Máy tính có thể ghép nối với các thiết bị ngoại vi thông qua các cổng truyền thông có săn trên máy tính như cổng COM, LPT, USB…Ngoài ra ta cũng có thể ghép nối thông qua các khe cắm mở rộng như ISA, PCI …nhưng việc kết nối này sẽ khó khăn hơn. Một số chuẩn truyền thông thường dùng để ghép nối các thiết bị: - Chuẩn truyền thông nối tiếp RS232 (COM - Chuẩn song song LPT - Chuẩn USB: + Tốc độ cao + Giao tiếp đơn giản + Dễ tương thích Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng + Nguồn 5V công suất nhỏ. Một số đặc điểm của chuẩn USB: + Mở rộng tới 127 thiết bị có thể kết nối cùng vào một máy tính trên một cổng USB duy nhất (bao gồm các hub USB) + Những sợi cáp USB riêng lẻ có thể dài tới 5 mét; với những hub, có thể kéo dài tới 30 mét (6 sợi cáp nối tiếp nhau thông qua các hub) tính từ đầu cắm trên máy tính. + Với USB 2.0 (tốc độ cao), đường truyền đạt tốc độ tối đa đến 480 Mbps. + Cáp USB gồm hai sợi nguồn (+5V và dây chung GND) cùng một cặp gồm hai sợi dây xoắn để mang dữ liệu. + Trên sợi nguồn, máy tính có thể cấp nguồn lên tới 500mA ở điện áp 5V một chiều (DC). + Những thiết bị tiêu thụ công suất thấp (ví dụ: chuột, bàn phím, loa máy tính công suất thấp...) được cung cấp điện năng cho hoạt động trực tiếp từ các cổng USB mà không cần có sự cung cấp nguồn riêng (thậm trí các thiết bị giải trí số như SmartPhone, PocketPC ngày nay sử dụng các cổng USB để xạc pin). Với các thiết bị cần sử dụng nguồn công suất lớn (như máy in, máy quét...) không sử dụng nguồn điện từ đường truyền USB như nguồn chính của chúng, lúc này đường truyền nguồn chỉ có tác dụng như một sự so sánh mức điện thế của tín hiệu. Hub có thể có nguồn cấp điện riêng để cấp điện thêm cho các thiết bị sử dụng giao tiếp USB cắm vào nó bởi mỗi cổng USB chỉ cung cấp một công suất nhất định. + Những thiết bị USB có đặc tính cắm nóng, điều này có nghĩa các thiết bị có thể được kết nối (cắm vào) hoặc ngắt kết nối (rút ra) trong mọi thời điểm mà người sử dụng cần mà không cần phải khởi động lại hệ thống. + Nhiều thiết bị USB có thể được chuyển về trạng thái tạm ngừng hoạt động khi máy tính chuyển sang chế độ tiết kiệm điện. Hình 1.2 Sơ đồ chân USB 1.3. Giao diện điều khiển mô phỏng Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Giao diện là một trong các phần khá quan trọng của phần mềm máy tính bất kỳ và một phần mềm điều khiển hệ thống nói chung. Thông qua giao diện, người sử dụng có thể nhận biết được hoạt động, trạng thái của thiết bị hiện hành và thực hiện điều khiển chúng. Giao diện phải đảm bảo thuận tiện thao tác, hình ảnh, phương tiện điều khiển, bố trí càng giống với các bộ điều khiển thực tế càng tốt. Điều này giúp người sử dụng dễ dàng thực hiện hơn. Giao diện phải đơn giản, màu sắc và bố cục thích hợp. Phần biểu diễn các số liệu, trạng thái của thiết bị trên giao diện thiết kế sao cho giống với các thiết bị thực như: các đèn báo, LED 7 thanh, đồng hồ số, đồng hồ kim… Để thực hiện được yêu cầu này, thong thường phần mềm điều khiển cần có phần mô phỏng các thiết bị thực và hoạt động của nó. Phần công cụ điều khiển như: các nút bấm, cần gạt, nút xoay nên bố trí ở những vị trí tương tự như trên bàn điều khiển thực. Cách điều khiển này thường không có sẵn trọng bộ công cụ chuẩn của các ngôn ngữ hay môi trường phát triển phần mềm mà người lập trình cần thiết kế, bổ sung. 1.4. Lập trình điều khiển thông qua các cổng Tùy nhu cầu và khả năng ghép nối của thiết bị cần điều khiển với máy tính mà phần mềm có sự lựa chon và lập trình truyền thông trên các cổng tương ứng. Với mỗi cổng lựa chọn cần đảm bảo thực hiện các hoạt động gửi và nhận dữ liệu chính xác, phân tích và tổng hợp được gói thông tin theo đúng định dạng yêu cầu của thiết bị và cổng truyền thông. Với các cổng có hỗ trợ sẵn giao thức truyền thông, việc lập trình trở lên đơn giản hơn, chỉ cần xử lý dữ liệu để đáp ứng yêu cầu điều khiển của thiết bị được điều khiển. Những cổng không hỗ trợ giao thức truyền thông thì việc lập trình truyền thông qua các cổng này cần thiết phải bổ sung giao thức để đảm bảo truyền đúng dữ liệu. 1.5. Công cụ lập trình điều khiển Để lập trình điều khiển các thiết bị từ máy tính, ta có thể sử dụng nhiều ngôn ngữ lập trình khác nhau tùy thuộc yêu cầu, môi trường làm việc, cổng truyền thông được sử dụng. Một số ngôn ngữ lập trình dùng để lập trình ghép nối điều khiển thiết bị từ máy tính như: Visual C, C++, Visual Basic 6.0, Visual Basic.Net… Ngôn ngữ lập trình Visual Basic 6.0 là một công cụ cho phép thực hiện các công việc lập trình khá tốt, đặc biệt là thuận tiện trong việc thiết kế giao diện và viết mã điều khiển. Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Chương 2: TỔNG QUAN VỀ PHẦN MỀM VISUAL BASIC 6.0 Chương này giới thiệu về cách cài đặt phần mền VB 6.0 và môi trường phát triển tích hợp (IDE) Microsoft Visual Basic 6.0; cũng như giúp các bạn sinh viên có cái nhìn tổng quan về Visual Basic. Mục tiêu: Học xong chương này người học có khả năng: - Cài đặt được phần mền VB 6.0 - Sử dụng môi trường phát triển tích hợp VB 6.0 để phát triển ứng dụng. - Cách tạo dự án mới (New Project) trong VB 6.0. 2.1. Giới thiệu về Visual Basic 6.0 Visual Basic 6.0 (VB6) là một phiên bản của bộ công cụ lập trình Visual Basic (VB), cho phép người dùng tiếp cận nhanh cách thức lập trình trên môi trường Windows. VB6 có tính năng trợ giúp mới và các công cụ lập trình hiệu quả hơn so với phiên bản trước. Người dùng mới làm quen với VB có thể dễ dàng tiếp cận hớn. Với VB6, chúng ta có thể : + Khai thác thế mạnh của các điều khiển mở rộng. + Làm việc với các điều khiển mới (ngày tháng với điều khiển MonthView và DataTimePicker, các thanh công cụ có thể di chuyển được CoolBar, sử dụng đồ họa với ImageCombo, thanh cuộn FlatScrollBar,…). + Làm việc với các tính năng ngôn ngữ mới. + Làm việc với DHTML. + Làm việc với cơ sở dữ liệu. + Các bổ sung về lập trình hướng đối tượng. 2.2. Cài đặt Visual Basic 6.0 Sử dụng chương trình Setup, người dùng có thể cài đặt VB6 lên máy tính của mình. Chương trình Setup này còn cài đặt các tập tin cần thiết để xem tài liệu trên đĩa CD MSDN (Microsoft Developer Network). Nếu cần, người dùng có thể cài đặt riêng phần tài liệu và ví dụ mẫu của Visual Basic lên máy tính. Để cài đặt VB6, người dùng nên kiểm tra máy tính của mình đảm bảo được cấu hình tối thiểu. Các yêu cầu hệ thống tối thiểu : Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng - Microsoft Windows 95 trở lên hoặc là Microsoft Windows NT Workstation 4.0 trở lên. - Tốc độ CPU 66 MHz trở lên. - Màn hình VGA hoặc màn hình có độ phân giải cao được hỗ trợ bởi Microsoft Windows. - 16 MB RAM cho Microsoft Windows 95 hoặc 32MB RAM cho Microsoft Windows NT Workstation. 2.3. Làm quen với VB6 2.3.1. Mở một dự án mới với VB 6.0 Từ menu Start chọn Programs, Microsoft Visual Basic 6.0. Khi đó bạn sẽ thấy màn hình xuất hiên như hình 2.1 dưới đây. Hình 2.1 Cửa sổ khi kích hoạt VB 6.0 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Ở đây, người dùng có thể chọn tạo mới một dự án thực thi được bằng cách chọn Standard EXE rồi nhấp Open (Hình 2.2). Tiếp theo là cửa sổ làm việc chính của VB6, gọi tắt là IDE (Integrated Development Environment). Hình 2.2 2.3.2. Giới thiệu các thành phần của IDE IDE là tên tắt của môi trường phát triển tích hợp (Integrated Development Environment), đây là nơi tạo ra các chương trình Visual Basic. IDE của Visual Basic là nơi tập trung các menu, thanh công cụ và cửa sổ để tạo ra chương trình. Mỗi một thành phần của IDE có các tính năng ảnh hưởng đến các hoạt động lập trình khác nhau. Thanh menu cho phép bạn tác động cũng như quản lý trực tiếp trên toàn bộ ứng dụng. Bên cạnh đó thanh công cụ cho phép truy cập các chức năng của thanh menu thông qua các nút trên thanh công cụ. Hình 2.3 Cửu sổ IDE của VB 6.0 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Các biểu mẫu (Form) - khối xây dựng chương trình chính của VB - xuất hiện trong cửa sổ Form. Hộp công cụ để thêm các điều khiển vào các biểu mẫu của đề án. Cửa sổ Project Explorer hiển thị các đề án khác nhau mà người dùng đang làm cũng như các phần của đề án. Người dùng duyệt và cài đặt các thuộc tính của điều khiển, biểu mẫu và module trong cửa sổ Properties. Sau cùng, người dùng sẽ xem xét và bố trí một hoặc nhiều biểu mẫu trên màn hình thông qua cửa sổ Form Layout. 2.3.3. Sử dụng thanh công cụ trong IDE của VB Thanh công cụ là tập hợp các nút bấm mang biểu tượng thường đặt dưới thanh menu. Các nút này đảm nhận các chức năng thông dụng của thanh menu (New, Open, Save ...).Các nút này đảm nhận các chức năng thông dụng trong cấu trúc menu của Visual basic. Thanh công cụ rất hửu ích, thay vì phải lần lượt chọn qua menu và menu con, ta nhấn một nút bấm nào đó trong thanh công cụ để gọi một chức năng tương tự trên menu. Hình 2.4 Thanh công cụ ở dạngstandard Ngoài ra, người dùng có thể kéo rê thanh công cụ trên IDE đến vị trí bất kỳ nào đó thuận tiện cho việc sử dụng. Người dùng có thể thêm hay xóa thanh công cụ trên IDE bằng cách: Chọn Toolbars từ menu View hoặc ấn chuột phảivào điểm bất kỳ nào trên thanh menu, một popup menu bật ra. Chọn loại thanh công cụ mà ta muốn thêm vào hoặc xóa đi. Nếu có đánh dấu check ở bên trái thì loại công cụ đó đang được chọn. Hình 2.5 Popup menu thêm, xóa công cụ Sử dụng thanh công cụ gỡ rối (debug) Với thanh công cụ gỡ rối, người dùng có thể thực thi, tạm ngưng hoặc dừng một đề án. Với thanh công cụ Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Debug, người dùng có thể kiểm tra chương trình và giải quyết các lỗi có thể xảy ra. Khi gỡ rối chương trình, người dùng có thể chạy từng dòng lệnh, kiểm tra giá trị các biến, dừng chương trình tại một điểm nào đó hoặc với một điều kiện nào đó. Hình 2.6 Thanh công cụ gỡ rối (debug) Sử dụng thanh công cụ Edit Thanh công cụ Edit được dùng để viết chương trình trong cửa sổ Code, thanh công cụ Edit có đầy đủ các tính năng của menu Edit. Ngoài ra người sử Hình 2.7 Thanh công cụ Edit dụng có thể sử dụng chức năng viết chương trình tự động như là Quick Info. Thanh công cụ Edit của VB6 có tính năng là tự hoàn tất các từ khóa. Tính năng này rất hữu dụng giúp cho người dùng tránh các lỗi mắc phải do gõ sai từ khóa. Sử dụng thanh công cụ Form Editor Thanh công cụ Form Editor có chức năng giống như menu Format dùng để di chuyển và sắp xếp các điều khiển trên biểu mẫu. Hình 2.8 Thanh công cụ Form Editor Trong quá trình thiết kế biểu mẫu, đôi khi chúng ta phải sử dụng thuộc tính ZOrder để cho phép một điều khiển có thể thay thế một điều khiển khác hay không hoặc là xuất hiện bên trên một điều khiển khác hay không. Sử dụng hộp công cụ (Toolbox) Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Hộp công cụ là nơi chứa các điều khiển được dùng trong quá trình thiết kế biểu mẫu. Các điều khiển được chia làm hai loại: Điều khiển có sẵn trong VB và các điều khiển được chứa trong tập tin với phần mở rộng là .OCX. Đối với các điều khiển có sẵn trong VB thì ta không thể gỡ bỏ khỏi hộp công cụ, trong khi đó đối với điều khiển nằm ngoài ta có thêm hoặc xóa bỏ khỏi hộp công cụ. Một điều khiển có thể được đưa vào biểu mẫu bằng cách chọn điều khiển đó và đưa vào biểu mẫu. Chúng ta sẽ trở lại phần này trong chương tiếp theo khi thiết kế các biểu mẫu. 2.3.4 Quản lý ứng dụng với Project Explorer Project Explorer trong VB6 giúp quản lý và định hướng nhiều đề án.VB cho phép nhóm nhiều đề án trong cùng một nhóm. Người dùng có thể lưu tập hợp các đề án trong VB thành một tập tin nhóm đề án với phần mở rộng .vbp. Hình 2.9 Cửa sổ Project Explorer Project Explorer có cấu trúc cây phân cấp như cây thư mục trong cửa sổ Explorer của hệ điều hành. Các đề án có thể được coi là gốc của cây, các thành phần của đề án như biểu mẫu, module ... là các nút của cây. Khi muốn làm việc với thành phần nào thì ta có thể nhấn đúp lên thành phần đó trên cửa sổ Project Explorer để vào cửa sổ viết code cho thành phần đó. Khi làm việc với một dự án lớn, chúng ta sẽ thấy Project Explorer cực kỳ hữu ích cho việc tổ chức và quản lý một dự án lớn. 2.3.5. Cửa sổ Properties Mỗi một thành phần, điều khiển điều có nhiều thuộc tính. Mỗi một thuộc tính lại có một hoặc nhiều giá trị.Cửa sổ Properties cho phép người dùng xem, sửa đổi giá trị các thuộc tính của điều khiển nhằm giúp điều khiển hoạt động theo đúng ý đồ của người sử dụng. Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Thuộc tính Caption được đánh dấu, nghĩa là ta có thể sửa đổi thuộc tính này. từng thuộc tính có một gía trị mặc định. ta có thể sửa đổi bằng tay trong lúc thiết kế, hoặc bằng chương trình trong lúc thi hành. Một biểu mẫu có khoảng 40 thuộc tính được hiển thị trong lúc thiết kế, nhưng ta có thể truy cập một số thuộc tính khác vào trong lúc thi hành. Ta có thể xem toàn bộ thuộc tính sắp xếp theo thứ tự bảng chữ cái bằng cách chọn vào tab Alphabetic, hoặc xem theo từng nhóm bằng cách chọn vào tab Categozized. Ta có thể mở cửa sổ Properties bằng nhiều cách: - Nhấn chuộtvào biểu mẫu để chọn nó như một đối tượng hiện hành, nhấn phím F4 để hiển thị cửa sổ Properties. - Hoặc là từ menu_View, chọn Propertieshoặc là nhấn nút phải chuột lên biểu mẫu, ta sẽ thấy một menu hiển thị. chọn Properties. 2.3.6. Cửa sổ Form Layout Đây chính là cửa sổ trình bày biểu mẫu cho phép định vị trí của một hoặc nhiều biểu mẫu trên màn hình khi chương trình ứng dụng được thi hành. Ta định vị một biểu mẫu trên màn hình bằng cách dùng chuột di chuyển biểu mẫu trong cửa sổ Form Layout. Sử dụng cửa sổ Form Layout không đơn giản như các cửa sổ khác vì nó không được kích hoạt sẵn, người dùng cần phải chạy ứng dụng sau đó mới có thể bố trí được các biểu mẫu thông qua Form Layout. Nếu ta không định vị các biểu mẫu thì vị trí của biểu mẫu trên màn hình lúc thiết kế cũng là vị trí khởi động của biểu mẫu khi Hình 2.10 Cửa sổ Form thực thi. 2.3.7. Hiển thị IDE Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Ta có thể xem IDE của Visual basic bằng 2 cách: MDI hoặc SDI. Hiển thị kiểu MDI(Multiple document interface) cho phép trình bày tất cả các cửa sổ thành phần trong IDE như là các cửa sổ con chứa trong một cửa sổ lớn. Trái lại đối với hiện thị SDI(single document interface), các cửa sổ thành phần hiển thị một cách độc lập với nhau. Không có một cửa sổ chính để chứa và thống nhất các thành phần. Chuyển đổi từ hiển thị MDI sang SDI - Chọn Tools\option\ - Trên tang Advance, chọn hộp đánh dấu SDI development Enviroment; nhấn OK. IDE của Visual basic sẽ định lại cấu hình cho hiển thị SDI trong lần khởi động tiếp sau của Visual basic. - Nhấn OK, thoát và khởi động lại Visual basic 2.3.8. Trợ giúp Không những làm chủ ngôn ngữ lập trình Visual basic, bạn cũng cần phải sử dụng thuần thục môi trường Visual basic cũng như hiểu các thông điệp mà Visual basic gửi ra. Microsoft cung cấp một trong những hệ thống trợ giúp tốt nhất cho các công cụ phát triển ứng dụng. Trợ giúp nhạy với ngữ cảnh Tại một vị trí bất kỳ trong Visual basic, bạn nhấn phím F1, nút trợ giúp. Nó sẽ kích hoạt hệ thống trợ giúp của Visual basic, nơi có thể giải thích hoặc đưa ra những lời khuyên, cũng như các đoạn chương trình mẫu. Visual basic có hệ thống trợ giúp là hệ thông thư viện MSDN được sử dụng rộng rãi cho các công cụ phát triển của Microsoft để cung cấp truy cập đến sổ tay hướng dẫn sử dụng sản phẩm trực tuyến. 2.3.7. Biên dịch đề án thành tập tin thực thi Sau khi đề án đã hoàn thành, người dùng có thể biên dịch thành tập tin thực thi được. Cách tiến hành như sau: - Trước tiên ta cần chỉ cho VB6 biết phần chương trình nào sẽ được thực thi trước bằng cách chọn Project Properties từ menu Project. Chọn tab General, chú ý phần Startup Object, đây là nơi quy định điểm khởi đầu của chương trình sau khi biêndịch kết thúc. - Từ menu File, chọn Make ... EXE... Một hộp thoại xuất hiện cho phép bạn nhập vào tên của tập tin thực thi. Bạn chỉ cần gõ tên tập tin, VB sẽ tự động thêm phần mở rộng .EXE. - Nhấn vào nút Options để mở hộp thoại Project Properties và điền tên của ứng dụng vào ô Title, ta có thể ghi chú thông tin cho từng phiên bản trong phần Version Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Information. Ta có thể chọn Auto Increment để VB tự động tăng số Revisionmỗi lần ta tạo lại tập tin EXE cho dự án. - Cuối cùng, nhấn OK để trở về hộp thoại Make Project. Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Chương 3 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC Chương này giới thiệu về các cấu trúc dữ liệu trong VB. Việc nắm bắt được các vấn đề này giúp cho việc tổ chức dữ liệu khi viết chương trình VB được hợp lý hơn. Mục tiêu: Học xong chương này người học có khả năng: - Sử dụng và khai báo được kiểu dữ liệu chuỗi, kiểu ngày tháng, Kiểu động (Variant), Kiểu mảng. - Trình bày được các hàm xử lý kiểu dữ liệu có cấu trúc. - Vận dụng làm được các bài tập về kiểu dữ liệu 3.1 Biến và hằng 3.1.1 Biến Biến (Variable) là vùng lưu trữ được đặt tên để chứa dữ liệu tạm thời trong quá trình tính toán, so sánh và các công việc khác. Ta dùng toán tử (=) để tính toán và chứa giá trị vào biến. Biến có 2 đặc điểm: - Mỗi biến có một tên. - Mỗi biến có thể chứa duy nhất một loại dữ liệu. Khai báo biến [Public|Private|Static|Dim] [ As ] Ví dụ: Dim tong as integer Trong đó, tên biến được đặt theo quy tắc. - Tên có thể dài từ 1 - 40 ký tự. - Tên phải bắt đầu với ký tự chữ, có thể chữ hoa hay thường. - Sau ký tự đầu tiên, tên có thể chứa ký tự, số hay dấu gạch dưới. Nếu cần khai báo nhiều biến trên một dòng thì mỗi khai báo cách nhau dấu phẩy (,). Khai báo biến với từ khóa Dim biến được khai báo trong thủ tục chỉ tồn tại khi thủ tục thi hành. Nó sẽ biến mất khi thủ tục chấm dứt. Giá trị của biến trong thủ tục là cục bộ đối với thủ tục đó, nghĩa là ta không thể truy nhập biến từ bên ngoài thủ tục. Nhờ đó, ta có thể dùng trùng tên biến cục bộ trong những thủ tục khác nhau. Kiểu dữ liệu trong khai báo Dim có thể là những kiểu cơ bản như Integer, String hoặc Currency. Ta cũng có thể dùng đối tượng của VB (như Object, Form1, TextBox) hoặc của các ứng dụng khác. Khai báo biến với từ khóa Public thì phạm vi sử dụng của biến là toàn cục, nghĩa là biến đó tồn tại và hoạt động trong toàn ứng dụng. Khai báo biến với từ khóa Private thì biến được sử dụng trong phạm vi khia báo và chỉ được sử dụng bên ngoài thủ tục. Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Khai báo biến cụ bộ với từ khóa static nghĩa là khi thủ tục chấm dứt biến đó sẽ mất nhưng giá trị của nó vẫn được giữ lại và tiếp tục hoạt động khi thủ tục đó được gọi Khai báo ngầm: Đây là hình thức không cần phải khai báo một biến trước khi sử dụng. Cách dùng này có vẻ thuận tiện nhưng sẽ gây một số sai sót, chẳng hạn khi ta đánh nhầm tên biến, VB sẽ hiểu đó là một biến mới dẫn đến kết quả chương trình sai mà rất khó phát hiện. Ví dụ: TempVal = Abs(num) SafeSqr = Sqr(TempVal) Khai báo tường minh: Để tránh những rắc rối trên, ta nên quy định VB phải báo lỗi khi gặp một tên biến không khai báo. Ta đặt dòng lệnh: Option Explicit trong phần Declarations của modul. Hoặc cách khác, từ menu Tools, chọnOptions, chọn tab Editor và đánh dấu vào tuỳ chọn Require Variable Declaration. VB tự động chèn dòng lệnh Option Explicit vào một mô-đun mới, nhưng không phải là những mô-đun đã được tạo. Do đó, đối với các modul này, ta phải thêm dòng lệnh bằng tay. Option Explicit chỉ hoạt động trên từng modul. Vì vậy, ta phải thêm dòng này vào mỗi modul của biểu mẫu, modul chuẩn, hay modul lớp. 3.1.2. Hằng Dùng để chứa những dữ liệu tạm thời nhưng không thay đổi trong suốt thời gian chương trình hoạt động. Sử dụng hằng số làm chương trình sáng sủa và dễ đọc nhờ những tên gợi nhớ thay vì các con số. VB cung cấp một số hằng định nghĩa sẵn, nhưng ta có thể tự tạo hằng. Ta có thể dùng cửa sổ Object Browser để xem danh sách các ứng dụng hằng có sẵn của VB và VBA( Visual basic for Application). Các ứng dụng khác cung cấp những thư viện đối tượng, như Microsoft Exel, Microsoft Project, hoặc các thư viện của điều khiển ActiveX cũng có hằng định nghĩa sẵn. Trong trương hợp trùng tên hằng trong những thư viện khác nhau, ta có thể dùng cách chỉ rõ tham chiếu hằng: [][] Libname là tên lớp, tên điều khiển hoặc tên thư viện. Khai báo hằng [Public|Private] Const [As ] = Ví dụ: Public Const deta as integer = b*b – 4*a*c Const g = 9.8 Const Num As Integer = 4*5 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Tên hằng được đặt giống như quy tắc đặt tên biến, tầm hoạt động của hằng cũng tương tư như biến, tùy thuộc vào từ khóa. 3.1.3. Biểu thức Toán tử hay phép toán (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và xử lý dữ liệu. Toán hạng: là giá trị dữ liệu (biến, hằng…). Biểu thức: là tập hợp các toán hạng và các toán tử kết hợp lại với nhau theo quy tắc nhất định để tính toán ra một giá trị nào đó. 3.1.4. Các loại phép toán Các phép toán số học: Thao tác trên các giá trị có kiểu dữ liệu số. Các phép toán quan hệ Đây là các phép toán mà (TRUE hay FALSE). Phép toán = > < >= Components: Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Hình 4.5 – Bổ sung đối tượng MsComm vào VBP Biểu tượng của MsComm: và các thuộc tính cơ bản mô tả như sau: Thuộc tính Mô tả CommPort Input Output PortOpen Settings Số thứ tự cổng truyền thông Nhận ký tự từ bộ đệm Xuất ký tự ra cổng nối tiếp Mở / đóng cổng Xác định các tham số truyền 8.1.4. Các thuộc tính ™ Settings: Xác định các tham số cho cổng nối tiếp. Cú pháp: MSComm1.Settings = "BBBB,P,D,S" 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 300 600 1200 P: kiểm tra chẵn lẻ, với các giá trị: Giá trị O E M S N Lý Văn Đạt – Bộ môn Kỹ thuật điện tử 2400 9600 (măc định) 14400 19200 38400 56000 188000 256000 Mô tả Odd (kiểm tra lẻ) Even (kiểm tra chẵn) Mark (luôn bằng 1) Space (luôn bằng 0) Không kiểm tra LËp Tr×nh §iÒu KhiÓn HÖ Thèng 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) VD: MSComm1.Settings = "9600,O,8,1" sẽ xác định tốc độ truyền 9600bps, kiểm tra parity chẵn với 1 bit stop và 8 bit dữ liệu. Hình 4.6 – Các thuộc tính của đối tượng MSComm ™ 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 → 99, mặc định là 1. VD: MSComm1.CommPort = 1 xác định sử dụ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 2 thuộc tính Settings và CommPort. Cú pháp: MSComm1.PortOpen = True | False Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng thời xoá nội dung của các bộ đệm truyền, nhận. VD: Mở cổng COM1 với tốc độ truyền 9600 bps MSComm1.Settings = "9600,N,8,1" MSComm1.CommPort = 1 MSComm1.PortOpen = True Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Các thuộc tính nhận dữ liệu: Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm. 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 dược dùng để xoá bộ đệm nhận bắng cách gán giá trị 0. MSComm1.InBufferCount = 0 I 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. VD: Đọ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ớn nhất (tính bằng ms) từ lúc phát hiện sóng mang cho đến 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 ™ 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. ™ CDHolding: Xác định trạng thái CD, 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: Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng 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: ™ CommEvent: 2 Các lỗi truyền thông: 8.1.5. Sự kiện OnComm Sự kiện OnComm xảy ra bất cứ khi nào giá trị của thuộc tính CommEvent thay đổi. Các thuộc tính RThreshold và SThreshold = 0 sẽ cấm sự kiện OnComm khi thực hiện nhận hay gởi dữ liệu. Thông thường, SThreshold = 0 và RThreshold = 1. Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Một chương trình truyền nhận đơn giản thực hiện bằng cách nối chân TxD với RxD của cổng COM1 (loopback). Phương pháp này dùng để kiểm tra cổng nối tiếp. Thuộc tính cơ bản của cổng nối tiếp: Hình 4.7 – Các thuộc tính cơ bản của MSComm Cửa sổ chương trình thực thi: Hình 4.8 – Cửa sổ chương trình loopback Chương trình nguồn: Begin VB.Form Form1 Caption = “Loopback Serial Port Example” ClientHeight = 3195 ClientLeft = 60 ClientTop = 345 ClientWidth = 4680 LinkTopic = “Form1” ScaleHeight = 3195 ScaleWidth = 4680 StartUpPosition = 3 ‘Windows Default Begin VB.CommandButton cmdExit Caption = “Exit” Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Height = 615 Left = 2640 TabIndex = 5 Top = 2160 Width = 1095 End Begin VB.CommandButton cmdSend Caption = “Send” Height = 615 Left = 1200 TabIndex = 4 Top = 2160 Width = 975 End Begin VB.TextBox txtReceive Height = 735 Left = 1320 Locked = -1 ‘True TabIndex = 3 Top = 1080 Width = 2535 End Begin VB.TextBox txtTransmit Height = 735 Left = 1320 TabIndex = 0 Top = 240 Width = 2535 End Begin MSCommLib.MSComm MSComm1 Left = 3960 Top = 240 _ExtentX = 1005 _ExtentY = 1005 _Version = 393216 DTREnable = -1 ‘True RThreshold = 1 End Begin VB.Label Label2 Caption = “Receive:” Height = 375 Left = 240 TabIndex = 2 Top = 1200 Width = 855 End Begin VB.Label Label1 Caption = “Transmit:” Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Height = 375 Left = 240 TabIndex = 1 Top = 240 Width = 975 End End Attribute VB_Name = “Form1” Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub cmdExit_Click() MSComm1.PortOpen = False ‘Đóng cổng End End Sub Private Sub cmdSend_Click() MSComm1.Output = Trim(txtTransmit.Text)’Gởi dữ liệu End Sub Private Sub Form_Load() MSComm1.CommPort = 1 ‘COM1 MSComm1.Settings = “9600,n,8,1” ‘Tốc độ 9600bps MSComm1.PortOpen = True ‘ Mở cổng End Sub Private Sub MSComm1_OnComm() If (MSComm1.CommEvent = comEvReceive) Then txtReceive.Text = txtReceive.Text + MSComm1.Input End If End Sub 8.1.6. Giao tiếp với vi điều khiển Khi thực hiện giao tiếp với vi điều khiển, ta phải dùng thêm mạch chuyển mức logic từ TTL → 232 và ngược lại. Các vi mạch thường sử dụng là MAX232 của Maxim hay DS275 của Dallas. Mạch chuyển mức logic mô tả như sau: Hình 4.9 – Mạch chuyển mức logic TTL ↔ RS232 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Tuy nhiên, khi sử dụng mạch chuyển mức logic dùng các vi mạch thì đòi hỏi phải dùng chung GND giữa máy tính và vi mạch Æ có khả năng làm hỏng cổng nối tiếp khi xảy ra hiện tượng chập mạch ở mạch ngoài. Do đó, ta có thể dùng thêm opto 4N35 để cách ly về điện. Sơ đồ mạch cách ly mô tả như sau: Hình 4.10 – Mạch chuyển mức logic TTL ↔ RS232 cách ly Khi giao tiếp, vi điều khiển chính là một DTE nên sẽ nối RxD của máy tính với TxD của vi điếu khiển và ngược lại. Mạch kết nối đơn giản giữa vi điều khiển và máy tính như sau: Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Chương trình nguồn cho vi điều khiển AT89C51: MOV TMOD,#20h MOV SCON,#52h ; Truyền 8 bit dữ liệu, no parity MOV TH1,#(-3) ; Tốc độ truyền 9600 bps MOV TL1,#(-3) SETB TR1 Receive: JNB RI,Transmit ; Có dữ liệu hay không CLR RI MOV A,SBUF ; Nếu có thì xuất ra LED MOV P1,A Transmit: JNB TI,Receive ; Đã truyền xong chưa CLR TI MOV A,P2 ; Nếu xong thì truyền trạng thái MOV SBUF,A ; của công tăc SW DIP-8 JMP Receive Giao diện giao tiếp với vi điều khiển Chương trình nguồn VB: Begin VB.Form Form1 Caption = "Microcontroller Interface Example" ClientHeight = 4665 ClientLeft = 60 ClientTop = 345 ClientWidth = 4020 LinkTopic = "Form1" ScaleHeight = 4665 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng ScaleWidth = 4020 StartUpPosition = 3 'Windows Default Begin VB.CheckBox chkSW Height = 375 Index = 7 Left = 1800 TabIndex = 17 Top = 3480 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 6 Left = 1800 TabIndex = 16 Top = 3000 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 5 Left = 1800 TabIndex = 15 Top = 2520 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 4 Left = 1800 TabIndex = 14 Top = 2040 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 3 Left = 1800 TabIndex = 13 Top = 1560 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 2 Left = 1800 TabIndex = 12 Top = 1080 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 1 Left = 1800 TabIndex = 11 Top = 600 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 0 Left = 1800 TabIndex = 10 Top = 120 Width = 1575 End Begin VB.CommandButton cmdExit Caption = "Exit" Height = 495 Left = 1680 TabIndex = 9 Top = 3960 Width = 975 End Begin MSCommLib.MSComm MSComm1 Left = 3360 Top = 3960 _ExtentX = 1005 _ExtentY = 1005 _Version = 393216 DTREnable = -1 'True RThreshold = 1 End Begin VB.CommandButton cmdSend Caption = "Send" Height = 495 Left = 240 TabIndex = 8 Top = 3960 Width = 1095 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED7" Height = 375 Index = 7 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Left = 240 TabIndex = 7 Top = 3480 Width = 1095 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED6" Height = 375 Index = 6 Left = 240 TabIndex = 6 Top = 3000 Width = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED5" Height = 375 Index = 5 Left = 240 TabIndex = 5 Top = 2520 Width = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED4" Height = 375 Index = 4 Left = 240 TabIndex = 4 Top = 2040 Width = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED3" Height = 375 Index = 3 Left = 240 TabIndex = 3 Top = 1560 Width = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED2" Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Height = 375 Index = 2 Left = 240 TabIndex = 2 Top = 1080 Width = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED1" Height = 375 Index = 1 Left = 240 TabIndex = 1 Top = 600 Width = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED0" Height = 375 Index = 0 Left = 240 TabIndex = 0 Top = 120 Width = 975 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 7 Left = 840 Shape = 3 'Circle Top = 3480 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 6 Left = 840 Shape = 3 'Circle Top = 3000 Width = 375 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 5 Left = 840 Shape = 3 'Circle Top = 2520 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 4 Left = 840 Shape = 3 'Circle Top = 2040 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 3 Left = 840 Shape = 3 'Circle Top = 1560 Width = 375 Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 2 Left = 840 Shape = 3 'Circle Top = 1080 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Height = 375 Index = 1 Left = 840 Shape = 3 'Circle Top = 600 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 0 Left = 840 Shape = 3 'Circle Top = 120 Width = 375 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub cmdExit_Click() If MSComm1.PortOpen Then MSComm1.PortOpen = False End If End End Sub Private Sub cmdSend_Click() Dim t As Integer Dim i As Integer t=0 For i = 0 To 7 t = t + (2 ^ i) * (1 - shpLED(i).FillStyle) Next i MSComm1.Output = Chr(t) End Sub Private Sub Form_Load() MSComm1.Settings = "9600,N,8,1" MSComm1.CommPort = 1 MSComm1.PortOpen = True End Sub Private Sub lblLED_Click(Index As Integer) Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng shpLED(Index).FillStyle = 1 - shpLED(Index).FillStyle End Sub Private Sub MSComm1_OnComm() Dim t As String Dim n As Integer Dim i As Integer If MSComm1.CommEvent = comEvReceive Then n = Asc(MSComm1.Input) For i = 0 To 7 chkSW(i).Value = n Mod 2 If chkSW(i).Value = 0 Then chkSW(i).Caption = "Switch " & Str(i) & " off" Else chkSW(i).Caption = "Switch " & Str(i) & " on" End If n = Fix(n / 2) Next i End If End Sub 8.1.7. chuẩn 485 Chuẩn RS232 dùng đường truyền không cân bằng vì các tín hiệu lấy chuẩn là GND chung nên dễ bị ảnh hưởng của nhiễu làm tốc độ và khoảng cách truyền bị giới hạn. Khimuốn tăng khoảng cách truyền, môt phương pháp có thể sử dụng là dùng 2 dây truyền vi sai vì lúc này 2 dây có cùng đặc tính nên sẽ loại trừ được nhiễu chung. Hai chuẩn được sử dụng là RS422 và RS485 nhưng thông thường sử dụng RS485. Điện áp vi sai yêu cầu phải lớn hơn 200mV. Nếu VAB > 200 mV thì tương ứng với logic 1 và VAB < -200 mV tương ứng với logic 0. Chuẩn RS485 sử dụng hai điện trở kết thúc là 120 Ω tại hai đầu xa nhất của đường truyền và sử dụng dây xoắn đôi. Hình 4.13 – Chuẩn giao tiếp RS422 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Hình 4.14 – Chuẩn giao tiếp RS485 Các đặc tính kỹ thuật Đặc tính Số thiết bị truyền Chiều dài cable cực đại Tốc độ truyền cực đại (từ 12 – 1200m) Điện áp cực đại tại ngõ ra thiết bị truyền Điện áp ngõ vào thiết bị nhận RS422 1 1200m 10Mps – 100Kbps -0.25V ÷ 6V RS485 32 1200m 10Mps – 100Kbps -7V ÷ 12V -10V ÷ 10V -7V ÷ 12V Đối với chuẩn RS232, khoảng cách truyền không cho phép đi xa nên khi muốn thực hiện truyền ở khoảng cách xa thì phải chuyển từ RS232 sang chuẩn RS485 để truyền đi và sau đó chuyển từ RS485 sang RS232 để máy tính có thể nhận dạng được. Sơ đồ mạch chuyển đổi từ RS232 sang RS485 và ngược lại mô tả như sau: Hình 4.15 – Chuyển đổi từ RS323 sang RS485 và ngược lại Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng 8.2. Giao tiếp cổng song song 8.2.1. Cấu trúc cổng song song Cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường dữ liệu bao gồm 5 chế độ hoạt động: - Chế độ tương thích (compatibility). - Chế độ nibble. - Chế độ byte. - Chế độ EPP (Enhanced Parallel Port). - Chế độ ECP (Extended Capabilities Port). 3 chế độ đầu tiên sử dụng port song song chuẩn (SPP – Standard Parallel Port) trong khi đó chế độ 4, 5 cần thêm phần cứng để cho phép hoạt động ở tốc độ cao hơn. Sơ đồ chân của máy in như sau: Cổng song song có ba thanh ghi có thể truyền dữ liệu và điều khiển máy in. Địa chỉ cơ sở của các thanh ghi cho tất cả cổng LPT (line printer) từ LPT1 đến LPT4 được lưu trữtrong vùng dữ liệu của BIOS. Thanh ghi dữ liệu được định vị ở offset 00h, thanh ghi trạng thái ở 01h, và thanh ghi điều khiển ở 02h. Thông thường, địa chỉ cơ sở của LPT1 là 378h, LPT2 là 278h, do đó địa chỉ của thanh ghi trạng thái là 379h hoặc 279h và địa chỉ thanh ghi điều khiển là 37Ah hoặc 27Ah. Tuy nhiên trong một số trường hợp, địa chỉ của cổng song song có thể khác do quá trình khởi động của BIOS. BIOS sẽ lưu trữ các địa chỉ này như sau: Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng 8.2.2 Giao tiếp với máy tính Quá trình giao tiếp với cổng song song dùng 2 chế độ: chế độ chuẩn SPP và chế độ mở rộng. Việc giao tiếp ở chế độ chuẩn mô tả như sau: Hình 5.1 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ chuẩn Ngoài ra, việc kết nối giữa 2 máy tính sử dụng cổng song song có thể dùng chế độ mở rộng, chế độ này cho phép giao tiếp với tốc độ cao hơn. Hình 5.2 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ mở rộng Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng 8.2.3 Giao tiếp thiết bị khác Quá trình giao tiếp với các thiết bị ngoại vi có thể thực hiện thông qua chế độ chuẩn. Để đọc dữ liệu, có thể dùng một IC ghép kênh MUX 2:1 74LS257 và dùng 4 bit trạng thái của cổng song song còn xuất dữ liệu thì sử dụng 8 đường dữ liệu D0 – D7. Hình 5.3 – Mạch giao tiếp đơn giản thông qua cổng máy in Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Giao diện: Hình 5.4 – Giao diện của chương trình giao tiếp với cổng máy in Chương trình giao tiếp trên VB sử dụng thư viện liên kết động để trao đổi dữ liệu với cổng máy in. Thư viện IO.DLL bao gồm các hàm sau: - Hàm PortOut: xuất 1 byte ra cổng - Port: địa chỉ cổng, Data: dữ liệu xuất - Hàm PortWordOut: xuất 1 word ra cổng - Hàm PortDWordOut: xuất 1 double word ra cổng - Hàm PortIn: nhập 1 byte từ cổng, trả về giá trị nhập - Hàm PortWordIn: nhập 1 word từ cổng - Hàm PortDWordIn: nhập 1 double word từ cổng Chương trình: Begin VB.Form Form1 Caption = "Printer Interface Example" ClientHeight = 4665 ClientLeft = 60 ClientTop = 345 ClientWidth Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 3585 LËp Tr×nh §iÒu KhiÓn HÖ Thèng LinkTopic = "Form1" ScaleHeight = 4665 ScaleWidth = 3585 StartUpPosition = 3 'Windows Default Begin VB.CommandButton cmdReceive Caption = "Receive" Height = 495 Left TabIndex Top Width = 1200 = 18 = 3960 = 1095 End Begin VB.CheckBox chkSW Height = 375 Index = 7 Left TabIndex Top Width = 1800 = 17 = 3480 = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 6 Left TabIndex Top Width Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 1800 = 16 = 3000 = 1575 LËp Tr×nh §iÒu KhiÓn HÖ Thèng End Begin VB.CheckBox chkSW Height = 375 Index = 5 Left TabIndex Top Width = 1800 = 15 = 2520 = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 4 Left TabIndex Top Width = 1800 = 14 = 2040 = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 3 Left TabIndex Top Width = 1800 = 13 = 1560 = 1575 End Begin VB.CheckBox chkSW Height Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 375 LËp Tr×nh §iÒu KhiÓn HÖ Thèng Index Left TabIndex Top Width = 2 = 1800 = 12 = 1080 = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 1 Left TabIndex Top Width = 1800 = 11 = 600 = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 0 Left TabIndex Top Width = 1800 = 10 = 120 = 1575 End Begin VB.CommandButton cmdExit Caption = "Exit" Height = 495 Left TabIndex Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 2400 = 9 LËp Tr×nh §iÒu KhiÓn HÖ Thèng Top Width = 3960 = 975 End Begin VB.CommandButton cmdSend Caption = "Send" Height = 495 Left TabIndex Top Width = 0 = 8 = 3960 = 1095 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED7" Height = 375 Index = 7 Left TabIndex Top Width = 240 = 7 = 3480 = 1095 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED6" Height = 375 Index = 6 Left Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 240 LËp Tr×nh §iÒu KhiÓn HÖ Thèng TabIndex Top Width = 6 = 3000 = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED5" Height = 375 Index = 5 Left TabIndex Top Width = 240 = 5 = 2520 = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED4" Height = 375 Index = 4 Left TabIndex Top Width = 240 = 4 = 2040 = 975 End Begin VB.Label lblLED BackStyle Caption Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 0 'Transparent = "LED3" LËp Tr×nh §iÒu KhiÓn HÖ Thèng Height = 375 Index = 3 Left TabIndex Top Width = 240 = 3 = 1560 = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED2" Height = 375 Index = 2 Left TabIndex Top Width = 240 = 2 = 1080 = 975 End Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED1" Height = 375 Index = 1 Left TabIndex Top Width End Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 240 = 1 = 600 = 975 LËp Tr×nh §iÒu KhiÓn HÖ Thèng Begin VB.Label lblLED BackStyle = 0 'Transparent Caption = "LED0" Height = 375 Index = 0 Left = 240 TabIndex Top = 0 = 120 Width = 975 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 7 Left = 840 Shape Top = 3 'Circle = 3480 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 6 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Left = 840 Shape Top = 3 'Circle = 3000 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 5 Left = 840 Shape Top = 3 'Circle = 2520 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 4 Left Shape Top Width End Lý Văn Đạt – Bộ môn Kỹ thuật điện tử = 840 = 3 'Circle = 2040 = 375 LËp Tr×nh §iÒu KhiÓn HÖ Thèng Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 3 Left = 840 Shape Top = 3 'Circle = 1560 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 2 Left = 840 Shape Top = 3 'Circle = 1080 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Index Left = 1 = 840 Shape Top = 3 'Circle = 600 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 0 Left Shape Top Width = 840 = 3 'Circle = 120 = 375 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False 'IO.DLL Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte 'Variable Private BA_LPT As Integer Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Private Sub cmdExit_Click() End End Sub Private Sub cmdReceive_Click() Dim n As Integer Dim n1 As Integer Dim i As Integer PortOut BA_LPT + 2, &H8 'SELECTIN = 1 PortOut BA_LPT + 2, 0 'SELECTIN = 0 n1 = PortIn(BA_LPT + 1) 'Doc 4 bit thap n1 = n1 / &H10 'Dich phai 4 bit PortOut BA_LPT + 2, 2 'AUTOFEED=1 n = PortIn(BA_LPT + 1) 'Doc 4 bit cao n = n And &HF0 n = n + n1 For i = 0 To 7 chkSW(i).Value = n Mod 2 If chkSW(i).Value = 0 Then chkSW(i).Caption = "Switch " & Str(i) & " off" Else chkSW(i).Caption = "Switch " & Str(i) & " on" End If n = Fix(n / 2) Next i End Sub Private Sub cmdSend_Click() Dim t As Integer Lý Văn Đạt – Bộ môn Kỹ thuật điện tử LËp Tr×nh §iÒu KhiÓn HÖ Thèng Dim i As Integer Dim s As String t=0 For i = 0 To 7 t = t + (2 ^ i) * (1 - shpLED(i).FillStyle) Next i PortOut BA_LPT, t PortOut BA_LPT, 1 'STROBE = 1 PortOut BA_LPT, 0 'STROBE = 0 End Sub Private Sub Form_Load() BA_LPT = &H378 PortOut BA_LPT + 2, 0 End Sub Private Sub lblLED_Click(Index As Integer) shpLED(Index).FillStyle = 1 - shpLED(Index).FillStyle End Sub Lý Văn Đạt – Bộ môn Kỹ thuật điện tử [...]... Microsoft cung cấp một trong những hệ thống trợ giúp tốt nhất cho các công cụ phát triển ứng dụng Trợ giúp nhạy với ngữ cảnh Tại một vị trí bất kỳ trong Visual basic, bạn nhấn phím F1, nút trợ giúp Nó sẽ kích hoạt hệ thống trợ giúp của Visual basic, nơi có thể giải thích hoặc đưa ra những lời khuyên, cũng như các đoạn chương trình mẫu Visual basic có hệ thống trợ giúp là hệ thông thư viện MSDN được sử... x 10 x 10 3.3.3 Mảng động Đây là mảng có kích thước thay đổi, đó là một trong những ưu điểm của mảng động vì nó giúp ta tiết kiệm tài nguyên hệ thống Ta có thể sử dụng một mảng có kích thước lớn trong một thời gian nào đó rồi xoá bỏ để trả lại vùng nhớ cho hệ thống Khai báo một mảng động bằng cách cho nó một danh sách không theo chiều nào cả Cú pháp: Dim () [As ] Ví dụ: Dim DynArray()... trúc dữ liệu trong VB Việc nắm bắt được các vấn đề này giúp cho việc tổ chức dữ liệu khi viết chương trình VB được hợp lý hơn Mục tiêu: Học xong chương này người học có khả năng: - Sử dụng và khai báo được kiểu dữ liệu chuỗi, kiểu ngày tháng, Kiểu động (Variant), Kiểu mảng - Trình bày được các hàm xử lý kiểu dữ liệu có cấu trúc - Vận dụng làm được các bài tập về kiểu dữ liệu 3.1 Biến và hằng 3.1.1 Biến... trợ giúp là hệ thông thư viện MSDN được sử dụng rộng rãi cho các công cụ phát triển của Microsoft để cung cấp truy cập đến sổ tay hướng dẫn sử dụng sản phẩm trực tuyến 2.3.7 Biên dịch đề án thành tập tin thực thi Sau khi đề án đã hoàn thành, người dùng có thể biên dịch thành tập tin thực thi được Cách tiến hành như sau: - Trước tiên ta cần chỉ cho VB6 biết phần chương trình nào sẽ được thực thi trước... các toán tử kết hợp lại với nhau theo quy tắc nhất định để tính toán ra một giá trị nào đó 3.1.4 Các loại phép toán Các phép toán số học: Thao tác trên các giá trị có kiểu dữ liệu số Các phép toán quan hệ Đây là các phép toán mà (TRUE hay FALSE) Phép toán = > < >= ... Project xuất hiện, ta chọn loại đề án cần thiết nhấn OK 5.2.3 Lưu đề án Khi lưu đề án tập tin đề án lưu trước tệp tin đề án Trong lần lưu đề án đầu tiên, Visual Basic đề nghị tên cho tệp tin, thường... xoá đề án (thực chất lưu đĩa) Khi tệp tin đề án bị xoá Visual Basic cập nhật thay đổi tập tin.vbp ta lưu đề án Do ta xoá tệp tin bên Visual Basic, tệp tin đề án không cập nhật Khi ta mở lại đề. .. tin đề án Nếu ta đặt tên cho đề án thông qua hộp thoại project properties, Visual Basic tự động đề nghị Project_Name.vbp Lúc này, ta đổi lại tên khác tuỳ thích, ví dụ SaveTest.vbp 5.2.4 Mở đề

Ngày đăng: 10/10/2015, 16:57

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w