14:31:59 BÀI 7: GIAO TIẾP NỐI TIẾP Serial InstrumentLab Bài 1 09:56:11 Serial Giao diện thiết kế: Textbox txtSend Textbox txtReceive - Nhấn Mở Port: mở port, sau chuyển thành Đóng Port Nếu nhấn Đóng Port, đóng port chuyển thành Mở Port - Nhấn Send: gởi nội dung txtSend port nối tiếp - Nếu có liệu đến port nối tiếp nội dung lên txtReceive Bài 2 09:56:11 Serial Quy trình sử dụng cổng nối tiếp: - Cấu hình cổng: tốc độ, tên cổng, … - Mở cổng - Truyền / nhận liệu - Đóng cổng Bài 3 09:56:11 Serial Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load For Each sp As String In My.Computer.Ports.SerialPortNames comboPort.Items.Add(sp) Next Try comboPort.SelectedIndex = Catch MessageBox.Show("Khơng có cổng COM" + vbCrLf + "Kết thúc chương trình", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error) End End Try End Sub Bài 4 Tìm tất cổng nối tiếp có máy tính: 09:56:11 For Each sp As String In My.Computer.Ports.SerialPortNames comboPort.Items.Add(sp) Next Nếu khơng có cổng nối tiếp kết thúc chương trình: Try comboPort.SelectedIndex = Catch MessageBox.Show("Khơng có cổng COM" + vbCrLf + "Kết thúc chương trình", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error) End End Try Bài 5 Try ' code ' Có thể dùng Exit Try để kết thúc khối lệnh khôi phục sau End Try 09:56:11 Catch ' Định nghĩa kiểu ngoại lệ hành động xử lý Finally ' Định nghĩa hành động cuối làm End Try Bài 6 Chọn cổng: 09:56:11 Private Sub comboPort_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboPort.SelectedIndexChanged SerialPort1.PortName = comboPort.Text End Sub Mở / đóng cổng: Private Sub bttOpenPort_Click(sender As Object, e As EventArgs) Handles bttOpenPort.Click If bttOpenPort.Text = "Mở port" Then If Not SerialPort1.IsOpen Then SerialPort1.Open() bttOpenPort.Text = "Đóng port" comboPort.Enabled = False Else MessageBox.Show(("Cổng sử dụng" + vbCrLf + "Chọn cổng khác", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)) End If Else SerialPort1.Close() bttOpenPort.Text = "Mở port" comboPort.Enabled = True End If Bài End Sub 7 09:56:11 Truyền liệu: Private Sub bttSend_Click(sender As Object, e As EventArgs) Handles bttSend.Click SerialPort1.Write(txtSend.Text) End Sub Nhận liệu: có liệu đến cổng nối tiếp đọc liệu gán vào textbox Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Rx = SerialPort1.ReadExisting Me.Invoke(New EventHandler(AddressOf SetText)) End Sub Private Sub SetText(ByVal sender As Object, ByVal e As System.EventArgs) txtReceive.Text &= Rx End Sub Bài 8 15:20:54 Kết thúc chương trình: Private Sub bttExit_Click(sender As Object, e As EventArgs) Handles bttExit.Click End End Sub Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed If SerialPort1.IsOpen Then SerialPort1.Close() End Sub Bài 9 15:54:14 Bổ sung thêm: - checkbox: cho phép gởi liên tục hay không - textbox: nhập thời gian delay lần truyền Bổ sung thêm: - textbox: cho phép nhập start string - textbox: cho phép nhập stop string - Cấu trúc gởi liệu: start_data_stop Bài 10 10 15:54:14 Xử lý liệu nhận: - Giả sử cấu trúc liệu nhận có dạng STARTdataSTOP, viết đoạn chương trình lấy liệu bỏ qua giá trị nhập không Xử lý liệu nhập: - Giả sử cấu trúc nhận có dạng STARTdata1data2STOP, data1 có chiều dài chứa thơng tin nhiệt độ, data2 có chiều dài chứa thơng tin độ ẩm, viết đoạn chương trình lấy liệu bỏ qua giá trị nhập không - VD: Nhận START290505STOP nhiệt độ = 29.0, độ ẩm = 50.5% Bài 11 11 15:20:54 Xây dựng chương trình theo yêu cầu: VB1: nhấn Send truyền chuỗi “START” để yêu cầu trình truyền đến VB2 VB2 gởi lại chuỗi “OK” để bắt đầu trình VB1 sau nhận chuỗi “OK” bắt đầu trình truyền kết thúc chuỗi “STOP” VB2 sau nhận “STOP” kết thúc truyền (lưu nội dung nhận vào file text) Bài 12 12 15:54:14 InstrumentLab Download: http://www.mitov.com/products/instrumentlab#downloads Cài đặt Bài 13 13 14:15:23 InstrumentLab Led: Led1.Value = True Led1.Value = False MultiLed: Bài 14 14 09:56:11 InstrumentLab MultiLed: MultiLed1.States(0).Value = True MultiLed1.States(1).Value = True MultiLed1.States(2).Value = True MultiLed1.States(3).Value = True Bài 15 15 09:56:11 InstrumentLab s1.Value.set_Values(1, True) s1.Value.set_Values(1, True) s1.Value.set_Values(3, True) Bài 16 16 14:47:02 InstrumentLab SegmentGauge: Bài 17 17 14:49:21 InstrumentLab SegmentGauge: SegmentGauge1.Value = 10 Bài 18 18 09:56:11 InstrumentLab Thermometer: Thermometer1.Max = 100 Thermometer1.Value = 60 Thermometer1.Min = Bài 19 19 09:56:11 InstrumentLab Thiết kế chương trình hình vẽ, liệu nhận từ cổng nối tiếp có dạng STARTdata1data2STOP, data1 có chiều dài chứa thơng tin nhiệt độ, data2 có chiều dài chứa thông tin độ ẩm START367456STOP Bài 20 20 10