3.2.1 T ng quan v Visual Basic :
Visual Basic là ngơn ng l p trình trên mơi tr ng Windows ra đ i s m nh t, và đã th c s t o nên m t cu c cách m ng trong cơng ngh ph n m m . Cho nên khi phát hành Visual Basic 1.0 vào n m 1991, ơng Bill Gates, c u ch t ch hãng Microsoft đã g i Visual Basic là m t s n ph m “đáng n ”, cịn các nhân v t n i ti ng khác trong gi i cơng ngh ph n m m c ng khơng ti c l i khen ng i cơng c l p trình tr c quan này.N u đã t ng c m th y th c s thích thú khi chuy n t vi c s d ng h đi u hành MS-DOS sang Windows thì ta c ng d hi u nh ng l i khen ng i này. Tr c đây, khi làm vi c trong mơi tr ng DOS, khơng ít ng i đã c m th y th c s khĩ kh n v i vi c ph i nh nh ng câu l nh đ nh p vào t d u nh c DOS. Windows đã gi i quy t khĩ kh n này cho ng i dùng b ng cách s d ng m t giao di n đ h a v i nh ng nút l nh, h p tho i chu n, các menu đ ch n l a…Tuy nhiên tr c khi Visual Basic ra đ i thì đ t o đ c m t ng d ng trong Windows, các l p trình viên s d ng C ph i t n r t nhi u cơng s c dành cho vi c t o giao di n cho ch ng trình. Ch cĩ vi c t o m t nút l nh khơng thơi đã c n ph i dùng đ n hàng tr m dịng mã.
V i VisualBasic, cơng vi c t o giao di n đã tr nên d dàng h n bao gi h t. Ch v i m t vài thao tác click – drag đ n gi n, ta đã cĩ th b sung vào các c a s cịn tr ng các l nh đ n, các h p v n b n, các nút l nh, các nút tùy ch n, các nhãn, các h p ki m…Sau khi t o giao di n thì cơng vi c c a ta ch là vi t mã cho các đ i t ng này (g i là các đi u khi n : Control). Nh v y, cĩ th nĩi, v i Visual Basic cơng vi c t o giao di n đ h a cho ng d ng đã đ c Visual Basic đ m nh n. Visual Basic cho phép ng d ng t o ra liên k t v i các ng d ng Windows khác r t d dàng, cho phép d dàng t o ra các ng d ng thiên v qu n lý d li u và m ng. Visual Basic cho phép ng i s d ng giao ti p v i th vi n liên k t đ ng DLL. i u này giúp gi m kích c ch ng trình, t p tin th c thi và đ c bi t là làm cho ch ng trình cĩ kh n ng đ c nâng c p d dàng h n. Visual Basic cịn cung c p m t s ph ng pháp b y l i trong ng d ng. ây là m t cơng c r t m nh c a Visual Basic.
NGUY N KH C H I-20762051 Page 42
3.2.2 Truy n thơng n i ti p dùng visual basic:
Do s phát tri n ngày càng t ng c a các ng d ng truy n thơng qua c ng n i ti p,t phiên b n 4.0 c a Visual Basic ,đi u khi n truy n thơng đã đ c hồn ch nh đ s d ng cho vi c l p trình ghép n i máy tính qua c ng n i ti p .Trong ph n này ta s tìm hi u v đi u khi n này .
Bình th ng khi ch y ph n m m Visual Basic ta ch th y cĩ m t s thành ph n quen thu c rên h p cơng c (toolbox) .Nh ng Visual Basic cho phép nhi u thành ph n cĩ th đ c b sung thêm vào . i u khi n truy n thơng Mscomm c a Visual Basic là m t trong s các đ i t ng cĩ th đ c b sung
đ tham gia vào m t s ng d ng c n vi c chuy n nh n d li u qua c ng n i ti p.
Trong Visual Basic 5.0 và 6.0 ta cĩ th b sung thành ph n Mscomm đ c p trên nh sau : Ch n Project => Components (Ctrl – T) ,c a s sau s xu t hi n.
i u khi n truy n thơng cung c p hai kh n ng đ trao đ i thơ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 đ c s d ng trong quá trình đi u khi n vi c trao đ i thơng tin n i ti p khi nĩ gi i phĩng máy tính đ làm các cơng vi c khác .Trong nhi u tình hu ng, ta c n đ c thơng báo v s thay đ i. Thí d nh ta c n bi t khi cĩ ký t g i
đ n ho c s thay đ i x y ra trên đ ng DCD (Data Carrier Detect ) ho c đ ng RTS (Request To Send). làm đi u đĩ ta s s d ng s ki n truy n thơng OnComm đ b y và đi u khi n các s ki n. i u khi n truy n thơng cịn phát hi n và đi u khi n các l i truy n thơng.
- H i Vịng (Polling): Ta c ng cĩ th h i vịng các s ki n và l i b ng cách ki m tra giá tr c a đ c tính ComEvent sau m i chu k c a ch ng trình
đ xác đnh xem li u m t s ki n ho c m t l i đã xu t hi n. Ch ng h n, ch ng trình cĩ th t o vịng l p đ ch m t ký t c n đ c nh n. C m i l n nh v y, ký t đ c đ c t b đ m nh n. Thơng th ng ph ng pháp này đ c s d ng khi ch ng trình cĩ th i gian đ ti n hành h i vịng b nh n thơng tin, hay nĩi cách khác là trong các ng d ng khơng l n.
Visual Basic s d ng các b đi u khi n c a s chu n cho các c ng truy n tin n i ti p (nh serialui.dll và serial.vxd ). i u khi n truy n thơng đ c b sung cho ng d ng c a m t c ng n i ti p, nĩi khác đi m i đi u khi n truy n
NGUY N KH C H I-20762051 Page 43
thơng mà ta dùng ch cĩ th đi u khi n m t c ng n i ti p. N u c n truy nh p nhi u c ng trong ng d ng thì ta ph i dùng nhi u đi u khi n truy n thơng. a ch c ng và đ a ch ng t cĩ th thay đ i nh Control Panel trong Windows. Các tham s (nh t c đ truy n theo bit ,ch n l ,…) đ u cĩ th đ c thay đ i b ng cách l a ch n: Control Panel => System => Device Manager =>Port (COM và LPT) =>Port Settings. Vi c thi t l p các c ng truy n thơng (IRQ và đa ch c ng) cĩ th thay đ i b ng cách l a ch n Control Panel => System => Device Manager => Port (COM và LPT) => Resources.
3.2.3 Thu c tính (property):
Thành ph n Comm đ c b sung vào bi u m u ( Form ) b t c lúc nào c n
đ n vi c truy n thơng n i ti p. Theo m c đnh, c ng th nh t t o ra đ i t ng cĩ tên MSComm1, đ i t ng ng v i c ng th hai đ c g i là
MSComm2,…Cĩ th nhìn th y các đ c tính chính c a đ i t ng là: CommPort, DTREnable, EOFEnable, HandShaking,InBufferSize, Index, InputLen,
Inputmode, Left, Name, NullDiscard, OutBufferSize,ParityReplace, Rthreshold, RTSEnable, Settings, SThreshold, Tag, Top. Ta th y đi u khi n truy n thơng cĩ nhi u thu c tính, nh ng đ cĩ th làm vi c v i đi u khi n truy n thơng, tr c h t ta c n hi u k các thu c tính chính đ c li t kê trong b ng 1.7 sau .
B ng 2.1: Các thu c tính
Thí d sau đây ch ra cách truy n thơng qua c ng n i ti p cĩ th đ c ti n hành nh th nào b ng cách s d ng m t Modem.
NGUY N KH C H I-20762051 Page 44
Private sub Form_load()
Dim Instring as String ‘bi n đ l u gi chu i nh p vào
Mscomm11.ComPort = 1 ‘s d ng COM1
Mscomm11.Settings = ”9600 ,N,8,1” ‘9600 baud ,no parity ,8 bit data ,1 stop bit
Mscomm11.InputLen = 0
Mscomm11.PortOpen = True ‘m c ng
Mscomm11.Output = “ATV1Q0” & Chr$(13) Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input Loop Until InStr(Buffer$ , “OK” &vbCRLF)
‘đ c d li u tr l i “OK” ‘đĩng c ng n i ti p
Mscomm11.PortOpen = False End Sub
Sau đây ta s l n l t tìm hi u m t s thu c tính quan tr ng c a đi u khi n truy n thơng .
Ü Thu c tính Settings
- Thu c tính Settings đ t và tr l i các thơng s truy n thơng cho c ng RS-232, nh t c đ baud, tính ch n l , s bit d li u và s các bit d ng.
- Cú pháp c a câu l nh là :
[form.]Mscomm1.Settings [=paramString$]
N u paramString$ khơng h p l (valid) thì khi m c ng, đi u khi n truy n thơng s phát sinh l i 380 (giá tr thu c tính khơng h p l ).
ParamString$ là m t chu i ch a 4 thơng s thi t l p cho c ng truy n thơng RS-232 và cĩ d ng nh sau :
“BBBB ,P ,D ,S”
đây BBBB xác đ nh t c đ baud, P là bit ch tính ch n l , D là s bit d li u và S là s các bit d ng (stop bits). Giá tr m c đ nh c a paramString$ là : “9600, N, 8,1”
NGUY N KH C H I-20762051 Page 45
B ng sau đây li t kê các giá tr baud h p l :
B ng 2.2: t c đ baul
S bit d li u h p l trong m t l n truy n (khung truy n) là : 4 ,5 ,6 ,7 ,8(default)
S bit Stop h p l là : 1 ,1.5 ,2.
Thí d sau cho phép đ t thơng s cho c ng truy n t c đ baud là 4800,khơng ki m tra bit ch n l ,8 bit d li u ,1 bit d ng :
Mscomm11.Settings =”4800 ,N ,8 ,1”
Ki u d li u c a Mscomm11.Settings là : String .
Ü Thu c tính CommPort :
Thu c tính này đ t và tr l i s c ng truy n thơng .Cú pháp c a câu l nh là :
[form.].CommPort [=portnumber%]
Trong khi thi t k (design time) ta cĩ th đ t Portnumber% b ng m t giá tr n m trong kho ng t 1 đ n 16 (giá tr m c đ nh là 1). Tr c khi dùng l nh PortOpen ph i thi t l p c ng b ng CommPort. N u ta dùng thu c tính PortOpen tr c khi thi t l p c ng b ng CommPort thì đi u khi n truy n thơng sinh ra l i 68 (c ng khơng t n t i).
NGUY N KH C H I-20762051 Page 46
Ü Thu c tính PortOpen :
Thu c tính PortOpen đ t và tr l i tr ng thái c a c ng truy n thơng (đĩng ho c m ). Thu c tính này khơng cĩ trong th i gian thi t k ch ng trình. Cú pháp c a câu l nh là :
[form.] MSComm.PortOpen [={True/ False}]
Thơng s thi t l p là True đ m c ng, cịn False đ đĩng (gi i phĩng) c ng và xĩa n i dung các b đ m nh n và truy n MSComm t đ ng đĩng c ng n i ti p khi ng d ng k t thúc (Terminated).
Tr c khi dùng thu c tính này (PortOpen), ph i đ t thơng s c ng b ng thu c tính CommPort v i m t giá tr h p l , n u ta quên đi thu c tính này l i 68 s phát sinh.
Thí d sau đây m c ng truy n thơng s 1 (COM1) v i t c đ baud là 4800 baud, khơng ki m tra tính ch n l , 8 bit d li u, 1 bit stop:
MSComm1.Settings = “4800 ,N ,8 ,1” MSComm1.CommPort=1
MSComm1.PortOpen=True
Ki u d li u : Boolean.
Ü Các thu c tính ph c v vi c nh p d li u (Input ,InBufferCount và InBufferSize)
Ü Thu c tính Input :
- Thu c tính Input tr l i và xĩa b m t chu i ký t t b đ m nh n. Thu c tính nàythơng s n cĩ trong khi thi t k và là ch đ c (Read_only) khi ch y ch ng trình. Cú pháp c a câu l nh là :
[form.] MSComm.Input
- Thu c tính InputLen quy đnh s ký t đ c đ c b i câu l nh Input. xác đnh s các ký t trong b đ m, thu c tính InBufferCount đ c ki m tra.
t InputLen là 0 đ đ c tồn b n i dung c a b đ m nh n.
- Thu c tính InputMode quy t đnh ki u d li u thu v qua thu c tính Input. N u thu c tính này đ c set là CommInputModeText thì thu c tính Input s tr v d li u ki u text vào 1 bi n Variant. N u InputMode là
NGUY N KH C H I-20762051 Page 47
comInputModeBinary thì Input s tr v d li u nh phân trong m t m ng các byte vào m t bi n Variant .
Thí d d i đây ch ra cách đ c d li u t b đ m nh n. MSComm1.InputLen= 0 If MSComm1.InbufferCount then InString$ = MSComm1.Input End if Ki u d li uVariant. Ü Thu c tính InBufferSize:
- Thu c tính InBufferSize đ t và tr l i kích th c b đ m nh n, tính theo s byte.
Cú pháp c a câu l nh là :
[form.]MSComm .InBufferSize [=numbyte%]
Thu c tính này cĩ liên quan đ n kích th c b đ m nh n. Giá tr m c đnh là 1024 bytes. Kích th c c a b đ m ph i đ c đ t sao cho cĩ th c t gi đ c s l n nh t c a các ký t s đ c nh n tr c khi ch ng trình ng d ng cĩ th
đ c chúng t b đ m, tr khi ta làm vi c ch đ b t tay (handshaking). Ki u d li u c a thu c tính này là Integer.
Ü Thu c tính InBufferCount:
Thu c tính InBufferCount tr l i s ký t trong b đ m nh n. Nĩ c ng cĩ th đ c s d ng đ xĩa b đ m b ng cách đ t s c a các ký t b ng 0. Thu c tính này khơng cĩ trong th i gian thi t k ch ng trình (design time).
Cú pháp câu l nh nh sau:
[form.]MSComm.InBufferCount [=count%]
Ta cĩ th xĩa b đ m nh n b ng cách đ t thu c tính InBufferCount = 0. Ki u d li u c a thu c tính này là Integer.
Ü Các thu c tính ph c v vi c xu t d li u (Output ,OutBufferCount và OutBufferSize )
Ü Thu c tính Output:
Thu c tính Output s vi t m t chu i ký t vào b đ m truy n, thu c tính này khơng cĩ trong th i gian thi t k ch ng trình.
NGUY N KH C H I-20762051 Page 48
Cú pháp câu l nh là :
[form.]MSComm.Output [=outstring$]
Thí d sau đây cho bi t cách g i các ký t mà ng i dùng gõ vào t bàn phím:
Private Sub Form_load (KeyAscii as Integer) MSComm1.Outport =Chr$(KeyAscii)
End Sub
Thu c tính Output cĩ th xu t d li u d ng text hay d ng binary. g i d li u text, ta ph i khai báo m t bi n ki u Variant và cho nĩ ch a chu i mu n g i, sau đĩ gán bi n này cho thu c tính Output. g i d li u d ng binary, ta ph i truy n m t bi n Variant ch a m t m ng các byte cho thu c tính Output .
Thơng th ng, n u ta g i m t chu i theo chu n ANSI t i ng d ng, ta cĩ th g i d li u d ng text. N u ta cĩ d li u mà ch a các ký t đi u khi n đ c nhúng (embedded) nh các ký t NULL,… thì ta s truy n d li u theo d ng binary.
Ki u d li u c a thu c tính này là Variant.
Ü Thu c tính OutBufferSize :
Thu c tính OutBufferSize đ t và tr l i kích th c c a các ký t trong b
đ m truy n. Cú pháp c a câu l nh là :
[form.] MSComm.OutBufferSize [=numbyte%]
Giá tr m c đnh c a thu c tính này là 512 bytes. Khơng nên nh m l n gi a hai thu c tính OutBufferCount và OutBufferSize v i nhau. Thu c tính OutBufferCount nĩi lên s bytes hi n đang cĩ trong b đ m truy n, cịn OutBufferSize quy đnh t ng kích th c c a b đ m truy n. Khơng nên đ kích th c b đ m truy n quá l n. Tuy nhiên n u đ quá nh thì s x y ra hi n t ng tràn d li u (tr khi làm vi c ch đ b t tay). Thơng th ng nên b t
đ u v i kích th c b đ m truy n là 512 bytes. N u l i tràn x y ra thì ph i t ng kích th c b đ m cho thích h p v i ng d ng hi n t i.
NGUY N KH C H I-20762051 Page 49
Ü Thu c tính OutBufferCount :
Thu c tính OutBufferCount tr l i s ký t trong b đ m truy n. Nh thu c tính này ta cĩ th xĩa n i dung b đ m truy n b ng cách đ t giá tr c a OutBufferCount=0.
Cú pháp c a câu l nh là :
[form.]MSComm.OutBufferCount [=value%]
Ki u d li u c a thu c tính này là Integer.
Ü Thu c tính RTSEnable :
Thu c tính này xác đnh xem li u cĩ cho phép đ ng RTS hay khơng. Thơng th ng tín hi u RTS (Request To Send) đ c g i t máy tính t i MODEM đ yêu c u s cho phép truy n d li u.
Cú pháp câu l nh nh sau:
[form.]Mscomm1.RTSEnable [=(True | False)]
Ta xác l p giá tr này là True đ đ t đ ng RTS lên m c cao n u c ng đang m và xu ng m c th p n u c ng đang đĩng. ng RTS đ c s d ng khi cĩ b t tay ph n c ng s d ng RTS/CTS. Thu c tính RTSEnable cho phép h i vịng đ ng RTS n u ta c n xác đnh tr ng thái c a nĩ.
Ki u d li u c a thu c tính này : Boolean.
Ü Thu c tính CommEvent :
Thu c tính này tr l i h u h t s ki n ho c l i truy n thơng g n nh t. Thu c tính này khơng cĩ s n trong khi thi t k và là ch đ c khi ch y ch ng trình.