Giáo trình- Đo lường và điều khiển bằng máy tính- chương 8
Số trang: 25
Loại file: pdf
Dung lượng: 205.46 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 8: Lập trình giao tiếp nối tiếp
Ngôn ngữ QBasic
Lệnh khởi động cổng COM n:
Nội dung trích xuất từ tài liệu:
Giáo trình- Đo lường và điều khiển bằng máy tính- chương 8 8 Chöông LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP 8.1 LAÄP TRÌNH TRONG DOS: Ngoân ngöõ QBASIC Leänh khôûi ñoäng coång COM n: OPEN “COM n, [Baud], [Parity], [Data], [Stop]” for RANDOM as #m trong ñoù n = 1, 2, 3, 4; m = 1 ÷ 255 Ví duï: OPEN “COM 2, 9600, E, 7, 2” FOR RANDOM AS #1 Leänh xuaát ra moät chuoãi S $ PRINT #1 , S $ Leänh ñoïc vaøo moät chuoãi R $ INPUT # 1, R $ Ngoaøi ra coøn caùc leänh truy xuaát thanh ghi cuûa vi maïch UART Ngoân ngöõ Pascal vaø C Duøng caùc leänh truy xuaát thanh ghi nhö ôû chöông 7 Trong MS DOS ôû doøng leänh ñaùnh MODE COM n : 96, E, 7, 1 seõ môû COM n 8.2 LAÄP TRÌNH NGOÂN NGÖÕ VISUAL BASIC 6.0 Ngoân ngöõ Visual Basic coù module phaàn meàm MSCOMM.OCX phuïc vuï cho truyeàn thoâng, vôùi Visual Basic 4.0 laø MSCOMM16.OCX coøn vôùi Visual Basic 6.0 laø MSCOMM32.OCX Muoán caøi trình ñôn truyeàn thoâng vaøo thanh coâng cuï ta vaøo Project- Components – Controls choïn Microsoft Comm Control 6.0/ OK (Hình 8.1), bieåu töôïng hình ñieän thoaïi seõ hieän treân thanh coâng cuï. Coù theå nhaép chuoät keùp ñeå ñöa vaøo form cuûa chöông trình. Caùc böôùc treân coù theå laøm taét baèng phím Ctrl T. Thaønh phaàn Comm khi môùi ñöa vaøo form thöôøng ñöôïc gaùn teân MSComm1 cho coång Com1 vaø ta coù theå söûa teân hay thay ñoåi coång com tuøy yù. Chöông 8: LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP Trang 211 Caùc tính chaát chính cuûa trình ñôn laø Commport, DTREnable, EOFEnable, Handshaking, InBuffersize, InputLen, InputMode, NullDiscard, OutBuffersize, ParityReplace, Rthreshold, RTSEnable, Settmgs, Sthreshold… ñöôïc ñaët khi vieát chöông trình, coù theå thay ñoåi khi chaïy chöông trình baèng caùc leänh ñieàu khieån. Tính chaát CommPort Ñaët coång com ñöôïc söû duïng Object.CommPort [= Value] Value = 1 ñeán 16, maëc ñònh laø 1 khi khôûi ñoäng Visual Basic. Tính chaát naøy phaûi ñaët tröôùc khi môû coång, neáu bieåu thöùc trong ngoaëc khoâng coù thì traû veà soá coång com ñang hoaït ñoäng. Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006 Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 212 Ñaët caáu hình coång Object.Settings [= Value] Value = “BBBB, P, D, S” Gía trò maëc ñònh laø “9600, N, 8, 1”. Trong tröôøng hôïp ñaët sai giaù trò seõ baùo söï coá. Sau ñaây laø caùc giaù trò cho pheùp: • Baud rate: 110, 300, 600, 1200, 2400, 9600 (Default), 14400, 19200, 28800, 38400, 56000, 128000, 256000 • Parity bit: E (even), M (Mark), N (Default), O (odd), S (Space) • Data bit: 4, 5, 6, 7, 8 (Default) • Stop bit: 1, 1.5, 2 Ví duï: MSComm2. Settings = “9600, N, 8, 1” http://www.khvt.com Chöông 8: LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP Trang 213 Môû coång Object.PortOpen [= True/ False] Value = True : môû coång Value = False : ñoùng coång vaø xoùa boä ñeäm truyeàn thu, Coång töï ñoäng ñoùng khi keát thuùc chöông trình aùp duïng. Nhaäp döõ lieäu String$= Object.Input Döõ lieäu chuoãi ôû boä ñeäm thu ñöôïc ñoïc vaøo bieán String$ . Lieân quan ñeán ñoïc döõ lieäu coù caùc leänh sau: Object.InputLen [= numByte%] InputLen: qui ñònh soá kyù töï ñoïc bôûi Input. Choïn InputLen = 0 seõ cho ñoïc toaøn boä vuøng boä ñeäm. Object.InbufferSize = [numbyte%] InBufferSize ñaët vaø traû veà kích thöôùc theo byte cuûa ñeäm thu, maëc ñònh laø 1024. Object.InbufferCount [= Count%] InbufferCount: cho bieát soá kyù hieäu coù trong boä ñeäm nhaän. Xoùa boä ñeäm baèng caùch cho InbufferCount = 0 Object.InputMode [= value] InputMode: cho bieát loaïi döõ lieäu laø vaên baûn hay nhò phaân Value = 0 : ComInputModeText Value = 1 : ComInputModeBinary Ví duï: Dim Buffer as Variant Dim Arr() as Byte MSComm1.CommPort = 1 MSComm1.PortOpen = True ‘Set InputMode to read binary data MSComm1.InputMode = comInputModeBinary Do Until MSComm1.InBufferCount > 10 DoEvents Loop Buffer = MSComm1.Input ' Assign to byte array for processing Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006 Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 214 Arr = Buffer Xuaát döõ lieäu Object.Output [= value] Xuaát chuoãi kyù töï hay chuoãi nhò phaân ra coång COM. Gioáng nhö nhaäp döõ lieäu ta coù caùc leänh hoã trôï. OutBufferSize: ñaët vaø traû laïi kích thöôùc boä ñeäm truyeàn OutBufferCount: traû laïi soá kyù töï trong boä ñeäm truyeàn. Ví duï: gôûi kyù töï nhaán phím Private Sub Form_KeyPress (KeyAscii As Integer) Dim Buffer as Variant MSComm1.CommPort = 1 MSComm1.PortOpen = True Buffer = Chr$(KeyAscii) MSComm1.Output = Buffer End Sub Ví duï: ‘ gôûi chuoãi kyù töï MsComm1.Output = This is a text string” ‘ gôûi soá nhò phaân Dim Out( ) As Byte MsComm1.Output = Out Gôûi tín hieäu Break object.Break [= True/False] Ñoïc chaân DCD inCD= object. CDHolding neáu inCD True thì DCD ôû möùc cao, neáu False DCD ôû möùc thaáp. Ñaët thôøi gian chôø soùng mang object. CDTimeout [= milliseconds] Chôø khoaûng thôøi gian cho DCD ôû möùc cao, neáu heát thôøi gian maø CDHolding = false thì taïo söï kieän onComm CDTO (carrier detect Timeout Error). Ñoïc CTS http://www.khvt.com Chöông 8: LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP Trang 215 object. CTS Holding True: möùc 1, False: möùc 0 Ñaët thôøi gian chôø CTS Khi DTE gôûi RTS thì modem phaûi gôûi traû laïi CTS, tính chaát object. CTSTi ...
Nội dung trích xuất từ tài liệu:
Giáo trình- Đo lường và điều khiển bằng máy tính- chương 8 8 Chöông LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP 8.1 LAÄP TRÌNH TRONG DOS: Ngoân ngöõ QBASIC Leänh khôûi ñoäng coång COM n: OPEN “COM n, [Baud], [Parity], [Data], [Stop]” for RANDOM as #m trong ñoù n = 1, 2, 3, 4; m = 1 ÷ 255 Ví duï: OPEN “COM 2, 9600, E, 7, 2” FOR RANDOM AS #1 Leänh xuaát ra moät chuoãi S $ PRINT #1 , S $ Leänh ñoïc vaøo moät chuoãi R $ INPUT # 1, R $ Ngoaøi ra coøn caùc leänh truy xuaát thanh ghi cuûa vi maïch UART Ngoân ngöõ Pascal vaø C Duøng caùc leänh truy xuaát thanh ghi nhö ôû chöông 7 Trong MS DOS ôû doøng leänh ñaùnh MODE COM n : 96, E, 7, 1 seõ môû COM n 8.2 LAÄP TRÌNH NGOÂN NGÖÕ VISUAL BASIC 6.0 Ngoân ngöõ Visual Basic coù module phaàn meàm MSCOMM.OCX phuïc vuï cho truyeàn thoâng, vôùi Visual Basic 4.0 laø MSCOMM16.OCX coøn vôùi Visual Basic 6.0 laø MSCOMM32.OCX Muoán caøi trình ñôn truyeàn thoâng vaøo thanh coâng cuï ta vaøo Project- Components – Controls choïn Microsoft Comm Control 6.0/ OK (Hình 8.1), bieåu töôïng hình ñieän thoaïi seõ hieän treân thanh coâng cuï. Coù theå nhaép chuoät keùp ñeå ñöa vaøo form cuûa chöông trình. Caùc böôùc treân coù theå laøm taét baèng phím Ctrl T. Thaønh phaàn Comm khi môùi ñöa vaøo form thöôøng ñöôïc gaùn teân MSComm1 cho coång Com1 vaø ta coù theå söûa teân hay thay ñoåi coång com tuøy yù. Chöông 8: LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP Trang 211 Caùc tính chaát chính cuûa trình ñôn laø Commport, DTREnable, EOFEnable, Handshaking, InBuffersize, InputLen, InputMode, NullDiscard, OutBuffersize, ParityReplace, Rthreshold, RTSEnable, Settmgs, Sthreshold… ñöôïc ñaët khi vieát chöông trình, coù theå thay ñoåi khi chaïy chöông trình baèng caùc leänh ñieàu khieån. Tính chaát CommPort Ñaët coång com ñöôïc söû duïng Object.CommPort [= Value] Value = 1 ñeán 16, maëc ñònh laø 1 khi khôûi ñoäng Visual Basic. Tính chaát naøy phaûi ñaët tröôùc khi môû coång, neáu bieåu thöùc trong ngoaëc khoâng coù thì traû veà soá coång com ñang hoaït ñoäng. Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006 Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 212 Ñaët caáu hình coång Object.Settings [= Value] Value = “BBBB, P, D, S” Gía trò maëc ñònh laø “9600, N, 8, 1”. Trong tröôøng hôïp ñaët sai giaù trò seõ baùo söï coá. Sau ñaây laø caùc giaù trò cho pheùp: • Baud rate: 110, 300, 600, 1200, 2400, 9600 (Default), 14400, 19200, 28800, 38400, 56000, 128000, 256000 • Parity bit: E (even), M (Mark), N (Default), O (odd), S (Space) • Data bit: 4, 5, 6, 7, 8 (Default) • Stop bit: 1, 1.5, 2 Ví duï: MSComm2. Settings = “9600, N, 8, 1” http://www.khvt.com Chöông 8: LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP Trang 213 Môû coång Object.PortOpen [= True/ False] Value = True : môû coång Value = False : ñoùng coång vaø xoùa boä ñeäm truyeàn thu, Coång töï ñoäng ñoùng khi keát thuùc chöông trình aùp duïng. Nhaäp döõ lieäu String$= Object.Input Döõ lieäu chuoãi ôû boä ñeäm thu ñöôïc ñoïc vaøo bieán String$ . Lieân quan ñeán ñoïc döõ lieäu coù caùc leänh sau: Object.InputLen [= numByte%] InputLen: qui ñònh soá kyù töï ñoïc bôûi Input. Choïn InputLen = 0 seõ cho ñoïc toaøn boä vuøng boä ñeäm. Object.InbufferSize = [numbyte%] InBufferSize ñaët vaø traû veà kích thöôùc theo byte cuûa ñeäm thu, maëc ñònh laø 1024. Object.InbufferCount [= Count%] InbufferCount: cho bieát soá kyù hieäu coù trong boä ñeäm nhaän. Xoùa boä ñeäm baèng caùch cho InbufferCount = 0 Object.InputMode [= value] InputMode: cho bieát loaïi döõ lieäu laø vaên baûn hay nhò phaân Value = 0 : ComInputModeText Value = 1 : ComInputModeBinary Ví duï: Dim Buffer as Variant Dim Arr() as Byte MSComm1.CommPort = 1 MSComm1.PortOpen = True ‘Set InputMode to read binary data MSComm1.InputMode = comInputModeBinary Do Until MSComm1.InBufferCount > 10 DoEvents Loop Buffer = MSComm1.Input ' Assign to byte array for processing Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006 Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 214 Arr = Buffer Xuaát döõ lieäu Object.Output [= value] Xuaát chuoãi kyù töï hay chuoãi nhò phaân ra coång COM. Gioáng nhö nhaäp döõ lieäu ta coù caùc leänh hoã trôï. OutBufferSize: ñaët vaø traû laïi kích thöôùc boä ñeäm truyeàn OutBufferCount: traû laïi soá kyù töï trong boä ñeäm truyeàn. Ví duï: gôûi kyù töï nhaán phím Private Sub Form_KeyPress (KeyAscii As Integer) Dim Buffer as Variant MSComm1.CommPort = 1 MSComm1.PortOpen = True Buffer = Chr$(KeyAscii) MSComm1.Output = Buffer End Sub Ví duï: ‘ gôûi chuoãi kyù töï MsComm1.Output = This is a text string” ‘ gôûi soá nhò phaân Dim Out( ) As Byte MsComm1.Output = Out Gôûi tín hieäu Break object.Break [= True/False] Ñoïc chaân DCD inCD= object. CDHolding neáu inCD True thì DCD ôû möùc cao, neáu False DCD ôû möùc thaáp. Ñaët thôøi gian chôø soùng mang object. CDTimeout [= milliseconds] Chôø khoaûng thôøi gian cho DCD ôû möùc cao, neáu heát thôøi gian maø CDHolding = false thì taïo söï kieän onComm CDTO (carrier detect Timeout Error). Ñoïc CTS http://www.khvt.com Chöông 8: LAÄP TRÌNH GIAO TIEÁP NOÁI TIEÁP Trang 215 object. CTS Holding True: möùc 1, False: möùc 0 Ñaët thôøi gian chôø CTS Khi DTE gôûi RTS thì modem phaûi gôûi traû laïi CTS, tính chaát object. CTSTi ...
Tìm kiếm theo từ khóa liên quan:
giáo trình đại học công nghệ thông tinh công nghệ máy tính hệ thống thông tin cơ sở dữ liệuGợi ý tài liệu liên quan:
-
Giáo trình phân tích một số loại nghiệp vụ mới trong kinh doanh ngân hàng quản lý ngân quỹ p5
7 trang 470 0 0 -
62 trang 401 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 376 6 0 -
Bài tập thực hành môn Phân tích thiết kế hệ thống thông tin
6 trang 314 0 0 -
MARKETING VÀ QUÁ TRÌNH KIỂM TRA THỰC HIỆN MARKETING
6 trang 294 0 0 -
13 trang 290 0 0
-
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 289 0 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 283 0 0 -
Tài liệu học tập Tin học văn phòng: Phần 2 - Vũ Thu Uyên
85 trang 254 1 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 243 0 0