đề tài '''' lập trình vb6 giao tiếp với công rs232

78 507 1
đề tài  '''' lập trình vb6 giao tiếp với công rs232

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 1/78  Tutorialn o 01.02  Gửiđến: ĐoànHiệp,DoãnMinhĐăng,HuỳnhChâuThuận picvietnam@googlegroups.com Nộidung: LậptrìnhgiaotiếpmáytínhquacổngRS232   MICROSOFTWORD  Tómtắt: VấngiaotiếpgiữaPCvàviđiềukhiểnrấtquantrongtrongcácứngdụngđiềukhiển,đolường,  trongthựctế. DođótôixingiớithiệuchocácbạnviếtchươngtrìnhtrênPCdùngMSComm.Tôixinđưaramột sốvấnđềnhưsau: ‐GiớithiệuchuẩngiaotiếpRS232vàđiềukhiểnActiveXMicrosoftCommunication6.0( MSComm):cáchtínhchấtvàcáchthiếtlậpthamsốtốiưuchođiềukhiển. ‐LậptrìnhứngdụnggiaotiếptrêncơsởsửdụngphầnmềmVisualC++trongbộcôngcụVisual‐ Studio6.0củaMicrosft: +Thiếtkếgiaodiệnchươngtrình. +Viếtmãchochươngtrình.  1. ĐiềukhiểnMSComm 1.1. ChuẩngiaotiếpRS232 RS232làmộtchuẩngiaotiếpnốitiếpdùngđịnhdạngkhôngđồngbộ,kếtnốinhiều nhấtlàvới2thiếtbị,chiềudàikếtnốilớnnhấtchophépđểđảmb ảodữliệulà50–100feet (12.7đến25.4m),tốcđộ20kBít/sđôikhilàtốc độ115kBít/svớimộtsốthiếtbịđặcbiệt. ĐểbiếtđượccácthamsốcủachuẩngiaotiếpRS232tronghệđiềuhànhcủabạnnhưthế nảothìbạnkíchphảichuộtvàobiểutượngMyComputer,chọnProperties,chọnTab HardWarechọnDeviceManagersẽcómộttreehiệnra.BạnchọnPort(Com&LPT),kích chuộtphảivàoCommunicationPort(COM1).ChuyểnsangtabPortSettingsẽthấyđược cácthamsốmàchúngtacầnthiếtlậpbaogồmtầnsốbus,DataBits,ParityBits,StopBits, Handshaking,  Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 2/78   Hình1.1:ChọnMyComputer‐>Properties   Hình1.2:ChọnDeviceManager Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 3/78   Hình1.3:ChọnPropertiescủaCommunicationPort(COM1)   Hình1.4:ChọnthẻPortSettingđểbiếtthamsố ĐóchínhlàlídotạisaotôilạichọncácthamsốđưavàotrongcácComboBoxnhưở dướichươngtrìnhnày.  Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 4/78  1.2. CácthuộctínhcủaMSComm MSCommlàmộtđiềukhiểnActiveXdùngtrongtruyềnthôngnốitiếp.Cáctínhchất củađiềukhiểnnàyđượcdùngđểthiếtlậpgiaotiếpvớicácthiếtbịngoạiviquacổng RS232.DođótôixingiớithiệuvớicácbạnđiềukhiểnnàytrongVisualBasicvìcáchgọi thuộctínhđơngiảncủaVB.TừđósẽlấylàmcơsởđểlậptrìnhtrênVisualC++. 1.2.1. ĐiềukhiểnMSCommtrongVisualBasic TấtcảcáctínhchấtnàybạncóthểtìmtạithưviệnMSDNJuly2001theođườngdẫn nhưsauởtabcontents: MSDNLibrary‐July2001/VisualToolsandLanguages/VisualStudio6.0 Documentation/VisualBasicDocumentation/Reference/ControlReference/ActiveX Control/MSCommControl CáctínhchấtcủaMSCommđượcsắpxếptheochứcnăng: Thiếtlậpthamsốchocổng: +CommID:trảlạihandlesđồngnhấttớithiếtbịtruyềnthông,cókiểuLong.Tínhchất nàykhôngcólúcthiếtkếmàchỉcókhithihành,thuộctínhnàylàReadOnly. +CommPort:dạngobject.CommPort=value.ValuelàchỉsốcủacổngComcógiátrịtừ 1‐>16vàmặcđịnhcógiátrị=1.Cácbạncầnphảithiếtlậpthôngsốnàytrướckhimởcổng. Sẽcólỗierror68(Deviceunavailable)nếunhưkhôngmởđượccổngnày. +InBuferSize:thiếtlậphoặctrảlạikíchthướccủabộđệmnhận,tính=byte.Mặcđịnh là1024byte.CácbạnkhôngđượcnhầmlẫnvớiđặctínhInBufferCountlàsốbyteđang chờtrongbộđệmnhận. +InputLen:object.InputLen[=value]thiếtlậphoặctrảlạisốbytemỗilầnthuộctính Inputđọctrongbộđệmnhận.MặcđịnhgiátrịValue=0tứclàthuộctínhInputsẽđọchết nộidungcủabộđệmnhậnkhithuộctínhnàyđượcgọi.Nếusốkítựtrongbộđệmnhận không=InputLenthìthuộctínhInputsẽtrảlạikítựrỗng“”.Víthếbạncầnphảichọn cáchkiểmtraInBufferCountđểchắcchắnsốkítựyêucầuđãcóđủtrướckhidùnglệnh .Input.Tínhchấtnàyrấtlàcóíchkhiđọcdữliệumộtmáymàdữliệurađượcđịnhdạng bằngcáckhốicókíchthướccốđịnh. +InputMode:object.InputMode[=value]. Value=0hay=comInputModeTextdữliệunhậnđượcdạngvănbảnkiểukítựtheo chuẩnANSI.Dữliệunhậnđượcsẽlàmộtsâu. Value=1hay=comInputModeBinarydùngnhậnmọikiểudữliệunhưkítựđiềukhiển nhúng,kítựNULL, GiátrịnhậnđượctừInputsẽlàmộtmảngkiểuByte. +NullDiscard:object.NullDiscard[=value]tínhchấtnàyquyếtđịnhkítựtrốngcó đượctruyềntừcổngđếnbộđệmnhậnhaykhông.Nếuvalue=Truekítựnàykhôngđược Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 5/78  truyền.value=falsekítựtrốngsẽđượctruyền.Kítựtrốngđượcđịnhnghíatheochuẩn ASCIIlàkítự0–chr$(0). +OutBuferSize:giốngnhưInBuferSize,mặcđịnhlà512. +ParityReplace:thiếtlậpvàtrảlạikítựthaythếkítựkhôngđúngtronglỗigiống nhau. +PortOpen:thiếtlậpvàtrảlạitínhtrạngcủacổng(đónghoặcmở). object.PortOpen[=value].value=truecổngmở.value=falsecổngđóngvàxóatoàn bộdữliệutrongbộđệmnhậnvàtruyền.CầnphảithiếtlậpthuộctínhCommPortđúngvới têncủacổngtrướckhimởcổnggiaotiếp.Thêmvàođó,cổnggiaotiếpcủathiếtbịcủabạn phảihỗtrợgiátrịtrongthuộctínhSettingthìthiếtbịc ủabạnmớihoạtđộngđúng,còn khôngthìnósẽhoạtđộngrấtdởhơinếukhôngnóilànóchạykhôngtốt.ĐườngDTRvà RTSluôngiữlạitrạngtháicủacổng. +RthresHold:object.Rthreshold[=value]valuekiểusốnguyên.Thiếtlậpsốkítự nhậnđượctrướckhigâylênsựkiệncomEvReceive.Mặcđịnh=0tứclàkhôngcósựkiện OnCommkhinhậnđượcdữliệu.Thiếtlập=1tứclàsựkiệnOnCommxảyrakhibấtkìkí tựnàođượcchuyểnđếnbộđệmnhận. +Settings:object.Settings[=value]thiếtlậphoặctrảlạicácthôngsốtầnsốbaud,bít dữliệu,bítchẵnlẻ,bítstop.NếuValuekhôngcógiátrịkhimởsẽgâyralỗi380(Invalid propertyvalue). +SThreshold:thiếtlậpvàvàtrảlạisốkítựnhỏnhấtđượcchophéptrongbộđệmgửi đểxảyrasựkiệnOnComm=comEvSend.Theomặcđịnhgiátrịnày=0tứclàkhitruyền sẽkhônggâyrasựkiệnOnComm.Nếuthiếtlậpthôngsốnày=1thìsựkiện OnComm xảy rakhibộđệmtruyềnrỗng.SựkiệnOnComm=comEvSendchỉxảyrakhimàsốkítự trongbộđệmtruyềnnhỏhơnhoặc=Sthreshold.Nếusốkítựtrongbộđệmnàyluônlớn hơnSthresholdthìsựkiệnnàykhôngthểxảyra. Truyềnnhậndữliệu: +CommEvent:trảlạiphầnlớnsựkiệngiaotiếphoặccólỗi.CommEventxảyrakhicó lỗihoặckhixảyrasựkiệnnàođó.Sauđâylàmộtsốhằngsốlỗi: Sựkiện Giátrị Miêutảsựkiện comEventBreak 1001 XảyrakhinhậnđượcmộttínhiệuBreak. comEventFrame 1004 Lỗihệthống.Phầncứngpháthiệnramộtlỗihệthống comEventOverrun 1006 Xảyrakhicổngtựtràn(Overrun).Mộtkítựkhôngđược đọctừphầncứngtrướckhikítựtiếptheotớivàdođókítự nàybịmất. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 6/78  comEventRxOver 1008 Xảyrakhibộđệmnhậnbịtràn.Khôngcóđủchỗchodữ liệutrongbộđệmnhận. comEventRxParity 1009 LỗiParity.PhầncứngpháthiệnramộtlỗiParity. comEventTxFull 1010 xảyrakhibộđệmtruyềnbịđầy.Bộđệmtruyềnbịđầy trongkhighidữliệulớnvàobộđệm comEventDCB 1011 Mộtlỗikhôngmongmuốnkhiđangkhôiphụclạikhỗi điềukhiểnthiếtbị(DCB–DeviceControlBlock)chocổng  Mộtsốsựkiện:  Sựkiện Giátrị Miêutảsựkiện comEvSend 1 Xảyrakhisốkítựtrongbộđệmtruyềnnhỏhơngiátrị SthresHold. comEvReceive 2 Xảyrakhibộđệmnhậnđượcsốkítựbằnggiátrị RthresHold.Sựkiệnnàyđượctạoraliêntụcchotớikhibạn dùngthuộctínhInputđểlấyhếtdữliệutừtrongbộđệm nhận. RcomEvCTS 3 XảyrakhicóthayđổitrongđườngCTS(ClearToSend) comEvDSR 4 XảyrakhithayđổitrongđườngDSR(DataSetReady).Sự kiệnnàychỉxảyrakhiđườngDSRthayđổitừ1‐>0. comEvCD 5 XảyrakhicóthayđổitrongđườngCD(CarrierDetect) comEvRing 6 Pháthiệnchuông(Ring).MộtsốUARTkhônghỗtrợsự kiệnnày. comEvEOF 7 Xảyrakhinhậnđượckítựkếtthúcfile(kítự26trong bảngmãASCII)  +EOFEnable:object.EOFEnable[=value]quyếtđịnhcáchànhđộngnếuMSComm tìmthấykítựkếtthúcfile.Nếuvalue=truekhitìmthấykítựkếtthúcfilethìsẽgâylênsự kiệncomEvEOFtrongOnCommEvent.Nếuvalue=falsethìsẽkhônggâylênsựkiệnnày. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 7/78  +InBufferCout:trảlạisốkítựđangcótrongbộđệmnhậnBạncóthểxoábộđệmnhận bằngcáchđặtthuộctínhnày=0.KhôngnhầmvớithuộctínhInBufferSizelàtổngkích thướccủabộđệmnhận. +Input:nhậnvàxoádữliệutrongbộđệmnhận. NếuInputModelàcomInputModeTextthìgiátrịtrảvềsẽlàmộtxâutứccókiểu String,dữliệudạngtexttrongmộtbiếnkiểuVariant.NếuInputMode= comInputModeBinarythìthuộctínhnàysẽtrảlạidữliệudạngnhịphândướidạngmột mảngkiểubytetrongmộtbiếnVariant. +OutBufferCount:trảlạisốkítựtrongbộđệmtruyền. +Output:ghidữliệuvàobộđệmtruyền.cóthểtruyềnkiểutexthoặckiểunhịphân. NếutruyềnbằngkiểutextthìchomộtbiếnVariant=kiểuString,nếutruyềnkiểunhịphân thìchochoOutput=variant=mộtmảngkiểuByte. Bắttay(handshaking): +Break:thiếtlậphoặcxoátínhiệu.object.Break[=value]value=truehoặcfalse.Khi setvalue=truethìthôngsốBreaknàysẽgửimộttínhiệubreak.Tínhiệubreaktrìhoàn việctruyềndữliệuvàđưađườngtruyềnvàotrạngtháibreaktớikhimàvalue=false. +CDHolding:quếtđịnhxemsựtruyềnnàyđếnđâubằngcáchtruyvấnđườngCD( CarrierDetect).CarrierDetectlàtínhiệugửitừmodemtớimáytínhkếtnốivớinóthống báorằngnóđangonline.Nếugiátrị=truethìnóđườngCDđangởmứccao,nếu=false thìđườngdâynàyđangởmứcthấp.Tínhchấtnàykhôngcótronglúcthiếtkếchỉcótrong khichạychươngtrình.CarrierDetectđượcbiếtnhưlàReceiveLineSignalDetect(RLSD). +CTSHolding:quếtđịnhkhinàobạngửidữliệubằngcáchtruyvấntrạngtháiđường ClearToSend(CTS).ThôngthườngtínhiệuCTSđượcgửitừmodemtớimáytínhkếtnối vớinóđểbáorằngđangquátrìnhtruyềndữliệu.ThuộctínhReadonlychỉxuấthiệnkhi chạychươngtrình.ĐườngClearToSenddùngtrongRTS/CTS(RequestToSend/ClearTo Send)bắttayphầncứng.CTSHoldingchobạnmộtcáchđểtựtaydòđườngClearToSend nếubạncầnbiếttrạngtháicủanó. +DSRHolding:biếttrạngtháicủađườngDataSetReady(DSR).TínhiệuDataSet Readytruyềntừmodemtớimáytínhnốivớinóđểthôngbáorằngmodemđãsẵnsàng hoạtđộng.TínhchấtnàydùngkhiviếtDataSetReady/DataTerminalReadyhandshaking routinechomáyDataTerminalEquipment(DTE)‐máytrangbịđầucuốidữliệu. +DTREnable:tínhchấtnàyquyếtđịnhkhinàochophépđườngDataTerminalReady (DTR)trongtruyềnthông.TínhiệuDTRgửitừmáytínhtớimodemđẻbáorằngmáytính sẵnsànglànơinhậndữliệu.KhiDTREnable=truethìđườngDataTerminalReadysetlên caokhicổngmở,vàthấpkhicổngđóng.NếuDTREnable=falsethìđườngđóluônmức thấp.TrongphầnlớntrườnghợpsetđườngDataTerminalReadythànhthấpđểhangup telephone. Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 8/78  +Handshaking:thiếtlậpvàtrảlạigiaothứcbắttayphầncứng.object.Handshaking[= value]. Cácgiátrịcủavalue:  comNone  0 (Mặcđịnh)Khôngbắttay comXOnXOff 1 BắttayXON/XOFF comRTS  2 BắttayRTS/CTS(RequestToSend/ClearToSend) comRTSXOnXOff 3 DùngcảbắttayRequestToSendandXON/XOFF   Handshakingchỉlàgiaothứctruyềnthôngnộitạiquyếtđịnhbởidữliệunàođược truyềntừcổngphầncứngtớibộđệmnhận.Khikítựcủadữliệutớicổngnối tiếp,thiếtbị truyềnthôngsẽchuyểnnóvàotrongbộđệmnhậnvàchươngtrìnhcủabạncóthểđọc chúng.Nếukhôngcóbộđệmdữliệuhoặcchươngtrìnhcủabạncầnđọckítựtrựctiếptừ phầncứng,bạncóthểmấtdữliệubởivìkítựtừphầncứngđếnrấtnhanh.Giaothức Handshakingđảmbảodữliệukhôngbịmất,khidữliệuđếncổngquánhanhthìthiếtbị truyềnthôngsẽchuyểndữliệuvàotrongbộđệmnhận. +RTSEnable:quếtđịnhkhinàochophépđườngRequestToSend(RTS),TínhiệuRTS từmáytínhtớimodemđểyêucầuđượctryềndữliệu.KhiRTSEnable=truethìđường RTSmứccaokhicổngmở,tíchmứcthấpkhicổngđóng.VàhiểnnhiênkhiRTSEnablethì đườngRTSluônmứcthấp.RTSdùngtrongRTS/CTShardwarehandshaking.RTSEnable chophépbạndòđườngRTSkhicầnbiếttìnhtrạngcủađườngnày. Cáctínhchấttrênkhôngcólúcthiếtkếgiaodiệnmàchỉcólúcchạychươngtrình( dùngtrongviếtcode). 1.1.2. ĐiềukhiểnMSCommtrongVisualC++ TrênđâylàcácthamsốcủađiềukhiểnMSCommtrongVB. TrongVisualC++,mỗimộtđiềukhiểnđượcđịnhnghĩatrongmộtlớpriêng.Và MSCommcũngkhôngphảilàngoạilệ. Vớicácthamsốởtrêncácbạnhoàntoàncóthểápdụngrấtlàtốtcholậptrìnhvới VC++bởilẽcácthamsốnàybạncóthểlấygiátrịhoặcthiếtlậpthamsốchochúngtương ứngbằngcáchàmthànhviêncửalớpnhưGet_thuộctínhhoặcSet_thuộctính. Vídụ,bạnmuốnthiếtlậpdùngcổngCOM1chẳnghạnthìdùngthuộctínhCommPort ởtrênvàchỉthêmtiềntốSet_nếumuốnthiếtlậpvàGet_nếumuốnlấygiátrịnày. SauđâylàlớpMSCommlàmộtlớpkếthừatừlớpcởsởCWnd,cácbạncóthểtham khảo.Cácbạnchúývềcáckiềudữliệucửacácthamsốvàgiátrịtrảvềcủacáchàm.Việc Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 9/78  chuyểnđổigiữacáckiểudữliệunàycácbạncóthểthamkhảotạithưviệnMSDN MicrosoftJuly2001bằngcáchSearch KeyWord:chínhlàcáctừkhoáchỉnhlàcáckiểudữliệuđó.(nhưCString,…)  classCMSComm:publicCWnd { protected:  DECLARE_DYNCREATE(CMSComm) public:  CLSIDconst&GetClsid()  { staticCLSIDconstclsid ={0x648a5600,0x2c6e,0x101b,{0x82,0xb6,0x0,0x0,0x0,0x0,0x0,0x14}}; returnclsid;  }  virtualBOOLCreate(LPCTSTRlpszClassName, LPCTSTRlpszWindowName,DWORDdwStyle, constRECT&rect, CWnd*pParentWnd,UINTnID, CCreateContext*pContext=NULL)  {returnCreateControl(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID); }  BOOLCreate(LPCTSTRlpszWindowName,DWORDdwStyle, constRECT&rect,CWnd*pParentWnd,UINTnID, CFile*pPersist=NULL,BOOLbStorage=FALSE, BSTRbstrLicKey=NULL)  {returnCreateControl(GetClsid(),lpszWindowName,dwStyle,rect,pParentWnd,nID, pPersist,bStorage,bstrLicKey);}  //Attributes public:  //Cácphéptoán public:  voidSetCDHolding(BOOLbNewValue);  BOOLGetCDHolding();  voidSetCommID(longnNewValue);  longGetCommID(); Ngườibáocáo: NgôHảiBắc Tàiliệu: TUT01.03 Ngày: 10/01/06 Trang: 10/78   voidSetCommPort(shortnNewValue);  shortGetCommPort();  voidSetCTSHolding(BOOLbNewValue);  BOOLGetCTSHolding();  voidSetDSRHolding(BOOLbNewValue);  BOOLGetDSRHolding();  voidSetDTREnable(BOOLbNewValue);  BOOLGetDTREnable();  voidSetHandshaking(longnNewValue);  longGetHandshaking();  voidSetInBufferSize(shortnNewValue);  shortGetInBufferSize();  voidSetInBufferCount(shortnNewValue);  shortGetInBufferCount();  voidSetBreak(BOOLbNewValue);  BOOLGetBreak();  voidSetInputLen(shortnNewValue);  shortGetInputLen();  voidSetNullDiscard(BOOLbNewValue);  BOOLGetNullDiscard();  voidSetOutBufferSize(shortnNewValue);  shortGetOutBufferSize();  voidSetOutBufferCount(shortnNewValue);  shortGetOutBufferCount();  voidSetParityReplace(LPCTSTRlpszNewValue);  CStringGetParityReplace();  voidSetPortOpen(BOOLbNewValue);  BOOLGetPortOpen();  voidSetRThreshold(shortnNewValue);  shortGetRThreshold();  voidSetRTSEnable(BOOLbNewValue);  BOOLGetRTSEnable();  voidSetSettings(LPCTSTRlpszNewValue);  CStringGetSettings();  voidSetSThreshold(shortnNewValue);  shortGetSThreshold();  voidSetOutput(constVARIANT&newValue);  VARIANTGetOutput();  voidSetInput(constVARIANT&newValue); [...]... SthresHold,PortOpen, InputLen, InputBuffer, OutputBuffer, InBufferSize, InputMode,  OutBufferSize.    2 Lập trình 2.1 Mục đích yêu cầu  Chương trình này rất là đơn giản. Chúng ta sẽ tạo ra một chương trìnhgiao diện như  sau:    Hình 2.1: Giao diện chương trình    Chương trình có chức năng sau:  ‐ Nhập kí tự hoặc xâu kí tự vào EditBox Transfer, điều chỉnh tham số giao tiếp trên  các ComboBox. Nhấn nút Send để gửi dữ liệu ra cổng COM.   ‐ Đồng thời với nó nếu có dữ liệu truyền vê cổng Com thì dữ liệu sẽ được hiển thị ... Ngô Hải Bắc  Tài liệu:  TUT01.03  Ngày:  10/01/06  Trang:  14/78    Để có thể test luôn chương trình các bạn nối tắt chân 2 và chân 3 của RS232 lại với nhau  chính là nối chân RxD và TxD để chúng ta truyền dữ liệu ra RS232 sau đó nhận dữ liệu  luôn. Đây là ví dụ test đơn giản không có bắt tay phần cứng.        Hình 2.2: Sơ đồ đấu chân của RS232 2.2 Thiết kế giao diện cho chương trình   2.2.1 Tạo dự án “RS232TUT” ...   Hình 2.28: 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      Hình 2.30: Thiết lập thuộc tính cho GroupBox3    Hình 2.31: 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.32: Thiết lập thuộc tính cho GroupBox5    Hình 2.33: Thiết lập thuộc tính cho GroupBox6 ... Hình 2.33: 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.34: Thiết lập thuộc tính cho GroupBox7    Hình 2.34: 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.35: 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.24: 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.25: Thêm GroupBox9  Thay đổi thuộc tính cho GroupBox1:      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.26: Kích chuột vào GroupBox1 chọn Properties    Hình 2.27: 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: ... Khởi động Visual C++, chọn New từ menu File  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 ... 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.15: Đó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.16: Thêm điều khiển MSComm  Người báo cáo:  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 ... Ngô Hải Bắc  Tài liệu:  TUT01.03  Ngày:  10/01/06  Trang:  32/78      Hình 2.37 Làm cho các GroupBox 7‐>9 có khoảng cách bằng nhau    Hình 2.38: 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.39: 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.40: Thêm EditBox1  Người báo cáo:  Ngô Hải Bắc  Tài liệu: ... 10/01/06  Trang:  34/78      Hình 2.41: kích chuột phải, chọn Properties     Hình 2.42: Thiết lập ID cho EditBox1  Người báo cáo:  Ngô Hải Bắc  Tài liệu:  TUT01.03  Ngày:  10/01/06  Trang:  35/78      Hình 2.43: Thiết lập thuộc tính ReadOnly và MultiLine    Hình 2.44: Thêm EditBox2  Người báo cáo:  Ngô Hải Bắc  Tài liệu:  TUT01.03  Ngày:  10/01/06  Trang:  36/78      Hình 2.45: Chọn Properties    Hình 2.46: Thuộc tính của EditBox ...   Hình 2.18: 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.19: Thêm GroupBox3    Hình 2.20: Thêm GroupBox4  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.21: Thêm GroupBox5    Hình 2.22: 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.23: Thêm GroupBox7  .  trongthựctế. Dođótôixingiớithiệuchocácbạnviếtchương trình trênPCdùngMSComm.Tôixinđưaramột sốvấn đề nhưsau: ‐Giớithiệuchuẩn giao tiếp RS232 vàđiềukhiểnActiveXMicrosoftCommunication6.0( MSComm):cáchtínhchấtvàcáchthiết lập thamsốtốiưuchođiềukhiển. ‐ Lập trình ứngdụng giao tiếp trêncơsởsửdụngphầnmềmVisualC++trongbộ công cụVisual‐ Studio6.0củaMicrosft: +Thiếtkế giao diệnchương trình.  +Viếtmãchochương trình.   1. ĐiềukhiểnMSComm 1.1. Chuẩn giao tiếp RS232 RS232 làmộtchuẩn giao tiếp nối tiếp dùngđịnhdạngkhôngđồngbộ,kếtnốinhiều nhấtlà với 2thiếtbị,chiềudàikếtnốilớnnhấtchophépđểđảmb.  trongthựctế. Dođótôixingiớithiệuchocácbạnviếtchương trình trênPCdùngMSComm.Tôixinđưaramột sốvấn đề nhưsau: ‐Giớithiệuchuẩn giao tiếp RS232 vàđiềukhiểnActiveXMicrosoftCommunication6.0( MSComm):cáchtínhchấtvàcáchthiết lập thamsốtốiưuchođiềukhiển. ‐ Lập trình ứngdụng giao tiếp trêncơsởsửdụngphầnmềmVisualC++trongbộ công cụVisual‐ Studio6.0củaMicrosft: +Thiếtkế giao diệnchương trình.  +Viếtmãchochương trình.   1 Cáchthiết lập tốiưuchoứngdụng Đểchoứngdụngcóthểđọcngaydữliệukhibắtđầucótrongbộđệmnhậnthìcácbạn nênđặtthuộctínhRthresHold=1. Ngoàiracácbạncầnquantâmđếncácthamsố:CommPort,Settings,Rthreshold, SthresHold,PortOpen,InputLen,InputBuffer,OutputBuffer,InBufferSize,InputMode, OutBufferSize.  2. Lập trình 2.1. Mụcđíchyêucầu Chương trình nàyrấtlàđơngiản.Chúngtasẽtạoramộtchương trình có giao diệnnhư sau:  Hình2.1: Giao diệnchương trình  Chương trình cóchứcnăngsau: ‐NhậpkítựhoặcxâukítựvàoEditBoxTransfer,điềuchỉnhthamsố giao tiếp trên cácComboBox.NhấnnútSendđểgửidữliệuracổngCOM. ‐Đồngthời với nónếucódữliệutruyềnvêcổngComthìdữliệusẽđượchiểnthị lênEditBoxReceive.KhibạnnhấnvàoClearthìsẽxoádữliệuhiểnthịtrênEditBoxnày. Chúý: Ngườibáocáo: NgôHảiBắc Tài liệu: TUT01.03 Ngày: 10/01/06 Trang: 14/78  Đểcóthểtestluônchương trình cácbạnnốitắtchân2vàchân3của RS232 lại với nhau chínhlànốichânRxDvàTxDđểchúngtatruyềndữliệura RS232 sauđónhậndữliệu luôn.Đâylàvídụtestđơngiảnkhôngcóbắttayphầncứng.    Hình2.2:Sơđồđấuchâncủa RS232 2.2.

Ngày đăng: 27/06/2014, 10:56

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan