Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 79 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
79
Dung lượng
3,14 MB
Nội dung
Báo cáo tốt nghiệp 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(); [...]... 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 Người báo cáo: ... 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ị ... 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 ... 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 Thiết kế giao diện cho chương trình ... Tạo dự án “RS232TUT” 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: ... Hình 2.23: Thêm GroupBox7 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: ... Hình 2.17: Thêm GroupBox1 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 ... 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: TUT01.03 Ngày: 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 ... Hình 2.14: 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.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 ... 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 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: . Báo cáo tốt nghiệp Lập trình giao tiếp máy tính qua cổng RS232 Người báo cá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ập trình giao tiếp máy tính qua cổng RS232. Người báo cá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ập trình giao tiếp máy tính qua cổng RS232 MICROSOFTWORD Tómtắt: Vấn giao tiếp giữaPCvàviđiềukhiểnrấtquantrongtrongcácứngdụngđiềukhiển,đolường,. GiátrịnhậnđượctừInputsẽlàmộtmảngkiểuByte. +NullDiscard:object.NullDiscard[=value] tính chấtnàyquyếtđịnhkítựtrốngcó đượctruyềntừ cổng đếnbộđệmnhậnhaykhông.Nếuvalue=Truekítựnàykhôngđược Người báo cá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ết lập vàtrảlạikítựthaythếkítựkhôngđúngtronglỗigiống nhau. +PortOpen:thiết lập vàtrảlại tính trạngcủa cổng( đónghoặcmở). object.PortOpen[=value].value=true cổng mở.value=false cổng đóngvàxóatoàn bộdữliệutrongbộđệmnhậnvàtruyền.Cầnphảithiết lập thuộc tính CommPortđúngvới têncủa cổng trướckhimở cổng giao tiếp. Thêmvàođó, cổng giao tiếp củathiếtbịcủabạn phảihỗtrợgiátrịtrongthuộc tính Settingthìthiếtbịc