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

20 603 1
BÁO cáo THỰC HÀNH lập TRÌNH hệ THỐNG  visual basic 6.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

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

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ểm sau: - Khoảngcáchtruyềnxahơntruyềnsong song; - Sốdâykếtnối ít; - Cóthểtruyềnkhôngdâydùnghồng ngoại; - CóthểghépnốivớiviđiềukhiểnhayPLC(ProgrammableLogic Device); - Chophépnối mạng; - Cóthểtháolắpthiếtbịtronglúcmáytínhđanglàm việc; - Cóthểcungcấpnguồnchocácmạchđiệnđơn giản. Cácthiếtbịghépnốichiathành2loại:DTE(DataTerminalEquipment)và DCE (DataCommunicationEquipment).DCElàcácthiếtbị trunggiannhưMODEMcònDTE là 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ắt tay (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ứclogic 0 ứ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ập mạch. ChuẩnRS-232chophéptruyềntín hiệuvới tốcđộđến20.000bpsnhưngnếu cáp truyềnđủngắncóthểlênđến115.200 bps. CácphươngthứcnốigiữaDTEvà DCE: - Đơncông(simplexconnection):dữliệuchỉđượctruyềntheo1 hướng. - Bánsongcông(half-duplex):dữliệutruyềntheo2hướng,nhưngmỗithời điểm chỉđượctruyềntheo1 hướng. - Songcông(full-duplex):sốliệuđượctruyềnđồngthờitheo2 hướng. ĐịnhdạngcủakhungtruyềndữliệutheochuẩnRS-232: Start D0 D1 D2 D3 D4 D5 D6 D7 P Stop 0 1 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: 1 Chiềudàicablecực đại 15m Tốcđộdữliệucực đại 20 Kbps Điệnápngõracực đại ± 25V Điệnápngõracó tải ±5Vđến± 15V Trởkháng tải 3Kđến 7K Điệnápngõ vào ± 15V Độnhạyngõ vào ± 3V Trởkhángngõ vào 3Kđến 7K Cáctốcđộtruyềndữliệuthôngdụngtrongcổngnốitiếplà:1200bps,4800 bps, 9600bpsvà 19200 bps. 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 5 GND - Ground: nối đất (0V) 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 2 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át và thugiốngnhau.KhicódữliệuđếnDTE,dữliệunàysẽđượcđưavàobộđệmvàtạo ngắ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ủa DTE2 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ên phải thựchiệnđiềukhiểnlưulượng.Quátrinhđiềukhiểnnàycóthểthựchiệnbằngphần mề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ếuDTE muố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ại CTS. 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,COM4 với cácđịachỉ như sau: Tên Địa chỉ Ngắt Vị trí chứa địa chỉ COM1 3F8h 4 0000h:0400h 3 COM2 2F8h 3 0000h:0402h COM3 3E8h 4 0000h:0404h COM4 2E8h 3 0000h:0406h GiaotiếpnốitiếptrongmáytínhsửdụngvimạchUARTvớicácthanhghicho trong bảng sau: Offset DLAB R/W Tên Chức năng 0 0 W THR TransmitterHoldingRegister(đệm truyền) 0 R RBR ReceiverBufferRegister(đệm thu) 1 R/W BRDL BaudRateDivisorLatch(sốchiabyte thấp) 1 0 R/W IER InterruptEnableRegister(chophép ngắt) 1 R/W BRDH Sốchiabyte cao 2 R IIR InterruptIdentificationRegister(nhậndạng ngắt) W FCR FIFOControl Register 3 R/W LCR LineControlRegister(điềukhiểnđường dây) 4 R/W MCR ModemControlRegister(điềukhiển MODEM) 5 R LSR LineStatusRegister(trạngtháiđường dây) 6 R MSR ModemStatusRegister(trạngthái MODEM) 7 R/W ScratchRegister(thanhghi tạm) 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ộtActiveX có sẵnlà MicrosoftCommControl.ActiveXnàydượclưu trữ trongfile MSCOMM32.OCX. Quátrìnhnàycóhaikhảnăngthựchiệnđiềukhiểntraođổithông tin: - Đ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: 4 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: Thuộc tính Mô tả CommPort Sốthứtựcổngtruyền thông Input Nhậnkýtựtừbộ đệm Output Xuấtkýtựracổngnối tiếp PortOpen Mở/đóng cổ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. 5 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à: 110 2400 38400 300 9600 (măc định) 56000 600 14400 188000 120 0 19200 256000 + P: kiểm tra chẵn lẻ, với các giá trị: Giá trị Mô tả 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. 6 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 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). Cú pháp: MSComm1.NullDiscard = True | False 7 - 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: Protocol Giá trị Mô tả ComNone 0 Không băt tay (mặc định) ComXon/Xoff 1 Bắt tay phần mềm (Xon/Xoff) ComRTS 2 Bắt tay phần cứng (RTS/CTS) 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: Sự kiện Giá trị Mô tả 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: Lỗi Giá 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 ComRxParity 1009 Lỗi Parity ComTxFull 1010 Tràn bộ đệm truyền 8 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. 9 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,…). 10 [...]... 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... 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: 13 a) Code lệnh: Private Sub Form_Load()... 14 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)... Sub Timer1_Timer() MSComm1.Output = Chr(GXSlider1.Value) End Sub Private Sub Timer2_Timer() MSComm1.Output = Chr(GXSlider2.Value) End Sub 16 Bài thực hành 4: Dùng các đối tượng Form, Label, Textbox, CommandButton, Vscrollbar, Time,r 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 : Sx1x2y1y2E trong đó kí tự S và E là 2 kí tự khởi đầu và kết thúc khung các kí tự x1 x2 mang... 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 11 Private Sub cmdSend_Click() MSComm1.Output = Text2.Text... khung các kí tự x1 x2 mang giá trị của 2 kênh tương tự , y1 y2 mang trạng thái ON, OFF của hai tiếp điểm Nếu chúng có kí tự 0 nghĩa là trạng thái OFF và kí tự 1 nghĩa là trạng thái ON a) Giao diện chương trình: 17 b) Code lệnh: Private Sub Form_load() Dim a, b As Integer With MSComm1 CommPort = 1 Settings = " 9600,n,8,1" RThreshold = 1 SThreshold = 1 PortOpen = True End With End Sub Private Sub GXSwitch1_Click() . tay. KhiDTE1cầntruyềndữliệuthìchoDTRtíchcựctácđộnglênDSRcủa DTE2 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ên phải thựchiệnđiềukhiểnlưulượng.Quátrinhđiềukhiểnnàycóthểthựchiệnbằngphần mềm hayphầncứng.Qu trình iềukhiểnbằngphầnmềmthựchiệnbằnghaikýtự. nghệ Windows kernel driver (WDM, WMI, Power Management, PnP,…). 10 - 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. 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

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan