1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án: Lập trình giao tiếp máy tính qua cổng RS232 pps

79 521 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 79
Dung lượng 3,1 MB

Nội dung

Lập trình giao tiếp máy tính qua cổng RS232 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(); [...]... 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. ... 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:  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 ... 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”  Khởi động Visual C++, chọn New từ menu File ... 1.3 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ư ...   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.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:  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.36: Làm cho các GroupBox có cùng kích thước ... 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      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 ... 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  ... // VT_BYREF|VT_UI4 }; };      Các bạn để  ý thấy rằng kiểu VARIANT dùng làm tham số cho hàm SetInput và là kiểu  trả về của hàm GetOutput. Mà với kiểu truyền kiểu dạng Text chúng ta truyền dữ liệu ra  cổng là dạng xâu kí tự thì chúng ta chuyển đối giữ kiểu VARIANT sang kiểu kí tự CString  như thế nào?  ‐ Chuyển từ kiểu CString ‐> VARIANT: tôi dùng lớp ColeVariant ( các bạn có thể tra  trong MSDN dùng tab Index) là dạng đóng gói của kiểu cấu trúc VARIANT, lớp này có ... 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ườ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,. 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.  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

Ngày đăng: 05/07/2014, 09:20

TỪ KHÓA LIÊN QUAN

w