Thông tin tài liệu
ĐỀ TÀI Lập trình giao tiếp máy tính qua cổng RS232 Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 1/78 Tutorialn o 01.02 Gửiđến: ĐoànHiệp,DoãnMinhĐăng,HuỳnhChâuThuận picvietnam@googlegroups.com Nộidung: LậptrìnhgiaotiếpmáytínhquacổngRS232 MICROSOFTWORD Tómtắt: VấngiaotiếpgiữaPCvàviđiềukhiểnrấtquantrongtrongcácứngdụngđiềukhiển,đol ường, trongthựctế. DođótôixingiớithiệuchocácbạnviếtchươngtrìnhtrênPCdùngMSComm.Tôixinđưaramột sốvấnđềnhưsau: ‐GiớithiệuchuẩngiaotiếpRS232vàđiềukhiểnActiveXMicrosoftCommunication6.0( MSComm):cáchtínhchấtvàcáchthiếtlậpthamsốtốiưuchođiềukhiển. ‐LậptrìnhứngdụnggiaotiếptrêncơsởsửdụngphầnmềmVisualC++trongbộcôngcụVisual‐ Studio6.0củaMicrosft: +Thiếtkếgiaodiệnchươngtrình. +Viếtmãchochươngtrình. 1. ĐiềukhiểnMSComm 1.1. ChuẩngiaotiếpRS232 RS232làmộtchuẩngiaotiếpnốitiếpdùngđịnhdạngkhôngđồngbộ,kếtnốinhiều nhấtlàvới2thiếtbị,chiềudàikếtnốilớnnhấtchophépđểđảmb ảodữliệulà50–100feet (12.7đến25.4m),tốcđộ20kBít/sđôikhilàtốc độ115kBít/svớimộtsốthiếtbịđặcbiệt. ĐểbiếtđượccácthamsốcủachuẩngiaotiếpRS232tronghệđiềuhànhcủabạnnhưthế nảothìbạnkíchphảichuộtvàobiểutượngMyComputer,chọnProperties,chọnTab HardWarechọnDeviceManagersẽcómộttreehiệnra.BạnchọnPort(Com&LPT),kích chuộtphảivàoCommunicationPort(COM1).ChuyểnsangtabPortSettingsẽthấyđược cácthamsốmàchúngtacầnthiếtlậpbaogồmtầnsốbus,DataBits,ParityBits,StopBits, Handshaking, Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 2/78 Hình1.1:ChọnMyComputer‐>Properties Hình1.2:ChọnDeviceManager Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 3/78 Hình1.3:ChọnPropertiescủaCommunicationPort(COM1) Hình1.4:ChọnthẻPortSettingđểbiếtthamsố ĐóchínhlàlídotạisaotôilạichọncácthamsốđưavàotrongcácComboBoxnhưở dướichươngtrìnhnày. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 4/78 1.2. CácthuộctínhcủaMSComm MSCommlàmộtđiềukhiểnActiveXdùngtrongtruyềnthôngnốitiếp.Cáctínhchất củađiềukhiểnnàyđượcdùngđểthiếtlậpgiaotiếpvớicácthiếtbịngoạiviquacổng RS232.DođótôixingiớithiệuvớicácbạnđiềukhiểnnàytrongVisualBasicvìcáchgọi thuộctínhđơngiảncủaVB.TừđósẽlấylàmcơsởđểlậptrìnhtrênVisualC++. 1.2.1. ĐiềukhiểnMSCommtrongVisualBasic TấtcảcáctínhchấtnàybạncóthểtìmtạithưviệnMSDNJuly2001theođườngdẫn nhưsauởtabcontents: MSDNLibrary‐July2001/VisualToolsandLanguages/VisualStudio6.0 Documentation/VisualBasicDocumentation/Reference/ControlReference/ActiveX Control/MSCommControl CáctínhchấtcủaMSCommđượcsắpxếptheochứcnăng: Thiếtlậpthamsốchocổng: +CommID:trảlạihandlesđồngnhấttớithiếtbịtruyềnthông,cókiểuLong.Tínhchất nàykhôngcólúcthiếtkếmàchỉcókhithihành,thuộctínhnàylàReadOnly. +CommPort:dạngobject.CommPort=value.ValuelàchỉsốcủacổngComcógiátrịtừ 1‐>16vàmặcđịnhcógiátrị=1.Cácbạncầnphảithiếtlậpthôngsốnàytrướckhimởcổng. Sẽcólỗierror68(Deviceunavailable)nếunhưkhôngmởđượccổngnày. +InBuferSize:thiếtlậphoặctrảlạikíchthướccủabộđệmnhận,tính=byte.Mặcđịnh là1024byte.CácbạnkhôngđượcnhầmlẫnvớiđặctínhInBufferCountlàsốbyteđang chờtrongbộđệmnhận. +InputLen:object.InputLen[=value]thiếtlậphoặctrảlạisốbytemỗilầnthuộctính Inputđọctrongbộđệmnhận.MặcđịnhgiátrịValue=0tứclàthuộctínhInputsẽđọchết nộidungcủabộđệmnhậnkhithuộctínhnàyđượcgọi.Nếusốkítựtrongbộđệmnhận không=InputLenthìthuộctínhInputsẽtrảlạikítựrỗng“”.Víthếbạncầnphảichọn cáchkiểmtraInBufferCountđểchắcchắnsốkítựyêucầuđãcóđủtrướckhidùnglệnh .Input.Tínhchấtnàyrấtlàcóíchkhiđọcdữliệumộtmáymàdữliệurađượcđịnhdạng bằngcáckhốicókíchthướccốđịnh. +InputMode:object.InputMode[=value]. Value=0hay=comInputModeTextdữliệunhậnđượcdạngvănbảnkiểukítựtheo chuẩnANSI.Dữliệunhậnđượcsẽlàmộtsâu. Value=1hay=comInputModeBinarydùngnhậnmọikiểudữliệunhưkítựđiềukhiển nhúng,kítựNULL, GiátrịnhậnđượctừInputsẽlàmộtmảngkiểuByte. +NullDiscard:object.NullDiscard[=value]tínhchấtnàyquyếtđịnhkítựtrốngcó đượctruyềntừcổngđếnbộđệmnhậnhaykhông.Nếuvalue=Truekítựnàykhôngđược Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 5/78 truyền.value=falsekítựtrốngsẽđượctruyền.Kítựtrốngđượcđịnhnghíatheochuẩn ASCIIlàkítự0–chr$(0). +OutBuferSize:giốngnhưInBuferSize,mặcđịnhlà512. +ParityReplace:thiếtlậpvàtrảlạikítựthaythếkítựkhôngđúngtronglỗigiống nhau. +PortOpen:thiếtlậpvàtrảlạitínhtrạngcủacổng(đónghoặcmở). object.PortOpen[=value].value=truecổngmở.value=falsecổngđóngvàxóatoàn bộdữliệutrongbộđệmnhậnvàtruyền.CầnphảithiếtlậpthuộctínhCommPortđúngvới têncủacổngtrướckhimởcổnggiaotiếp.Thêmvàođó,cổnggiaotiếpcủathiếtbịcủabạn phảihỗtrợgiátrịtrongthuộctínhSettingthìthiếtbịc ủabạnmớihoạtđộngđúng,còn khôngthìnósẽhoạtđộngrấtdởhơinếukhôngnóilànóchạykhôngtốt.ĐườngDTRvà RTSluôngiữlạitrạngtháicủacổng. +RthresHold:object.Rthreshold[=value]valuekiểusốnguyên.Thiếtlậpsốkítự nhậnđượctrướckhigâylênsựkiệncomEvReceive.Mặcđịnh=0tứclàkhôngcósựkiện OnCommkhinhậnđượcdữliệu.Thiếtlập=1tứclàsựkiệnOnCommxảyrakhibấtkìkí tựnàođượcchuyểnđếnbộđệmnhận. +Settings:object.Settings[=value]thiếtlậphoặctrảlạicácthôngsốtầnsốbaud,bít dữliệu,bítchẵnlẻ,bítstop.NếuValuekhôngcógiátrịkhimởsẽgâyralỗi380(Invalid propertyvalue). +SThreshold:thiếtlậpvàvàtrảlạisốkítựnhỏnhấtđượcchophéptrongbộđệmgửi đểxảyrasựkiệnOnComm=comEvSend.Theomặcđịnhgiátrịnày=0tứclàkhitruyền sẽkhônggâyrasựkiệnOnComm.Nếuthiếtlậpthôngsốnày=1thìsựkiện OnComm xảy rakhibộđệmtruyềnrỗng.SựkiệnOnComm=comEvSendchỉxảyrakhimàsốkítự trongbộđệmtruyềnnhỏhơnhoặc=Sthreshold.Nếusốkítựtrongbộđệmnàyluônlớn hơnSthresholdthìsựkiệnnàykhôngthểxảyra. Truyềnnhậndữliệu: +CommEvent:trảlạiphầnlớnsựkiệngiaotiếphoặccólỗi.CommEventxảyrakhicó lỗihoặckhixảyrasựkiệnnàođó.Sauđâylàmộtsốhằngsốlỗi: Sựkiện Giátrị Miêutảsựkiện comEventBreak 1001 XảyrakhinhậnđượcmộttínhiệuBreak. comEventFrame 1004 Lỗihệthống.Phầncứngpháthiệnramộtlỗihệthống comEventOverrun 1006 Xảyrakhicổngtựtràn(Overrun).Mộtkítựkhôngđược đọctừphầncứngtrướckhikítựtiếptheotớivàdođókítự nàybịmất. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 6/78 comEventRxOver 1008 Xảyrakhibộđệmnhậnbịtràn.Khôngcóđủchỗchodữ liệutrongbộđệmnhận. comEventRxParity 1009 LỗiParity.PhầncứngpháthiệnramộtlỗiParity. comEventTxFull 1010 xảyrakhibộđệmtruyềnbịđầy.Bộđệmtruyềnbịđầy trongkhighidữliệulớnvàobộđệm comEventDCB 1011 Mộtlỗikhôngmongmuốnkhiđangkhôiphụclạikhỗi điềukhiểnthiếtbị(DCB–DeviceControlBlock)chocổng Mộtsốsựkiện: Sựkiện Giátrị Miêutảsựkiện comEvSend 1 Xảyrakhisốkítựtrongbộđệmtruyềnnhỏhơngiátrị SthresHold. comEvReceive 2 Xảyrakhibộđệmnhậnđượcsốkítựbằnggiátrị RthresHold.Sựkiệnnàyđượctạoraliêntụcchotớikhibạn dùngthuộctínhInputđểlấyhếtdữliệutừtrongbộđệm nhận. RcomEvCTS 3 XảyrakhicóthayđổitrongđườngCTS(ClearToSend) comEvDSR 4 XảyrakhithayđổitrongđườngDSR(DataSetReady).Sự kiệnnàychỉxảyrakhiđườngDSRthayđổitừ1‐>0. comEvCD 5 XảyrakhicóthayđổitrongđườngCD(CarrierDetect) comEvRing 6 Pháthiệnchuông(Ring).MộtsốUARTkhônghỗtrợsự kiệnnày. comEvEOF 7 Xảyrakhinhậnđượckítựkếtthúcfile(kítự26trong bảngmãASCII) +EOFEnable:object.EOFEnable[=value]quyếtđịnhcáchànhđộngnếuMSComm tìmthấykítựkếtthúcfile.Nếuvalue=truekhitìmthấykítựkếtthúcfilethìsẽgâylênsự kiệncomEvEOFtrongOnCommEvent.Nếuvalue=falsethìsẽkhônggâylênsựkiệnnày. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 7/78 +InBufferCout:trảlạisốkítựđangcótrongbộđệmnhậnBạncóthểxoábộđệmnhận bằngcáchđặtthuộctínhnày=0.KhôngnhầmvớithuộctínhInBufferSizelàtổngkích thướccủabộđệmnhận. +Input:nhậnvàxoádữliệutrongbộđệmnhận. NếuInputModelàcomInputModeTextthìgiátrịtrảvềsẽlàmộtxâutứccókiểu String,dữliệudạngtexttrongmộtbiếnkiểuVariant.NếuInputMode= comInputModeBinarythìthuộctínhnàysẽtrảlạidữliệudạngnhịphândướidạngmột mảngkiểubytetrongmộtbiếnVariant. +OutBufferCount:trảlạisốkítựtrongbộđệmtruyền. +Output:ghidữliệuvàobộđệmtruyền.cóthểtruyềnkiểutexthoặckiểunhịphân. NếutruyềnbằngkiểutextthìchomộtbiếnVariant=kiểuString,nếutruyềnkiểunhịphân thìchochoOutput=variant=mộtmảngkiểuByte. Bắttay(handshaking): +Break:thiếtlậphoặcxoátínhiệu.object.Break[=value]value=truehoặcfalse.Khi setvalue=truethìthôngsốBreaknàysẽgửimộttínhiệubreak.Tínhiệubreaktrìhoàn việctruyềndữliệuvàđưađườngtruyềnvàotrạngtháibreaktớikhimàvalue=false. +CDHolding:quếtđịnhxemsựtruyềnnàyđếnđâubằngcáchtruyvấnđườngCD( CarrierDetect).CarrierDetectlàtínhiệugửitừmodemtớimáytínhkếtnốivớinóthống báorằngnóđangonline.Nếugiátrị=truethìnóđườngCDđangởmứccao,nếu=false thìđườngdâynàyđangởmứcthấp.Tínhchấtnàykhôngcótronglúcthiếtkếchỉcótrong khichạychươngtrình.CarrierDetectđượcbiếtnhưlàReceiveLineSignalDetect(RLSD). +CTSHolding:quếtđịnhkhinàobạngửidữliệubằngcáchtruyvấntrạngtháiđường ClearToSend(CTS).ThôngthườngtínhiệuCTSđượcgửitừmodemtớimáytínhkếtnối vớinóđểbáorằngđangquátrìnhtruyềndữliệu.ThuộctínhReadonlychỉxuấthiệnkhi chạychươngtrình.ĐườngClearToSenddùngtrongRTS/CTS(RequestToSend/ClearTo Send)bắttayphầncứng.CTSHoldingchobạnmộtcáchđểtựtaydòđườngClearToSend nếubạncầnbiếttrạngtháicủanó. +DSRHolding:biếttrạngtháicủađườngDataSetReady(DSR).TínhiệuDataSet Readytruyềntừmodemtớimáytínhnốivớinóđểthôngbáorằngmodemđãsẵnsàng hoạtđộng.TínhchấtnàydùngkhiviếtDataSetReady/DataTerminalReadyhandshaking routinechomáyDataTerminalEquipment(DTE)‐máytrangbịđầucuốidữliệu. +DTREnable:tínhchấtnàyquyếtđịnhkhinàochophépđườngDataTerminalReady (DTR)trongtruyềnthông.TínhiệuDTRgửitừmáytínhtớimodemđẻbáorằngmáytính sẵnsànglànơinhậndữliệu.KhiDTREnable=truethìđườngDataTerminalReadysetlên caokhicổngmở,vàthấpkhicổngđóng.NếuDTREnable=falsethìđườngđóluônmức thấp.TrongphầnlớntrườnghợpsetđườngDataTerminalReadythànhthấpđểhangup telephone. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 8/78 +Handshaking:thiếtlậpvàtrảlạigiaothứcbắttayphầncứng.object.Handshaking[= value]. Cácgiátrịcủavalue: comNone 0 (Mặcđịnh)Khôngbắttay comXOnXOff 1 BắttayXON/XOFF comRTS 2 BắttayRTS/CTS(RequestToSend/ClearToSend) comRTSXOnXOff 3 DùngcảbắttayRequestToSendandXON/XOFF Handshakingchỉlàgiaothứctruyềnthôngnộitạiquyếtđịnhbởidữliệunàođược truyềntừcổngphầncứngtớibộđệmnhận.Khikítựcủadữliệutớicổngnốitiếp,thiếtbị truyềnthôngsẽchuyểnnóvàotrongbộđệmnhậnvàchươngtrìnhcủabạncóthểđọc chúng.Nếukhôngcóbộđệmdữliệuhoặcchươngtrìnhcủabạncầnđọckítựtrựctiếptừ phầncứng,bạncóthểmấtdữliệubởivìkítựtừphầncứngđếnrấtnhanh.Giaothức Handshakingđảmbảodữliệukhôngbịmất,khidữliệuđếncổngquánhanhthìthiếtbị truyềnthôngsẽchuyểndữliệuvàotrongbộđệmnhận. +RTSEnable:quếtđịnhkhinàochophépđườngRequestToSend(RTS),TínhiệuRTS từmáytínhtớimodemđểyêucầuđượctryềndữliệu.KhiRTSEnable=truethìđường RTSmứccaokhicổngmở,tíchmứcthấpkhicổngđóng.VàhiểnnhiênkhiRTSEnablethì đườngRTSluônmứcthấp.RTSdùngtrongRTS/CTShardwarehandshaking.RTSEnable chophépbạndòđườngRTSkhicầnbiếttìnhtrạngcủađườngnày. Cáctínhchấttrênkhôngcólúcthiếtkếgiaodiệnmàchỉcólúcchạychươngtrình( dùngtrongviếtcode). 1.1.2. ĐiềukhiểnMSCommtrongVisualC++ TrênđâylàcácthamsốcủađiềukhiểnMSCommtrongVB. TrongVisualC++,mỗimộtđiềukhiểnđượcđịnhnghĩatrongmộtlớpriêng.Và MSCommcũngkhôngphảilàngoạilệ. Vớicácthamsốởtrêncácbạnhoàntoàncóthểápdụngrấtlàtốtcholậptrìnhvới VC++bởilẽcácthamsốnàybạncóthểlấygiátrịhoặcthiếtlậpthamsốchochúngtương ứngbằngcáchàmthànhviêncửalớpnhưGet_thuộctínhhoặcSet_thuộctính. Vídụ,bạnmuốnthiếtlậpdùngcổngCOM1chẳnghạnthìdùngthuộctínhCommPort ởtrênvàchỉthêmtiềntốSet_nếumuốnthiếtlậpvàGet_nếumuốnlấygiátrịnày. SauđâylàlớpMSCommlàmộtlớpkếthừatừlớpcởsởCWnd,cácbạncóthểtham khảo.Cácbạnchúývềcáckiềudữliệucửacácthamsốvàgiátrịtrảvềcủacáchàm.Việc Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 9/78 chuyểnđổigiữacáckiểudữliệunàycácbạncóthểthamkhảotạithưviệnMSDN MicrosoftJuly2001bằngcáchSearch KeyWord:chínhlàcáctừkhoáchỉnhlàcáckiểudữliệuđó.(nhưCString,…) classCMSComm:publicCWnd { protected: DECLARE_DYNCREATE(CMSComm) public: CLSIDconst&GetClsid() { staticCLSIDconstclsid ={0x648a5600,0x2c6e,0x101b,{0x82,0xb6,0x0,0x0,0x0,0x0,0x0,0x14}}; returnclsid; } virtualBOOLCreate(LPCTSTRlpszClassName, LPCTSTRlpszWindowName,DWORDdwStyle, constRECT&rect, CWnd*pParentWnd,UINTnID, CCreateContext*pContext=NULL) {returnCreateControl(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID); } BOOLCreate(LPCTSTRlpszWindowName,DWORDdwStyle, constRECT&rect,CWnd*pParentWnd,UINTnID, CFile*pPersist=NULL,BOOLbStorage=FALSE, BSTRbstrLicKey=NULL) {returnCreateControl(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID, pPersist,bStorage,bstrLicKey);} //Attributes public: //Cácphéptoán public: voidSetCDHolding(BOOLbNewValue); BOOLGetCDHolding(); voidSetCommID(longnNewValue); longGetCommID(); [...]... Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 15/78 Hình 2. 3: Chọn New từ menu file Hình 2. 4: Chọn MFC Application(exe), tên dự án, nơi chứa dự án Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 16/78 Hình 2. 5: Chọn Dialog based Hình 2. 6: Nhấn Next tiếp tục Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 17/78 ... Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 24/78 Hình 2.2 1: Thêm GroupBox5 Hình 2.2 2: Thêm GroupBox6 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 25/78 Hình 2.2 3: Thêm GroupBox7 Hình 2.2 4: Thêm GroupBox8 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 26/78 Hình 2.2 5: Thêm GroupBox9 Thay đổi thuộc tính cho GroupBox 1: ... Thay đổi thuộc tính cho GroupBox 1: Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 27/78 Hình 2.2 6: Kích chuột vào GroupBox1 chọn Properties Hình 2.2 7: Thiết lập thuộc tính Caption: Settings Các bạn làm tương tự với các GroupBox khác, theo hình vẽ dưới đây: Hình 2.2 8: Thiết lập thuộc tính cho GroupBox2 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 28/78 ... 28/78 Hình 2.3 0: Thiết lập thuộc tính cho GroupBox3 Hình 2.3 1: Thiết lập thuộc tính cho GroupBox4 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 29/78 Hình 2.3 2: Thiết lập thuộc tính cho GroupBox5 Hình 2.3 3: Thiết lập thuộc tính cho GroupBox6 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 30/78 Hình 2.3 4: Thiết lập thuộc tính cho GroupBox7 ... Hình 2.3 8: Làm cho các GroupBox này thẳng hàng với nhau Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 33/78 Hình 2.3 9: Kết quả sau khi làm cho cùng kích thước 2.2.3.2 Thêm các EditBox Hình 2.4 0: Thêm EditBox1 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 34/78 Hình 2.4 1: kích chuột phải, chọn Properties Hình 2.4 2: Thiết lập ID cho EditBox1 ... Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 22/78 Thế là các bạn đã cho được ứng dụng MSComm vào trong Dialog 2.2.3 Thêm các điều khiển khác 2.2.3.1 Thêm các Group Box Hình 2.1 7: Thêm GroupBox1 Hình 2.1 8: Thêm GroupBox2 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 23/78 Hình 2.1 9: Thêm GroupBox3 Hình 2.2 0: Thêm GroupBox4 Người báo cáo: Ngô Hải Bắc ... Hình 2.3 4: Thiết lập thuộc tính cho GroupBox8 Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 31/78 Hình 2.3 5: Thiết lập thuộc tính cho GroupBox9 Tiếp theo các bạn làm cho các GroupBox 4‐>9 có kích thước bằng nhau và căn lề đẹp hơn Hình 2.3 6: Làm cho các GroupBox có cùng kích thước Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 32/78 ... Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 17/78 Hình 2. 7: chọn như mặc định, nhấn Next luôn Hình 2. 8: Kích finish để kết thúc việc tạo dự án Giao diện của ứng dụng ban đầu như sau: Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 18/78 Hình 2. 9: Giao diện ban đầu 2.2.2 Thêm điều khiển ActiveX Microsoft Communication 6.0 Đầu tiên bạn dùng nút Delete xoá 2 nút OK,Cancel và dòng văn bản tĩnh TODO ... Từ menu Project chọn Add to Project. Menu con hiện ra bạn chọn Components and Controls: Hình 2.1 0: Chọn Components Controls Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 19/78 Hộp thoại Components and Control Gallery xuất hiện bạn chọn Regestered ActiveX Controls(đây là thư mục chứa các điều khiển ActiveX ): Hình 2.1 1: Chọn thư mục đầu tiên Trong thư mục Registered ActiveX Controls bạn chọn điều khiển mà mình cần ... Hình 2.1 4: Chọn tên lớp, tên header file, file thực thi như mặc định Nhấn Close để đóng hộp thoại Người báo cáo: Ngô Hải Bắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 21/78 Hình 2.1 5: Đóng cửa sổ Components and Controls Gallery Bạn thêm điều khiển MSComm vào hộp giao diện bằng cách gắp thả như với các điều khiển thông thường khác Hình 2.1 6: Thêm điều khiển MSComm Người báo cáo: Ngô Hải Bắc . Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 2/78 Hình1. 1: ChọnMyComputer‐>Properties Hình1. 2: ChọnDeviceManager Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 3/78 Hình1. 3: ChọnPropertiescủaCommunicationPort(COM1) Hình1. 4: ChọnthẻPortSettingđểbiếtthamsố ĐóchínhlàlídotạisaotôilạichọncácthamsốđưavàotrongcácComboBoxnhưở dướichươngtrìnhnày. Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 4/78 1.2 Tạodựán“RS232TUT” KhởiđộngVisualC++,chọnNewtừmenuFile Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 15/78 Hình2. 3: ChọnNewtừmenufile Hình2. 4: ChọnMFCApplication(exe),têndựán,nơichứadựán Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 16/78 Hình2. 5: ChọnDialogbased Hình2. 6: NhấnNexttiếptục Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 17/78 Hình2. 7: chọnnhưmặcđịnh,nhấnNextluôn Hình2. 8: Kíchfinishđểkếtthúcviệctạodựán Giaodiệncủaứngdụngbanđầunhưsau: Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 18/78 Hình2. 9: Giaodiệnbanđầu 2.2.2 Tạodựán“RS232TUT” KhởiđộngVisualC++,chọnNewtừmenuFile Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 15/78 Hình2. 3: ChọnNewtừmenufile Hình2. 4: ChọnMFCApplication(exe),têndựán,nơichứadựán Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 16/78 Hình2. 5: ChọnDialogbased Hình2. 6: NhấnNexttiếptục Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 17/78 Hình2. 7: chọnnhưmặcđịnh,nhấnNextluôn Hình2. 8: Kíchfinishđểkếtthúcviệctạodựán Giaodiệncủaứngdụngbanđầunhưsau: Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 18/78 Hình2. 9: Giaodiệnbanđầu 2.2.2.
Ngày đăng: 28/07/2014, 04:20
Xem thêm: Đề tài : Lập trình giao tiếp máy tính qua cổng RS232 pdf, Đề tài : Lập trình giao tiếp máy tính qua cổng RS232 pdf