Tải bản đầy đủ (.doc) (20 trang)

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

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 (396.18 KB, 20 trang )

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

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

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

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

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
- 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
11
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
12
.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:

13
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
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) 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()
15
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
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 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()
If GXSwitch1.SwitchOn = False Then
a = 0
18
Else
a = 1
End If
End Sub
Private Sub GXSwitch2_Click()

If GXSwitch2.SwitchOn = False Then
b = 0
Else
b = 1
End If
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
x = MSComm1.Input
Text1.Text = Asc(Mid(x, 1, 1))
Text2.Text = Asc(Mid(x, 2, 1))
Text3.Text = Asc(Mid(x, 3, 1))
Text6.Text = Asc(Mid(x, 6, 1))
If Asc(Mid(x, 4, 1)) = 1 Then
Text4.Text = " ON"
Else
Text4.Text = " OFF"
End If
If Asc(Mid(x, 5, 1)) = 1 Then
Text5.Text = " ON"
Else
Text5.Text = " OFF"
End If
End If
End Sub
19
Private Sub Timer1_Timer()
MSComm1.Output = "S" + Chr(GXSlider1.Value) + Chr(GXSlider2.Value)
+Chr(a) + Chr(b) + "E"
End Sub

20

×