Ngườibáocáo:NgôHiBcTàiliu:TUT01.03
Ngày:10/01/06Trang:1/78
Tutorialno01.02
Giđến:ĐoànHip,DoãnMinhĐăng,HunhChâuThun
picvietnam@googlegroups.com
Nidung:LptrìnhgiaotiếpmáytínhquacngRS232..
MICROSOFTWORD
Tómtt:
VngiaotiếpgiaPCviđiukhinrtquantrongtrongcácứngdngđiukhin,đolường,..
trongthctế.
DođótôixingiithiuchocácbnviếtchươngtrìnhtrênPCdùngMSComm.Tôixinđưaramt
sốvnđềnhưsau:
‐GiithiuchungiaotiếpRS232điukhinActiveXMicrosoftCommunication6.0(
MSComm):cáchtínhchtcáchthiếtlpthamstiưuchođiukhin.
‐LptrìnhứngdnggiaotiếptrêncơsởsửdngphnmmVisualC++trongbộcôngcụVisual‐
Studio6.0caMicrosft:
+Thiếtkếgiaodinchươngtrình.
+Viếtchochươngtrình.
1. ĐiukhinMSComm
1.1. ChungiaotiếpRS232
RS232mtchungiaotiếpnitiếpdùngđịnhdngkhôngđngb,kếtninhiu
nhtvi2thiếtb,chiudàikếtnilnnhtchophépđểđảmbodữliu50100feet
(12.7đến25.4m),tcđộ20kBít/sđôikhitcđộ115kBít/svimtsốthiếtbịđặcbit.
ĐểbiếtđượccácthamsốcachungiaotiếpRS232tronghệđiuhànhcabnnhưthế
nothìbnkíchphichutvàobiutượngMyComputer,chnProperties,chnTab
HardWarechnDeviceManagersẽmttreehinra.BnchnPort(Com&LPT),kích
chutphivàoCommunicationPort(COM1).ChuynsangtabPortSettingsẽthyđược
cácthamsốchúngtacnthiếtlpbaogmtnsốbus,DataBits,ParityBits,StopBits,
Handshaking,..
Ngườibáocáo:NgôHiBcTàiliu:TUT01.03
Ngày:10/01/06Trang:2/78
Hình1.1:ChnMyComputer‐>Properties
Hình1.2:ChnDeviceManager
Ngườibáocáo:NgôHiBcTàiliu:TUT01.03
Ngày:10/01/06Trang:3/78
Hình1.3:ChnPropertiescaCommunicationPort(COM1)
Hình1.4:ChnthẻPortSettingđểbiếtthamsố
ĐóchínhdotisaotôilichncácthamsốđưavàotrongcácComboBoxnhưở
dướichươngtrìnhnày.
Ngườibáocáo:NgôHiBcTàiliu:TUT01.03
Ngày:10/01/06Trang:4/78
1.2. CácthuctínhcaMSComm
MSCommmtđiukhinActiveXdùngtrongtruynthôngnitiếp.Cáctínhcht
cađiukhinnàyđượcdùngđểthiếtlpgiaotiếpvicácthiếtbịngoiviquacng
RS232.DođótôixingiithiuvicácbnđiukhinnàytrongVisualBasiccáchgi
thuctínhđơngincaVB.TừđósẽlylàmcơsởđểlptrìnhtrênVisualC++.
1.2.1. ĐiukhinMSCommtrongVisualBasic
TtcảcáctínhchtnàybnthểtìmtithưvinMSDNJuly2001theođườngdn
nhưsauởtabcontents:
MSDNLibrary‐July2001/VisualToolsandLanguages/VisualStudio6.0
Documentation/VisualBasicDocumentation/Reference/ControlReference/ActiveX
Control/MSCommControl
CáctínhchtcaMSCommđượcspxếptheochcnăng:
Thiếtlpthamsốchocng:
+CommID:trảlihandlesđồngnhttithiếtbịtruynthông,kiuLong.Tínhcht
nàykhônglúcthiếtkếchỉkhithihành,thuctínhnàyReadOnly.
+CommPort:dngobject.CommPort=value.ValuechỉsốcacngComgiátrịtừ
1‐>16mcđịnhgiátrị=1.Cácbncnphithiếtlpthôngsốnàytrướckhimởcng.
Sẽlierror68(Deviceunavailable)nếunhưkhôngmởđượccngnày.
+InBuferSize:thiếtlphoctrảlikíchthướccabộđệmnhn,tính=byte.Mcđịnh
1024byte.CácbnkhôngđượcnhmlnviđặctínhInBufferCountsốbyteđang
chờtrongbộđệmnhn.
+InputLen:object.InputLen[=value]thiếtlphoctrảlisốbytemilnthuctính
Inputđọctrongbộđệmnhn.McđịnhgiátrịValue=0tcthuctínhInputsẽđọchết
nidungcabộđệmnhnkhithuctínhnàyđượcgi.Nếusốtựtrongbộđệmnhn
không=InputLenthìthuctínhInputsẽtrảlitựrng“”.thếbncnphichn
cáchkimtraInBufferCountđểchcchnsốtựyêucuđãđủtrướckhidùnglnh
.Input.Tínhchtnàyrtíchkhiđọcdữliumtmáydữliurađưcđịnhdng
bngcáckhikíchthướccốđịnh.
+InputMode:object.InputMode[=value].
Value=0hay=comInputModeTextdữliunhnđượcdngvănbnkiutựtheo
chunANSI.Dữliunhnđượcsẽmtsâu.
Value=1hay=comInputModeBinarydùngnhnmikiudữliunhưtựđiukhin
nhúng,tựNULL,..GiátrịnhnđượctừInputsẽmtmngkiuByte.
+NullDiscard:object.NullDiscard[=value]tínhchtnàyquyếtđịnhtựtrng
đượctruyntừcngđếnbộđệmnhnhaykhông.Nếuvalue=Truetựnàykhôngđược
Ngườibáocáo:NgôHiBcTàiliu:TUT01.03
Ngày:10/01/06Trang:5/78
truyn.value=falsetựtrngsẽđượctruyn.tựtrngđượcđịnhnghíatheochun
ASCIItự0chr$(0).
+OutBuferSize:gingnhưInBuferSize,mcđịnh512.
+ParityReplace:thiếtlptrảlitựthaythếtựkhôngđúngtrongliging
nhau.
+PortOpen:thiếtlptrảlitínhtrngcacng(đónghocm).
object.PortOpen[=value].value=truecngm.value=falsecngđóngxóatoàn
bộdữliutrongbộđệmnhntruyn.CnphithiếtlpthuctínhCommPortđúngvi
têncacngtrướckhimởcnggiaotiếp.Thêmvàođó,cnggiaotiếpcathiếtbịcabn
phihỗtrợgiátrịtrongthuctínhSettingthìthiếtbịcabnmihotđộngđúng,còn
khôngthìsẽhotđộngrtdởhơinếukhôngnóichykhôngtt.ĐườngDTR
RTSluôngiữlitrngtháicacng.
+RthresHold:object.Rthreshold[=value]valuekiusốnguyên.Thiếtlpsốtự
nhnđượctrướckhigâylênsựkincomEvReceive.Mcđịnh=0tckhôngsựkin
OnCommkhinhnđượcdữliu.Thiếtlp=1tcsựkinOnCommxyrakhibt
tựnàođượcchuynđếnbộđệmnhn.
+Settings:object.Settings[=value]thiếtlphoctrảlicácthôngsốtnsốbaud,bít
dữliu,bítchnl,bítstop.NếuValuekhônggiátrịkhimởsẽgâyrali380(Invalid
propertyvalue).
+SThreshold:thiếtlptrảlisốtựnhỏnhtđượcchophéptrongbộđệmgi
đểxyrasựkinOnComm=comEvSend.Theomcđịnhgiátrịnày=0tckhitruyn
sẽkhônggâyrasựkinOnComm.Nếuthiếtlpthôngsốnày=1thìsựkinOnCommxy
rakhibộđệmtruynrng.SựkinOnComm=comEvSendchỉxyrakhisốtự
trongbộđệmtruynnhỏhơnhoc=Sthreshold.Nếusốtựtrongbộđệmnàyluônln
hơnSthresholdthìsựkinnàykhôngthểxyra.
Truynnhndữliu:
+CommEvent:trảliphnlnsựkingiaotiếphocli.CommEventxyrakhi
lihockhixyrasựkinnàođó.Sauđâymtsốhngsốli:
SựkinGiátrị Miêutảsựkin
comEventBreak1001XyrakhinhnđượcmttínhiuBreak.
comEventFrame1004Lihệthng.Phncngpháthinramtlihệthng
comEventOverrun1006Xyrakhicngtựtràn(Overrun).Mttựkhôngđược
đọctừphncngtrướckhitựtiếptheotidođótự
nàybịmt.