Tải bản đầy đủ (.pdf) (2 trang)

Lập trình visual basic điều khiển phần cứng qua cổng COM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (142.94 KB, 2 trang )

Lập trình Visual Basic: Điều khiển phần cứng qua cổng COM
Bài toán lập trình điều khiển phần cứng qua cổng COM của máy tính (PC) luôn được nhiều người quan
tâm. Bài viết này trao đổi kinh nghiệm sử dụng Visual Basic 6.0 (VB) cho lập trình điều khiển cổng
COM.
VB 6.0 cung cấp một đối tượng điều khiển dưới dạng đóng gói ActiveX: Microsoft Comm Control 6.0
(MsComm). Để sử dụng được nó, yêu cầu tập tin mscomm32.ocx (chế độ 32 bit) phải có mặt tại thư
mục \Windows\System. Sử dụng MsComm cho phép can thiệp tới tất cả các đường tín hiệu điều khiển
“bắt tay” - RTS, CTS, DTR, DSR, DCD, RI và các đường thu/phát RxD/TxD của cổng COM. Đáng tiếc
MsComm chỉ hỗ trợ truyền dữ liệu dạng chuỗi. Trong kỹ thuật điều khiển phần cứng, các byte mã nhận
dạng kết thúc chuỗi, điều khiển dòng cần phải loại bỏ. Để giải quyết vấn đề này, có thể kết hợp một
số hàm xử lý chuỗi và ký tự của Visual Basic 6.0.
Để minh hoạ, tôi giới thiệu một chương trình nhỏ cho phép giao tiếp giữa PC và một hệ vi điều khiển
(VĐK, micro-controller) họ 89C51. PC sẽ lần lượt truyền từng byte mã nhị phân của chương trình dùng
để điều khiển hệ VĐK (đã được biên dịch) sang hệ VĐK và thu nhận lại chúng. Sau khi kết thúc truyền
file, PC sẽ phát một xung trên đường RTS để RESET hệ VĐK. Lưu ý: cần thiết lập tốc độ và khuôn
dạng khung dữ liệu phù hợp. (Trường hợp cụ thể với chương trình này: tốc độ baud 2400; 1 start bit; 8
bit data; 1 stop bit; không có bit parity).
Tạo một Form đơn giản chỉ gồm hai nút nhấn CmdTruyenfile và CmdExit. Trên Form bắt buộc phải đặt
một đối tượng điều khiển MsComm1. Dưới đây là mã nguồn.

Option Explicit
Dim ByteNumber, STRLength As Long
Dim FileData As Byte
Dim FileNumber, i As Integer
Dim STRReceive, FileName, Buffer As String

Private Sub Form_Load()
MSComm1.CommPort = 2 ‘ Chọn cổng COM.
MSComm1.Settings = “2400,N,8,1”
‘ Đặt các thông số cổng COM.
MSComm1.PortOpen = True


End Sub

Private Sub CmdTruyenfile_Click()
‘Gán đường dẫn và tên file cho
‘biến FileName.
FileName = “C:\ThuVien\Hienso.bin”
FileNumber = FreeFile
Open FileName For Binary Access Read As #FileNumber
‘Trình tự phát từng byte mã chương trình.
For ByteNumber = 1 To LOF(FileNumber)
Get #FileNumber, ByteNumber, FileData
MSComm1.Output = Chr$(FileData)
‘Trình tự thu từng byte mã chương trình.
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 1
STRReceive = MSComm1.Input
STRLength = Len(STRReceive)
For i = 1 To STRLength
Buffer = Mid(STRReceive, i, 1)
‘ Có thể xử lý byte vừa thu được

Next i
Next ByteNumber
Close FileNumber
‘Phát một xung trên đường RTS
‘của cổngCOM 2 để reset hệ VĐK
For i = 0 To 3900
Lập trình Visual Basic: Điều khiển phần cứng qua cổng COM
1 of 2

4/27/2014 10:12 AM
MSComm1.RTSEnable = True
Next
For i = 0 To 3900
MSComm1.RTSEnable = False
Next
‘Xoá các bộ đệm thu/phát.
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub

Private Sub CmdThoat_Click()
End
End Sub

MsComm còn cho phép sử dụng các đặc tính của sự kiện OnComm để bẫy các sự kiện và lỗi truyền
thông. Thực tế cho thấy trong những trường hợp đối tượng điều khiển không quá phức tạp, sử dụng kỹ
thuật này có thể gây dừng quá trình ngoài ý muốn. Bạn cũng có thể tham khảo bộ MSDN,
\MSDN\2001OCT\1033\vb98 .chm::/html/vbproVBTermVBTermvbp .htm, để tìm hiểu thêm về vấn đề
này.
Bạn có thể cải tiến và phát triển chương trình để phục vụ các mục đích điều khiển khác nhau. Tôi rất
vui lòng trao đổi thêm thông tin với những ai cùng quan tâm.
ThS. Lương Xuân Cương

Khoa Kỹ Thuật Cơ Sở
Trường Sỹ Quan CHKT Thông Tin
Đồng Đế, Nha Trang, Khánh Hòa
[In trang]

[Đóng trang]

© Tạp chí Thế Giới Vi Tính - PC World VN. CQ chủ quản: Sở Khoa Học và Công Nghệ TP.HCM
Giấy phép số 196/GP-BVHTT do Bộ Văn Hóa Thông Tin cấp ngày 27-06-2003
Tòa soạn: 126 Nguyễn Thị Minh Khai, Q.3 TP.HCM - ĐT: 84.8.39304324 - FAX: 84.8.39304338
Bản quyền của Thế Giới Vi Tính - PC World VN
Lập trình Visual Basic: Điều khiển phần cứng qua cổng COM
2 of 2
4/27/2014 10:12 AM

×