1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG visual basic 6.0

20 606 1

Đ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 20
Dung lượng 439 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG

Trang 1

I Lý thuyết chung về cổng COM

1 Cổng nối tiếp (cổng COM)

Cổngnốitiếpđượcsử dụngđểtruyềndữliệuhaichiềugiữamáytínhvàngoạivi, có cácưuđiểmsau:

- Khoảngcáchtruyềnxahơntruyềnsongsong;

- Sốdâykếtnốiít;

- Cóthểtruyềnkhôngdâydùnghồngngoại;

- CóthểghépnốivớiviđiềukhiểnhayPLC(ProgrammableLogicDevice);

- Chophépnốimạng;

- Cóthểtháolắpthiếtbịtronglúcmáytínhđanglàmviệc;

- Cóthểcungcấpnguồnchocácmạchđiệnđơngiản

Cácthiếtbịghépnốichiathành2loại:DTE(DataTerminalEquipment)vàDCE

(DataCommunicationEquipment).DCElàcácthiếtbị

trunggiannhưMODEMcònDTElà

cácthiếtbịtiếpnhậnhaytruyềndữliệunhưmáytính,PLC,viđiềukhiển,…Việctraođổi tínhiệuthôngthườngqua2 chânRxD(nhận)vàTxD(truyền).Cáctínhiệucònlạicóchức nănghỗtrợđểthiếtlậpvàđiềukhiểnquátrìnhtruyền,đượcgọilà cáctín hiệubắttay (handshake).Ưuđiểmcủaquátrìnhtruyềndùngtínhiệubắttaylà cóthểkiểmsoátđường truyền

Tínhiệutruyền theochuẩn RS-232 củaEIA (Electronics Industry Associations) ChuẩnRS-232quyđịnhmứclogic1ứngvớiđiệnáptừ-3Vđến-25V(mark),mứclogic0 ứngvớiđiệnáptừ3Vđến25V(space)vàcó khảnăngcungcấpdòngtừ10mAđến20 mA Ngoàira,tấtcảcácngõrađềucóđặctínhchốngchậpmạch

ChuẩnRS-232chophéptruyềntín hiệuvới tốcđộđến20.000bpsnhưngnếucáp truyềnđủngắncóthểlênđến115.200bps

CácphươngthứcnốigiữaDTEvàDCE:

- Đơncông(simplexconnection):dữliệuchỉđượctruyềntheo1hướng

- Bánsongcông(half-duplex):dữliệutruyềntheo2hướng,nhưngmỗithờiđiểm

chỉđượctruyềntheo1hướng

- Songcông(full-duplex):sốliệuđượctruyềnđồngthờitheo2hướng

ĐịnhdạngcủakhungtruyềndữliệutheochuẩnRS-232:

Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V) Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường truyền

Các đặc tính kỹ thuật của chuẩn RS-232 như sau:

Trang 2

Chiềudàicablecựcđại 15m Tốcđộdữliệucựcđại 20Kbps Điệnápngõracựcđại ±25V Điệnápngõracótải ±5Vđến±15V

Trởkhángngõvào 3Kđến7K

Cáctốcđộtruyềndữliệuthôngdụngtrongcổngnốitiếplà:1200bps,4800bps,9600bpsvà 19200bps

CổngCOMcóhailoại:đầunốiDB25(25chân)vàđầunốiDB9(9chân), hiện nay được

sử dụng phổ biến hơn cả là loại 9 chân

Hình 1 – Sơ đồ chân cổng COM loại DB9

Ýnghĩacủacácchân đượcmôtảnhưsau:

Chân Tín hiệu Hướng

truyền

Mô tả

1 DCD DCE  DTE Data Carrier detect: DCE phát hiện sóng

mang

2 RxD DCE  DTE Received Data: dữ liệu nhận

3 TxD DTE  DCE Transmitted Data: dữ liệu truyền

4 DTR DTE  DCE Data Terminal ready: DTE sẵn sàng làm

việc

6 DSR DCE  DTE Data set ready: DCE sẵn sàng làm việc

7 RTS DTE  DCE Request to send: DTE yêu cầu truyền dữ

liệu

8 CTS DCE  DTE Clear to send: DCE sẵn sàng nhận dữ liệu

9 RI DCE  DTE Ring Indicator: báo chuông

Trang 3

2 Truyền thông giữa hai nút.

Các sơ đồ khi kết nối dùng cổng nối tiếp:

Hình 2 – Kết nối đơn giản trong truyền thông nối tiếp.

Khithựchiệnkếtnốinhưtrên,quátrìnhtruyềnphảibảođảmtốcđộởđầuphátvà

thugiốngnhau.KhicódữliệuđếnDTE,dữliệunàysẽđượcđưavàobộđệmvàtạongắt.Ngo

ài ra khi thực hiện kết nối giữa 2 DTE, ta còn dùng sơ đồ sau:

Hình 3 –Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay.

KhiDTE1cầntruyềndữliệuthìchoDTRtíchcựctácđộnglênDSRcủaDTE2

chobiếtsẵnsàngnhậndữliệuvàchobiếtđãnhậnđượcsóngmangcủaMODEM(ảo).Sau đó,DTE1tíchcựcchânRTSđểtácđộngđếnchânCTScủaDTE2chobiếtDTE1cóthể

nhậndữliệu.KhithựchiệnkếtnốigiữaDTEvà DCE,do tốcđộ truyềnkhácnhaunênphải thựchiệnđiềukhiểnlưulượng.Quátrinhđiềukhiểnnàycóthểthựchiệnbằngphầnmềm hayphầncứng.Quátrìnhđiềukhiểnbằngphầnmềmthựchiệnbằnghaikýtự XonvàXoff KýtựXonđượcDCEgửiđikhirảnh(cóthểnhậndữliệu).NếuDCEbậnthìsẽgửikýtự

Xoff.QuátrìnhđiềukhiểnbằngphầncứngdùnghaichânRTSvà CTS.NếuDTEmuốn truyềndữliệuthìsẽ gửiRTSđểyêucầutruyền,DCEnếucó khảnăngnhậndữliệu(đang rảnh)thìgửilạiCTS

3 Truy xuất trực tiếp thông qua cổng.

Cáccổngnốitiếptrongmáytínhđượcđánhsốlà COM1,COM2,COM3,COM4với cácđịachỉ nhưsau:

Tên Địa chỉ Ngắt Vị trí chứa địa chỉ

Trang 4

COM2 2F8h 3 0000h:0402h

GiaotiếpnốitiếptrongmáytínhsửdụngvimạchUARTvớicácthanhghichotrong bảngsau:

0

0 W THR TransmitterHoldingRegister(đệmtruyền)

0 R RBR ReceiverBufferRegister(đệmthu)

1 R/W BRDL BaudRateDivisorLatch(sốchiabytethấp)

1 0 R/W IER InterruptEnableRegister(chophépngắt)

1 R/W BRDH Sốchiabytecao

2 R IIR InterruptIdentificationRegister(nhậndạngngắt)

W FCR FIFOControlRegister

3 R/W LCR LineControlRegister(điềukhiểnđườngdây)

5 R LSR LineStatusRegister(trạngtháiđườngdây)

Các thanh ghi này có thể truy xuất trực tiếp kết hợp với địa chỉ cổng (ví dụ như thanh ghi cho phép ngắt của COM1 có địa chỉ là BACOM1 + 1 = 3F9h)

4 Truyền thông nối tiếp dùng ActiveX.

4.1 Mô tả:

ViệctruyềnthôngnốitiếptrênWindowsđượcthựchiệnthôngquamộtActiveXcó sẵnlà MicrosoftCommControl.ActiveXnàydượclưu trữ trongfile MSCOMM32.OCX

Quátrìnhnàycóhaikhảnăngthựchiệnđiềukhiểntraođổithôngtin:

- Điều khiển sự kiện:Truyền thông điều khiển sự kiện là phương pháp tốt nhất trong quá trình điều khiển việc trao đổi thông tin Quá trình điều khiển thực hiện thông qua sự kiện OnComm

- Hỏi vòng:Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự kiện nào xảy ra hay không Thông thường phương pháp này sử dụng cho các chương trình nhỏ

ActiveX MSComm được bổ sung vào một Visual Basic Project thông qua menu Project  Components:

Trang 5

Hình 4 –Bổ sung đối tượng MSComm vào VBP

Cácthuộctínhcơbản của MSComm đượcmôtảnhưsau:

CommPort Sốthứtựcổngtruyềnthông

Input Nhậnkýtựtừbộđệm

Output Xuấtkýtựracổngnốitiếp

PortOpen Mở/đóngcổng

Settings Xácđịnhcácthamsốtruyền

Hình 06: Các thuộc tính của đối tượng MSComm

4.2 Các thuộc tính:

- Settings:Xác định các tham số cho cổng nối tiếp

Trang 6

Cú pháp:

MSComm1.Settings = ParamString

Trong đó: MSComm1: là tên đối tượng

ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S"

+ BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là:

300 9600 (măc định) 56000

+ P: kiểm tra chẵn lẻ, với các giá trị:

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 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)

- CommPort:Xác định số thứ tự của cổng truyền thông

Cú pháp:

MSComm1.CommPort = PortNumber

Trong đó: PortNumber là giá trị nằm trong khoảng từ 1 đến 99, mặc định là 1.

- 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

- 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

Trang 7

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

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

- 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:

MSComm1.RTSEnable = True | False

- NullDiscard: Cho phép nhận các ký tự NULL (rỗng) hay không (= True: cấm)

Trang 8

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 (Protocol) truyền bao gồm:

ComNone 0 Không băt tay (mặc định)

ComXon/Xoff 1 Bắt tay phần mềm (Xon/Xoff)

ComRTSXon/Xoff 3 Bắt tay phần cứng và phàn mềm

- CommEvent: Trả lại các lỗi truyền thông hay sự kiện xảy ra tại cổng nối tiếp.

Các sự kiện:

ComEvSend 1 Đã truyền ký tự

ComEvReceive 2 Khi có ký tự trong bộ đệm nhận

ComEvCTS 3 Có thay đổi trên CTS (Clear To Send)

ComEvDSR 4 Có thay đổi trên DSR (Data Set

Ready) ComEvCD 5 Có thay đổi trên CD (Carrier Detect)

ComEvRing 6 Phát hiện chuông

ComEvEOF 7 Nhận ký tự kết thúc file

Các lỗi truyền thông:

trị

Mô tả

ComBreak 1001 Nhận tín hiệu Break

ComCTSTO 1002 Clear To Send Timeout

ComFrame 1004 Lỗi khung

ComOver 1006 Phần cứng không đọc ký tự trước khi gửi ký

tự kế ComCDTO 1007 Carrier Detect Timeout

ComRxOver 1008 Tràn bộ đệm nhận

Trang 9

ComRxParity 1009 Lỗi Parity

ComTxFull 1010 Tràn bộ đệm truyền

4.3 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

Trang 10

II Giới thiệu phần mềm tạo cổng COM ảo “Virtual Serial Port Driver”.

1 Giao diện chương trình

2 Chức năng

- Không giới hạn số lượng cặp cổng nối tiếp ảo được tạo ra

- Cổng nối tiếp ảo hoàn toàn giống với cổng thực nên các ứng dụng không thể nhận biết được sự khác biệt

- Link giữa các cổng nối tiếp ảo nhanh hơn nhiều so với kết nối dây cáp null-modem thực và chỉ phụ thuộc vào tốc độ bộ xử lý (tốc độ truyền tải trung bình khoảng 5.5 Mbytes/s)

- Dòng tín hiệu có sẵn gồm: DTR/DSR/CTS/RTS/DCD/RI

- Hỗ trợ kiểm soát HandFlow (Hardware và Xon/Xoff)

- Có thể đặt tên cho cổng nối tiếp theo ý muốn, thậm chí giống với tên cổng thực

- Các cổng có thể được tự động tạo lại khi khởi động lại hệ thống (trước khi đăng nhập user)

- Có thể thay đổi tên của cổng nối tiếp ảo được tạo bởi VSPD hiển thị trong Device Manager

- Hỗ trợ công nghệ Windows kernel driver (WDM, WMI, Power Management, PnP,…)

Trang 11

- Không cần khởi động lại sau khi cài đặt VSPD, tạo và thiết lập cấu hình cho cổng nối tiếp ảo

III Nội dung thực hành

Bài thực hành 1:Dùng các đối tượng Form, Label, Textbox, CommandButton,

Vscrollbar, Timer, MSComm để thiết kế chương trình thu phát một thông số qua cổng COM với yêu cầu: giá trịđược truyền đi từ Textbox này sang Textbox kia sau mỗi lần click nút bấm, các đèn báo hiệu thông báo trạng thái kết nối của cổng COM và thông báo khi có tín hiệu được truyền đi.

a) Giao diện chương trình:

b) Code lệnh:

Private Sub cmdClear_Click()

Text1.Text = ""

GXLight2.LampOn = False

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Trang 12

Private Sub cmdSend_Click()

MSComm1.Output = Text2.Text GXLight2.LampOn = True

End Sub

Private Sub Form_Load()

cmdSend.Caption = "&Send"

Text1.Text = ""

Text2.Text = ""

Text1.Enabled = False

cmdExit.Caption = "&Exit"

With MSComm1

.Settings = "9600,N,8,1"

.CommPort = 1

.RThreshold = 1

.SThreshold = 0

.InputMode = comInputModeText InputLen = 0

.Handshaking = comNone

.InBufferSize = 1024

.OutBufferSize = 1024

If PortOpen = False Then

PortOpen = True

End If

End With

With MSComm2

.Settings = "9600,N,8,1"

.CommPort = 2

.RThreshold = 1

.SThreshold = 0

.InputMode = comInputModeText InputLen = 0

Trang 13

.Handshaking = comNone

.InBufferSize = 1024

.OutBufferSize = 1024

If PortOpen = False Then

PortOpen = True

End If

End With

End Sub

Private Sub MSComm2_OnComm()

Dim Buffer As Variant

If MSComm2.CommEvent = comEvReceive Then

Text1.Text = Text1.Text + MSComm2.Input

End If

End Sub

Private Sub Timer1_Timer()

If MSComm1.PortOpen = True Then

GXLight1.LampOn = True

Else

GXLight1.LampOn = False

End If

End Sub

Bài thực hành 2: Dùng các đối tượng Form, Label, Textbox, CommandButton,

Vscrollbar, Timer, MSComm để thiết kế chương trình thu phát một thông số qua cổng COM1 với yêu cầu: thông số phát đi có giá trị từ 0 đến 200 được tạo ra từ đối tượng Vscrollbar, thông số được chuyển thành khoảng giá trị từ 0 tới 100.

a) Giao diện chương trình:

Trang 14

a) Code lệnh:

Private Sub Form_Load()

MSComm1.CommPort = 1

MSComm1.Settings = "9600,N,8,1"

MSComm1.PortOpen = True

MSComm2.CommPort = 2

MSComm2.Settings = "9600,N,8,1"

MSComm2.PortOpen = True

End Sub

Private Sub MSComm2_OnComm()

If MSComm2.CommEvent = comEvReceive Then Text1.Text = Str(Asc(MSComm2.Input) * 0.5) End If

End Sub

Private Sub Timer1_Timer()

MSComm1.Output = Chr(GXSlider1.Value) End Sub

Trang 15

Bài thực hành 3: Dùng các đối tượng Form, Label, Textbox, CommandButton,

Vscrollbar, Timer, MSComm để thiết kế chương trình thu phát một thông số qua cổng COM2 với yêu cầu:Khung tin gồm một kí tự khởi đầu, một kí tự kết thúc 4 ký

tự mang thông số trong đó 2 thông số đầu mang trạng thái của hai nút ấn, 2 thông

số sau chứa giá trị của 2 Vsrollbar trong khoảng 0 đến 200.

a) Giao diện chương trình:

b) Code lệnh:

Private Sub Form_Load()

MSComm1.CommPort = 1

MSComm1.Settings = "9600,N,8,1"

MSComm1.PortOpen = True

MSComm2.CommPort = 2

MSComm2.Settings = "9600,N,8,1"

MSComm2.PortOpen = True

End Sub

Private Sub GXSwitch1_Click()

Trang 16

If GXSwitch1.SwitchOn = True Then

Text1.Text = "1"

Else

Text1.Text = "0"

End If

End Sub

Private Sub GXSwitch2_Click()

If GXSwitch2.SwitchOn = True Then

Text4.Text = "1"

Else

Text4.Text = "0"

End If

End Sub

Private Sub MSComm2_OnComm()

If MSComm2.CommEvent = comEvReceive Then Text2.Text = Str(Asc(Chr(GXSlider1.Value))) Text3.Text = Str(Asc(Chr(GXSlider2.Value))) End If

End Sub

Private Sub Timer1_Timer()

MSComm1.Output = Chr(GXSlider1.Value) End Sub

Private Sub Timer2_Timer()

MSComm1.Output = Chr(GXSlider2.Value) End Sub

Ngày đăng: 12/05/2015, 22:05

HÌNH ẢNH LIÊN QUAN

Hình 1 – Sơ đồ chân cổng COM loại DB9 - BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG  visual basic 6.0
Hình 1 – Sơ đồ chân cổng COM loại DB9 (Trang 2)
Hình 2 – Kết nối đơn giản trong truyền thông nối tiếp. - BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG  visual basic 6.0
Hình 2 – Kết nối đơn giản trong truyền thông nối tiếp (Trang 3)
Hình 3 –Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay. - BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG  visual basic 6.0
Hình 3 –Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay (Trang 3)
Hình 4 –Bổ sung đối tượng MSComm vào VBP - BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG  visual basic 6.0
Hình 4 –Bổ sung đối tượng MSComm vào VBP (Trang 5)
Hình 06: Các thuộc tính của đối tượng MSComm - BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG  visual basic 6.0
Hình 06 Các thuộc tính của đối tượng MSComm (Trang 5)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w