Make(delphi) ver(4.01 build 175) Add(MainForm,3901963,84,238) { Width=469 Height=463 Caption="Serial in out vbscript" BorderStyle=1 } Add(Button,13112734,161,259) { Left=5 Top=120 Width=100 Caption="Go serial port write" link(onClick,13478035:WritePort,[]) } Add(Memo,6874359,308,245) { Left=120 Top=10 Width=330 Height=310 Strings=#24:Const NoHandshaking = 0|18:Const XonXoff = 1|17:Const RtsCts = 2|27:Const XonXoffAndRtsCts = 3| ScrollBars=3 } Add(Button,2560319,154,252) { Left=5 Top=145 Width=100 Caption="Go serial port read" link(onClick,13478035:ReadPort,[]) } Add(Memo,13889833,308,315) { Left=5 Top=330 Width=445 Height=95 AddType=1 ScrollBars=3 } Add(VBJScript,13478035,224,238) { WorkPoints=#8:OpenPort|9:ClosePort|8:ReadPort|9:WritePort|3:DTR|3:RTS| EventPoints=#5:onSet|6:onRead|7:onWrite|5:onErr|7:onEvent| DataPoints=#4:Port|10:SizeBuffer|8:Settings|5:inStr| Script=#7:Dim sp |66:'Enum HandshakingConstants; // MS Comm Control Handshake Constants|24:Const NoHandshaking = 0|18:Const XonXoff = 1|17:Const RtsCts = 2|27:Const XonXoffAndRtsCts = 3|0:|64:'Enum HandshakeConstants; // MS Comm Control Handshake Constants|18:Const comNone = 0|21:Const comXOnXoff = 1|17:Const comRTS = 2|24:Const comRTSXOnXOff = 3|0:|40:'Enum ErrorConstants; // Error Constants|38:Const comInvalidPropertyValue = &H17C|33:Const comGetNotSupported = &H18A|33:Const comSetNotSupported = &H17F|30:Const comPortInvalid = &H1F42|34:Const comPortAlreadyOpen = &H1F45|27:Const comPortOpen = &H1F40|25:Const comNoOpen = &H1F4C|37:Const comSetCommStateFailed = &H1F4F|30:Const comPortNotOpen = &H1F52|28:Const comReadError = &H1F54|27:Const comDCBError = &H1F55|23:Const comBreak = &H3E9|23:Const comCTSTO = &H3EA|23:Const comDSRTO = &H3EB|23:Const comFrame = &H3EC|25:Const comOverrun = &H3EE|22:Const comCDTO = &H3EF|24:Const comRxOver = &H3F0|26:Const comRxParity = &H3F1|24:Const comTxFull = &H3F2|21:Const comDCB = &H3F3|0:|45:'Enum CommEventConstants; // Error constants.|28:Const comEventBreak = &H3E9|28:Const comEventCTSTO = &H3EA|28:Const comEventDSRTO = &H3EB|28:Const comEventFrame = &H3EC|30:Const comEventOverrun = &H3EE|27:Const comEventCDTO = &H3EF|29:Const comEventRxOver = &H3F0|31:Const comEventRxParity = &H3F1|29:Const comEventTxFull = &H3F2|26:Const comEventDCB = &H3F3|0:|43:'Enum OnCommConstants; // OnComm constants.|20:Const comEvSend = 1|23:Const comEvReceive = 2|19:Const comEvCTS = 3|19:Const comEvDSR = 4|18:Const comEvCD = 5|20:Const comEvRing = 6|19:Const comEvEOF = 7|0:|48:'Enum InputModeConstants; // InputMode Constants|27:Const comInputModeText = 0|29:Const comInputModeBinary = 1|0:|0:|52:Set sp = sys.CreateObject("MScommLIB.MSComm","Ole_")|21:'On Error Resume Next|16:Sub Ole_OnComm()|28: Select Case Ole.CommEvent|42: ' Handle each event or error by placing|35: ' code below each case statement|3: |11: ' Errors|62: Case comEventBreak : sys.onErr "A Break was received."|55: Case comEventFrame : sys.onErr " Framing Error"|52: Case comEventOverrun : sys.onErr " Data Lost."|66: Case comEventRxOver : sys.onErr " Receive buffer overflow."|55: Case comEventRxParity: sys.onErr " Parity Error."|63: Case comEventTxFull : sys.onErr " Transmit buffer full."|74: Case comEventDCB : sys.onErr " Unexpected error retrieving DCB]"|0:|11: ' Events|64: Case comEvCD : sys.onEvent " Change in the CD line."|65: Case comEvCTS : sys.onEvent " Change in the CTS line."|65: Case comEvDSR : sys.onEvent " Change in the DSR line."|71: Case comEvRing : sys.onEvent " Change in the Ring Indicator."|73: Case comEvReceive : sys.onEvent " Received RThreshold # of chars."|107: Case comEvSend : sys.onEvent " There are SThreshold number of characters in the transmit buffer."|87: Case comEvEof : sys.onEvent " An EOF charater was found in the input stream"|13: End Select|7:End Sub|0:|0:|22:Sub doWork(Data,Index)|20:On Error Resume Next|18: Select Case Index|17: Case "OpenPort"|10: |37: sp.CommPort = sys.Port |36: sp.Settings = sys.Settings |36: sp.InputLen = sys.SizeBuffer|26: sp.PortOpen = True|25: sys.onSet vbFalse|8: |18: Case "ClosePort"|46: sp.PortOpen = False : sys.onSet vbTrue|17: Case "ReadPort"|27: sys.onRead sp.Input|18: Case "WritePort"|23: tmp = sys.inStr|42: sp.Output = tmp : sys.onWrite null|18: Case "DTR" |25: sp.DTREnable=Data|17: Case "RTS" |39: sp.RTSEnable=Data |11: End Select|26: sys.onErr Err.Description|10: Err.Clear|7:End Sub| UseName=0 link(onSet,3578326:doEnabled,[(272,244)(272,195)]) link(onRead,6874359:doAdd,[]) link(onErr,3544170:doWork1,[(270,265)]) link(onEvent,3544170:doWork2,[]) link(Port,3018786:EditText,[(230,229)(202,229)]) link(SizeBuffer,3307039:Value,[]) link(Settings,3578326:Text,[(244,216)(293,216)]) link(inStr,6874359:Text,[(251,226)(292,226)(292,298)(314,298)]) } Add(Button,15543034,147,245) { Left=5 Top=95 Width=100 Caption="Close com port" link(onClick,13478035:ClosePort,[]) } Add(Edit,3578326,287,175) { Left=5 Top=35 Width=100 Text="9600,N,8,2" Point(doEnabled) } Add(Button,3946938,140,238) { Left=5 Top=70 Width=100 Caption="Open com port" link(onClick,13478035:OpenPort,[]) } Add(Memory,3307039,231,119) { Default=Integer(0) } Add(InfoTip,5477304,210,77) { Info=#42:Размер буфера чтения в байтах 0=весь буфер| Width=92 Height=81 } Add(HubEx,3544170,266,259) { Angle=1 link(onEvent,13889833:doAdd,[(270,321)]) } Add(ComboBox,3018786,182,175) { Left=5 Top=10 Width=100 Height=21 Strings=#1:1|1:2|1:3|1:4| Text="1" ReadOnly=0 Point(EditText) }