Rev 4 | Blame | Compare with Previous | Last modification | View Log | Download
VERSION 5.00Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"Begin VB.Form DataTakerInfoCaption = "DataTaker communicatie"ClientHeight = 5580ClientLeft = 60ClientTop = 195ClientWidth = 10950ControlBox = 0 'FalseIcon = "Data_Comm.frx":0000LinkTopic = "Form1"ScaleHeight = 5580ScaleWidth = 10950StartUpPosition = 1 'CenterOwnerBegin VB.CheckBox CheckContCaption = "cont"Height = 255Left = 6000TabIndex = 76Top = 5280Visible = 0 'FalseWidth = 735EndBegin VB.CommandButton DetailsCaption = "Details"Height = 375Left = 9600TabIndex = 74Top = 5160Width = 1215EndBegin VB.CommandButton DataBaseCaption = "Database"Enabled = 0 'FalseHeight = 375Left = 6840TabIndex = 72Top = 5160Visible = 0 'FalseWidth = 1095EndBegin VB.Timer Timer1Interval = 1300Left = 3240Top = 4200EndBegin VB.CommandButton BlokCaption = "Blok"Height = 375Left = 4800TabIndex = 69Top = 5160Width = 1095EndBegin VB.TextBox PauzeTextAlignment = 2 'CenterHeight = 285Left = 7440TabIndex = 68Text = "Loopt"Top = 1320Width = 975EndBegin VB.CommandButton PauzeCaption = "Pauze "Height = 375Left = 7440TabIndex = 67Top = 1800Width = 975EndBegin VB.TextBox HistorieAantalHeight = 285Left = 6840TabIndex = 66Top = 4800Width = 1095EndBegin VB.PictureBox Picture1BorderStyle = 0 'NoneHeight = 1335Left = 8880Picture = "Data_Comm.frx":0442ScaleHeight = 1335ScaleWidth = 1815TabIndex = 64Top = 360Width = 1815EndBegin VB.TextBox OutputboxBeginProperty FontName = "Terminal"Size = 6Charset = 255Weight = 700Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyHeight = 855Left = 1200MultiLine = -1 'TrueTabIndex = 60Top = 1320Width = 6015EndBegin VB.TextBox IniStringHeight = 285Left = 1200TabIndex = 58Text = "R1-E"Top = 4800Width = 1095EndBegin VB.TextBox ErrorTextHeight = 285Left = 7680TabIndex = 57Top = 4320Width = 3255EndBegin VB.TextBox FaseTextAlignment = 2 'CenterAppearance = 0 'FlatHeight = 285Index = 1Left = 9240TabIndex = 56Text = "0"Top = 1800Width = 255EndBegin VB.Timer SecondeInterval = 1000Left = 2760Top = 4200EndBegin VB.TextBox HoogteHeight = 285Left = 1200TabIndex = 52Top = 4200Width = 1095EndBegin VB.TextBox TempHeight = 285Left = 1200TabIndex = 51Top = 3840Width = 1095EndBegin VB.TextBox GewichtHeight = 285Left = 1200TabIndex = 50Top = 3480Width = 1095EndBegin VB.TextBox DataTextHeight = 285Index = 17Left = 9360TabIndex = 49Top = 2400Width = 735EndBegin VB.TextBox TslaveHeight = 285Left = 1200TabIndex = 48Top = 2400Width = 1095EndBegin VB.TextBox TtijdHeight = 285Left = 1200TabIndex = 47Top = 3120Width = 1095EndBegin VB.TextBox TdatumHeight = 285Left = 1200TabIndex = 46Top = 2760Width = 1095EndBegin VB.TextBox DataTextHeight = 285Index = 35Left = 5640TabIndex = 42Top = 4320Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 34Left = 4800TabIndex = 41Top = 4320Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 33Left = 3960TabIndex = 40Top = 4320Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 32Left = 6480TabIndex = 39Top = 3960Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 31Left = 5640TabIndex = 38Top = 3960Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 30Left = 4800TabIndex = 37Top = 3960Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 29Left = 3960TabIndex = 36Top = 3960Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 28Left = 6480TabIndex = 35Top = 3600Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 27Left = 5640TabIndex = 34Top = 3600Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 26Left = 4800TabIndex = 33Top = 3600Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 25Left = 3960TabIndex = 32Top = 3600Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 24Left = 8520TabIndex = 31Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 23Left = 7680TabIndex = 30Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 22Left = 10200TabIndex = 29Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 21Left = 9360TabIndex = 28Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 20Left = 8520TabIndex = 27Top = 2760Width = 735EndBegin VB.TextBox FaseTextAlignment = 2 'CenterAppearance = 0 'FlatHeight = 285Index = 0Left = 8880TabIndex = 26Text = "0"Top = 1800Width = 255EndBegin VB.TextBox DataTextHeight = 285Index = 19Left = 7680TabIndex = 25Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 18Left = 10200TabIndex = 24Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 16Left = 8520TabIndex = 23Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 15Left = 7680TabIndex = 22Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 14Left = 6480TabIndex = 21Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 13Left = 5640TabIndex = 20Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 12Left = 4800TabIndex = 19Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 11Left = 3960TabIndex = 18Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 10Left = 6480TabIndex = 17Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 9Left = 5640TabIndex = 16Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 8Left = 4800TabIndex = 15Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 7Left = 3960TabIndex = 14Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 6Left = 6480TabIndex = 13Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 5Left = 5640TabIndex = 12Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 4Left = 4800TabIndex = 11Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 3Left = 3960TabIndex = 10Top = 2400Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 2Left = 2760TabIndex = 9Top = 3120Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 1Left = 2760TabIndex = 8Top = 2760Width = 735EndBegin VB.TextBox DataTextHeight = 285Index = 0Left = 2760TabIndex = 7Top = 2400Width = 735EndBegin VB.TextBox CommandoTextHeight = 285Left = 3480TabIndex = 6Text = "RESET"Top = 4800Width = 1095EndBegin VB.CommandButton CommandoCaption = "Commando"Height = 375Left = 3480TabIndex = 5Top = 5160Width = 1095EndBegin VB.CommandButton InitCaption = "Init"Height = 375Left = 1200TabIndex = 4Top = 5160Width = 1095EndBegin VB.CommandButton StopPresCaption = " Stop presentatie"Height = 615Left = 120TabIndex = 3Top = 1440Width = 975EndBegin VB.CommandButton StartPresCaption = " Start Presentatie"Height = 615Left = 120TabIndex = 2Top = 360Width = 975EndBegin VB.CommandButton CommandSluitCaption = " Stop programma"Height = 615Left = 7440TabIndex = 1Top = 360Width = 975EndBegin VB.TextBox DisplayBoxBeginProperty FontName = "Terminal"Size = 6Charset = 255Weight = 700Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyHeight = 855Left = 1200MultiLine = -1 'TrueTabIndex = 0Top = 240Width = 6015EndBegin MSCommLib.MSComm MSCommLeft = 2880Top = 3600_ExtentX = 1005_ExtentY = 1005_Version = 393216DTREnable = -1 'TrueInBufferSize = 8000InputLen = 1RThreshold = 1RTSEnable = -1 'TrueBaudRate = 1200EndBegin VB.Label Label15Caption = "versie 4.0"Height = 255Left = 9120TabIndex = 75Top = 0Width = 1095EndBegin VB.Label Label14Caption = "Fase"Height = 255Left = 9600TabIndex = 73Top = 1800Width = 375EndBegin VB.Label Label13Caption = "Temp"Height = 255Left = 9480TabIndex = 61Top = 3120Width = 735EndBegin VB.Label Label12Caption = "Hoogte"Height = 255Left = 6600TabIndex = 71Top = 4320Width = 855EndBegin VB.Label Label11Caption = "Gewicht"Height = 255Left = 5280TabIndex = 70Top = 2160Width = 735EndBegin VB.Label Label10Caption = "Aantal records in historie-------"Height = 255Left = 4920TabIndex = 65Top = 4800Width = 2055EndBegin VB.Label Label9Caption = "Error"Height = 255Left = 9240TabIndex = 63Top = 4080Width = 495EndBegin VB.Label Label8Caption = "Commando---------------------"Height = 255Left = 2400TabIndex = 62Top = 4800Width = 1215EndBegin VB.Label Label7Caption = "Initstring---------------------"Height = 255Left = 120TabIndex = 59Top = 4800Width = 1215EndBegin VB.Label Label6Caption = "Hoogte---------------------"Height = 255Left = 120TabIndex = 55Top = 4200Width = 1215EndBegin VB.Label Label5Caption = "Temperatuur--------------------"Height = 255Left = 120TabIndex = 54Top = 3840Width = 1215EndBegin VB.Label Label4Caption = "Gewicht-----------------"Height = 255Left = 120TabIndex = 53Top = 3480Width = 1215EndBegin VB.Label Label3Caption = "Dag----------------------"Height = 255Left = 120TabIndex = 45Top = 2760Width = 1215EndBegin VB.Label Label2Caption = "Tijd-------------------------"Height = 255Left = 120TabIndex = 44Top = 3120Width = 1215EndBegin VB.Label Label1Caption = "Pers--------------------"Height = 255Left = 120TabIndex = 43Top = 2400Width = 1215EndBegin VB.Shape ErrorlampBackStyle = 1 'OpaqueFillColor = &H00E0E0E0&FillStyle = 0 'SolidHeight = 135Left = 7800Shape = 3 'CircleTop = 1080Width = 255EndEndAttribute VB_Name = "DataTakerInfo"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption ExplicitConst BLACK = &H0&Const RED = &HFF&Const GREEN = &HFF00&Const YELLOW = &HFFFF&Const BLUE = &HFF0000Const MAGENTA = &HFF00FFConst CYAN = &HFFFF00Const WHITE = &HFFFFFFConst LIGHTGRAY = &HC0C0C0Const DARKGRAY = &H808080Private g(12)Private Restart, Presentatie, Reading, PrgPauze As BooleanPrivate Lengte, Index As IntegerPrivate InitString, ReadString, DtString, ClearString As StringPrivate AbortString, ScanString As StringPrivate RData(100) As IntegerPrivate RDataString As StringPrivate Buffer As StringPrivate AktSlave As IntegerPrivate Fase(1) As IntegerPrivate Tijd(1) As IntegerPrivate Slave(1) As StringPrivate Pers(1) As StringPrivate VorigGewicht(2) As IntegerPrivate AnodeNr(2) As LongPrivate dbsNew As DatabasePrivate tdfNew As TableDefPrivate gw, hg, tm As IntegerPrivate CompactError As IntegerPrivate ShowDetails As BooleanPrivate ErrorOpenDB As IntegerPrivate ErrorOpenRec As IntegerPrivate ErrorUpdateRec As IntegerPrivate ErrorUpdateCrit As IntegerPrivate ErrorCloseRec As IntegerPrivate ErrorCloseDB As IntegerPrivate BlokContinu As BooleanPrivate Const MAX_PATH = 260Public SQLconnectionstring As String'Public DataTakerString As StringPublic Event CommunicatieErr(ErrorNr As Variant)Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)'compact is not used for SQL serverPrivate Sub CompactJetDatabase(Location As String)On Error GoTo CompactErrDim strBackupFile As StringDim strTempFile As String'Check the database existsIf Len(Dir(Location)) Then' Create temporary filenamestrTempFile = GetTemporaryPath & "temp.mdb"If Len(Dir(strTempFile)) Then Kill strTempFile' Do the compacting via DBEngineDBEngine.CompactDatabase Location, strTempFile' Remove the original database fileKill Location' Copy the temporary now-compressed' database file back to the original' locationFileCopy strTempFile, Location' Delete the temporary fileKill strTempFileElseEnd IfExit SubCompactErr:ErrorText.Text = "Compact database mislukt; Aantal = " + Str(CompactError)CompactError = CompactError + 1Exit SubEnd SubPublic Function GetTemporaryPath()Dim strFolder As StringDim lngResult As LongstrFolder = String(MAX_PATH, 0)lngResult = GetTempPath(MAX_PATH, strFolder)If lngResult <> 0 ThenGetTemporaryPath = Left(strFolder, InStr(strFolder, _Chr(0)) - 1)ElseGetTemporaryPath = ""End IfEnd FunctionPrivate Sub PrintText(st)Dim l As IntegerConst lbuf = 280If Presentatie ThenDisplayBox.Text = DisplayBox.Text + stl = Len(DisplayBox.Text)If l > lbuf ThenDisplayBox.Text = Mid$(DisplayBox.Text, l - lbuf + 1, lbuf)End IfDisplayBox.SelStart = Len(DisplayBox.Text) - 1DisplayBox.SelLength = 1End IfEnd SubPrivate Sub Blok_Click()Dim anr As LongIf CheckCont.Value ThenBlokContinu = TrueEnd If'bepaal anode nummer voor simulatieanr = BepaalAnodeNr(0)Call VoegRecordToe("135", Str(Date), Str(Time), tm, gw, hg, anr)tm = tm + 1gw = gw + 1hg = hg + 1anr = BepaalAnodeNr(1)Call VoegRecordToe("335", Str(Date), Str(Time), tm, gw, hg, anr)tm = tm + 1gw = gw + 1hg = hg + 1End SubPrivate Sub CheckCont_Click()If Not CheckCont.Value ThenBlokContinu = FalseEnd IfEnd SubPrivate Sub Database_Click()Load HDatabaseHDatabase.ShowEnd SubPrivate Sub Commando_Click()MSComm.Output = Slave(0) + CommandoText.Text + Chr(13) + Chr(10)MSComm.Output = Slave(1) + CommandoText.Text + Chr(13) + Chr(10)End SubPrivate Sub CommandSluit_Click()EndEnd SubPrivate Sub HideSymbols(Flag As Boolean)Dim I As IntegerBlok.Visible = FlagCheckCont.Visible = FlagCommando.Visible = FlagCommandoText.Visible = FlagFor I = 0 To 35DataText(I).Visible = FlagNext I' DisplayBox.Visible = flag' Errorlamp.Visible = flag' ErrorText.Visible = flag' FaseText(0).Visible = flag' FaseText(1).Visible = flagGewicht.Visible = Flag' HistorieAantal.Visible = flagHoogte.Visible = FlagIniString.Visible = FlagInit.Visible = FlagLabel1.Visible = FlagLabel2.Visible = FlagLabel3.Visible = FlagLabel4.Visible = FlagLabel5.Visible = FlagLabel6.Visible = FlagLabel7.Visible = FlagLabel8.Visible = Flag' Label9.Visible = flag' Label10.Visible = flagLabel11.Visible = FlagLabel12.Visible = FlagLabel13.Visible = Flag' Label14.Visible = flag' Outputbox.Visible = flagPauze.Visible = FlagPauzeText.Visible = FlagTdatum.Visible = FlagTemp.Visible = FlagTslave.Visible = FlagTtijd.Visible = FlagEnd SubPrivate Sub Details_Click()If ShowDetails = False ThenShowDetails = TrueElseShowDetails = FalseEnd IfCall HideSymbols(ShowDetails)End SubPrivate Sub Form_Load()'Dim ConnString As StringDim DBS As New ADODB.ConnectionDim RST As New ADODB.Recordset'Dim DBS As DataBase'Dim RST As RecordsetDim idxBlok As Index'DataTakerString = "3,21,08:11:28, 7.368, 1022.0, 1030.4, 1026.8, 1027.2, 9.896, 10.112, 1031.6, 1028.8, 10.136, 10.532, 1032.4, 318.0, 14.252, 14.344, 14.196, 14.412, 317.2, 14.660, 14.584, 319.6,-50.64, 322.4, 17.712, 16.316, 326.4, 17.136, 14.196, 13.968, 13.208, 17.252, 331.2, 322.8" + Chr(4)MSComm.PortOpen = TrueInitString = "/c/e/k/L/m/n/O/r/t/u P22=44 P24=4 P39=0 "ReadString = " D T 1+..17+V" + Chr(13) + Chr(10)ClearString = "CLAST" + Chr(13) + Chr(10)AbortString = "/Q" + Chr(13) + Chr(10)ScanString = "U" + Chr(13) + Chr(10)ShowDetails = FalseCall HideSymbols(False)Presentatie = FalseLengte = 0Index = 0gw = 0hg = 0tm = 0g(0) = 1g(1) = 2g(2) = 4g(3) = 8g(4) = 10g(5) = 20g(6) = 40g(7) = 80g(8) = 100g(9) = 200g(10) = 400g(11) = 800Reading = FalsePrgPauze = FalseIndex = 0Fase(0) = 0Fase(1) = 0AktSlave = 0Restart = FalseSlave(0) = "#2"Slave(1) = "#3"Pers(0) = "135"Pers(1) = "335"VorigGewicht(0) = 0VorigGewicht(1) = 0'=================================================================================='Connection string for SQL server is tied to ODBC refernece, server is defined there'==================================================================================SQLconnectionstring = "ODBC;DATABASE=datataker;DSN=datataker;UID=dt2005;PWD="'==================================================================================' SQL database will not be created in case it does not exist.'=================================================================================='If Dir("Historie.mdb") = "" Then' Set dbsNew = CreateDatabase("Historie", dbLangGeneral, dbVersion30)' Set tdfNew = dbsNew.CreateTableDef("BlokInfo")' With tdfNew' ' Create fields and append them to the new TableDef' ' object. This must be done before appending the' ' TableDef object to the TableDefs collection of the' ' database.'' .Fields.Append .CreateField("PERS", dbText)' .Fields.Append .CreateField("DATUM_TIJD", dbDate)' .Fields.Append .CreateField("HOOGTE", dbInteger)' .Fields.Append .CreateField("GEWICHT", dbInteger)' .Fields.Append .CreateField("TEMP", dbInteger)' .Fields.Append .CreateField("ANODETELLER", dbLong)'' ' Append the new TableDef object to the database.' dbsNew.TableDefs.Append tdfNew''' Set idxBlok = .CreateIndex("BlokInfoIndex")' idxBlok.Unique = False 'True'' With idxBlok' .Fields.Append .CreateField("DATUM_TIJD")' .Fields.Append .CreateField("PERS")' End With''' .Indexes.Append idxBlok' .Indexes.Refresh' End With'' Set tdfNew = dbsNew.CreateTableDef("Tellerstand")' With tdfNew' ' Create fields and append them to the new TableDef' ' object. This must be done before appending the' ' TableDef object to the TableDefs collection of the' ' database.'' .Fields.Append .CreateField("135", dbLong)' .Fields.Append .CreateField("335", dbLong)'' ' Append the new TableDef object to the database.' dbsNew.TableDefs.Append tdfNew' End With' dbsNew.Close'End If'Set DBS = OpenDatabase("Historie.mdb")'=================================================================================='Switch from DAO to ADO, otherwise inserts and edits will always fail!'Connection string from DAO is used for ADO!!!!'=================================================================================='ConnString = "driver={SQL Server};server=localhost;database=datataker;uid=datataker;pwd=datataker"DBS.CursorLocation = adUseServerDBS.ConnectionString = SQLconnectionstringDBS.Mode = adModeShareExclusiveDBS.Open'Set RST = DBS.OpenRecordset("Blokinfo", dbOpenDynaset, dbSeeChanges, dbPessimistic)Set RST.ActiveConnection = DBSRST.Open "select * from Blokinfo", DBS, adOpenKeyset, adLockPessimistic, adCmdTextHistorieAantal.Text = RST.RecordCountRST.CloseSet RST = NothingDBS.CloseSet DBS = NothingCompactError = 1End SubPrivate Sub Form_Unload(Cancel As Integer)MSComm.PortOpen = FalseEnd SubPrivate Sub Init_Click()DtString = " D=" + Trim(Str(DatePart("y", Date))) + " T=" + Time$Call DisplayOutput(Slave(0) + InitString + DtString + " " + IniString.Text + ReadString)Call DisplayOutput(Slave(1) + InitString + DtString + " " + IniString.Text + ReadString)End SubPrivate Sub MSComm_OnComm()Dim Temp As StringDim Arr() As ByteDim x, TempLengte As IntegerDim xpos As IntegerSelect Case MSComm.CommEvent' Handle each event or error by placing' code below each case statement' ErrorsCase comEventBreakErrorText.Text = "A Break was received."Errorlamp.FillColor = REDMSComm.PortOpen = FalseMSComm.PortOpen = TrueCase comEventCDTOErrorText.Text = "CD (RLSD) Timeout."Errorlamp.FillColor = REDCase comEventCTSTOErrorText.Text = "CTS Timeout."Errorlamp.FillColor = REDCase comEventDSRTOErrorText.Text = "DSR Timeout."Errorlamp.FillColor = REDCase comEventFrameErrorText.Text = "Framing Error"Errorlamp.FillColor = REDMSComm.PortOpen = FalseMSComm.PortOpen = TrueCase comEventOverrunErrorText.Text = "Data Lost."Errorlamp.FillColor = REDCase comEventRxOverErrorText.Text = "Receive buffer overflow."Errorlamp.FillColor = REDCase comEventRxParityErrorText.Text = "Parity Error."Errorlamp.FillColor = REDCase comEventTxFullErrorText.Text = "Transmit buffer full."Errorlamp.FillColor = REDCase comEventDCBErrorText.Text = "Unexpected error retrieving DCB]"Errorlamp.FillColor = RED' EventsCase comEvCDRaiseEvent CommunicatieErr(2)Case comEvCTSCase comEvDSRCase comEvRingCase comEvReceiveTempLengte = MSComm.InBufferCountTemp = MSComm.InputCall PrintText(Temp)Buffer = Buffer + TempLengte = Lengte + Len(Temp)xpos = InStr(1, Buffer, Chr(4))Reading = TrueErrorlamp.FillColor = GREENIf InStr(1, Buffer, "empty" + Chr(13)) > 0 Then 'De slave is geresetBuffer = ""Lengte = 0Restart = TrueEnd IfIf Temp = Chr(4) ThenCall VerwerkRegel(Buffer, Lengte)ErrorText.Text = ""Errorlamp.FillColor = LIGHTGRAYBuffer = ""Lengte = 0End IfCase comEvSendCase comEvEOFCase ElseErrorlamp.FillColor = REDErrorText.Text = "Onbekend event"End SelectEnd SubPrivate Sub DisplayBox_DblClick()DisplayBox.Text = ""End SubPrivate Sub OutputBox_DblClick()Outputbox.Text = ""End SubPrivate Sub DisplayOutput(st)Dim l As IntegerConst lbuf = 100If Presentatie ThenOutputbox.Text = Outputbox.Text + stl = Len(Outputbox.Text)Outputbox.SelStart = Len(Outputbox.Text) - 1Outputbox.SelLength = 1If l > lbuf Then Outputbox.Text = ""End IfMSComm.Output = stEnd SubPrivate Sub Pauze_Click()If PrgPauze = True ThenPrgPauze = FalsePauzeText.Text = "Loopt"ElsePrgPauze = TruePauzeText.Text = "Pauze"End IfEnd SubPrivate Sub Seconde_Timer()Dim Uur, Minuut, Seconde As IntegerIf Restart = True Then 'We hebben een regel met echo van de initstring ontvangenRestart = FalseFase(0) = 0Fase(1) = 0End IfSelect Case Fase(AktSlave)Case 0 'Initialiseer slaveDtString = " D=" + Trim(Str(DatePart("y", Date))) + " T=" + Time$Call DisplayOutput(Slave(AktSlave) + InitString + DtString + " " + IniString.Text + ReadString)Fase(AktSlave) = 1Tijd(AktSlave) = 0Case 1 'Wacht 10 seconden en clear dan alle inkomende karaktersTijd(AktSlave) = Tijd(AktSlave) + 1If Tijd(AktSlave) = 10 Then 'Clear karaktersBuffer = ""Lengte = 0Tijd(AktSlave) = 0Fase(AktSlave) = 2End IfCase 2 'Vraag data van slaveCall DisplayOutput(Slave(AktSlave) + ScanString)Tijd(AktSlave) = 0Fase(AktSlave) = 3Case 3 'Wacht 4 seconden en test op dataIf Lengte = 0 Then 'Er is geen dataTijd(AktSlave) = Tijd(AktSlave) + 1If Tijd(AktSlave) = 4 Then 'Abort commandoCall DisplayOutput(Slave(AktSlave) + AbortString)Tijd(AktSlave) = 0Fase(AktSlave) = 5End IfElseTijd(AktSlave) = 0Fase(AktSlave) = 4End IfCase 4 'Door de procedure verwerkregel wordt een clear verstuurd'Wacht nu 4 seconden, als de regel niet verwerkt is, clear dan het buffer en start opnieuwTijd(AktSlave) = Tijd(AktSlave) + 1If Tijd(AktSlave) = 4 Then 'Clear bufferLengte = 0Tijd(AktSlave) = 0Fase(AktSlave) = 5End IfCase 5 'Wacht 4 seconden tot de volgende pollIf PrgPauze = True Then Exit SubTijd(AktSlave) = Tijd(AktSlave) + 1If Tijd(AktSlave) > 4 Then Fase(AktSlave) = 2If AktSlave = 0 Then AktSlave = 1 Else AktSlave = 0Uur = DatePart("h", Time)Minuut = DatePart("n", Time)Seconde = DatePart("s", Time)If (Uur = 0) And (Minuut = 0) And (Seconde = 0) ThenCall UpdateDatum' CompactJetDatabase ("Historie.mdb")End If'test voor communicatie'Call VerwerkRegel(DataTakerString, Len(DataTakerString))End SelectFaseText(AktSlave).Text = Fase(AktSlave)If AktSlave = 0 ThenFaseText(0).BackColor = GREENFaseText(1).BackColor = LIGHTGRAYElseFaseText(1).BackColor = GREENFaseText(0).BackColor = LIGHTGRAYEnd IfEnd SubPrivate Sub StartPres_Click()Presentatie = TrueDisplayBox.Text = ""Outputbox.Text = ""End SubPrivate Sub StopPres_Click()Presentatie = FalseEnd SubPrivate Sub UpdateDatum()DtString = "D=" + Trim(Str(DatePart("y", Date))) + " T=" + Time$Call DisplayOutput(Slave(0) + DtString + Chr(13) + Chr(10))Call DisplayOutput(Slave(1) + DtString + Chr(13) + Chr(10))End SubPrivate Sub VerwerkRegel(Buffer, Lengte)Dim I, HJaar, HDag, Dag, Slv As IntegerDim Dat, Char As StringDim SemiAktiv As IntegerRDataString = ""Index = 0SemiAktiv = -1 'invalid indexI = 1'Haal alle elementen op gescheiden door een komma tot EOT (4)While I < Lengte + 1Char = Mid$(Buffer, I, 1)Select Case CharCase "0" To "9", " ", ".", "-", ":"RDataString = RDataString + Mid$(Buffer, I, 1)Case Chr(4)RData(Index) = Val(RDataString)If Index <= 35 Then DataText(Index).Text = RData(Index)If Index = 0 Then Slv = Val(RDataString)If Index = 2 Then Ttijd.Text = RDataStringRDataString = ""Index = Index + 1Debug.Print IndexCase ","RData(Index) = Val(RDataString)If Index <= 35 Then DataText(Index).Text = RData(Index)If Index = 0 Then Slv = Val(RDataString)If Index = 2 Then Ttijd.Text = RDataStringRDataString = ""Index = Index + 1Debug.Print IndexCase ElseExit SubEnd SelectI = I + 1WendIf ((Slv = 0) Or (Slv > 3)) Then 'Dan is dit is een regel met onzinFor I = 0 To 35DataText(I) = ""Next IGewicht.Text = ""Temp.Text = ""Hoogte.Text = ""Tslave.Text = ""Ttijd.Text = ""Tdatum = ""Exit SubEnd If'Make sure we are dealing with the correct slaveIf (Slv = 3) ThenSemiAktiv = 1ElseSemiAktiv = 0End IfGewicht.Text = VorigGewicht(Slv - 1)VorigGewicht(Slv - 1) = 0For I = 0 To 11If RData(I + 3) < 400 Then VorigGewicht(Slv - 1) = VorigGewicht(Slv - 1) + g(I)Next ITemp.Text = 0For I = 0 To 9If RData(I + 15) > 200 Then Temp.Text = Temp.Text + g(I)Next IHoogte.Text = 0For I = 0 To 10If RData(I + 25) > 200 Then Hoogte.Text = Hoogte.Text + g(I)Next I'Tslave.Text = Pers(AktSlave)Tslave.Text = Pers(SemiAktiv)'Bepaal of het aantal dagen bij dit jaar of bij het vorig jaar behoortHJaar = DatePart("yyyy", Date)HDag = DatePart("y", Date)Dag = RData(1) - 1If Dag > HDag Then HJaar = HJaar - 1Tdatum.Text = DateAdd("d", Dag, "1-Jan-" + Trim(Str(HJaar)))Call DisplayOutput(Slave(AktSlave) + ClearString)'AnodeNr(AktSlave) = BepaalAnodeNr(AktSlave)AnodeNr(SemiAktiv) = BepaalAnodeNr(SemiAktiv)'Call VoegRecordToe(Pers(AktSlave), Tdatum.Text, Ttijd.Text, Temp.Text, Gewicht.Text, Hoogte.Text, AnodeNr(AktSlave))Call VoegRecordToe(Pers(SemiAktiv), Tdatum.Text, Ttijd.Text, Temp.Text, Gewicht.Text, Hoogte.Text, AnodeNr(SemiAktiv))End SubFunction BepaalAnodeNr(Slave As Integer) As Long'Dim ConnString As StringDim DBS As New ADODB.ConnectionDim RST As New ADODB.Recordset'Dim DBS As DataBase'Dim RST As RecordsetDim Nr As LongDim ErrorCount As IntegerErrorCount = 0BepaalAnodeNr = 0On Error GoTo ErrorOpenDB'Set DBS = OpenDatabase("Historie.mdb")'Set DBS = OpenDatabase("TellerStand", dbDriverNoPrompt, False, SQLconnectionstring)'=================================================================================='Switch from DAO to ADO, otherwise inserts and edits will always fail!'Connection string from DAO is used for ADO!!!!'=================================================================================='ConnString = "driver={SQL Server};server=localhost;database=datataker;uid=datataker;pwd=datataker"DBS.CursorLocation = adUseServerDBS.ConnectionString = SQLconnectionstringDBS.Mode = adModeShareExclusiveDBS.OpenRetryUpdate:On Error GoTo ErrorOpenRec'Set RST = DBS.OpenRecordset("TellerStand", dbOpenTable)Set RST.ActiveConnection = DBSRST.Open "select * from Tellerstand", DBS, adOpenKeyset, adLockPessimistic, adCmdTextOn Error GoTo ErrorUpdateRecWith RSTIf .RecordCount = 0 Then.AddNew.Fields("135").Value = 0.Fields("335").Value = 0Else.MoveFirst' .EditModeEnd IfIf Slave = 0 ThenNr = .Fields("135").Value + 1.Fields("135").Value = NrEnd IfIf Slave = 1 ThenNr = .Fields("335").Value + 1.Fields("335").Value = NrEnd If.UpdateOn Error GoTo ErrorCloseRec.CloseEnd WithSet RST = NothingDBS.CloseSet DBS = NothingBepaalAnodeNr = NrExit FunctionErrorOpenDB:ErrorOpenDB = ErrorOpenDB + 1ErrorText.Text = "#" + Str(ErrorOpenDB) + " errors in open db: " + Str(Err.Number)Exit FunctionErrorOpenRec:ErrorOpenRec = ErrorOpenRec + 1ErrorText.Text = "#" + Str(ErrorOpenRec) + " errors in open rec: " + Str(Err.Number)On Error Resume NextDBS.CloseSet DBS = NothingExit FunctionErrorUpdateRec:ErrorUpdateRec = ErrorUpdateRec + 1ErrorCount = ErrorCount + 1ErrorText.Text = "#" + Str(ErrorUpdateRec) + "(" + Str(ErrorUpdateCrit) + ") errors in update rec: " + Str(Err.Number)If (Err.Number <> 3051) And (Err.Number <> 3260) ThenErrorCount = ErrorCount + 5End If'sta een herhaling van 5 maal toe!If ErrorCount <= 5 ThenOn Error Resume NextSet RST = NothingSleep 500 'wacht een halve seconde en probeer opnieuwGoTo RetryUpdateEnd IfErrorUpdateCrit = ErrorUpdateCrit + 1ErrorText.Text = "#" + Trim(Str(ErrorUpdateRec)) + "(" + Trim(Str(ErrorUpdateCrit)) + ") errors in update rec: " + Str(Err.Number)On Error Resume NextSet RST = NothingDBS.CloseSet DBS = NothingExit FunctionErrorCloseRec:ErrorCloseRec = ErrorCloseRec + 1ErrorText.Text = "#" + Str(ErrorCloseRec) + " errors in close rec: " + Str(Err.Number)On Error Resume NextSet RST = NothingDBS.CloseSet DBS = NothingExit FunctionEnd FunctionPrivate Sub VoegRecordToe(Slave, Datum, Tijd, Temp, Gewicht, Hoogte, Nummer)'Dim ConnString As StringDim DBS As New ADODB.ConnectionDim RST As New ADODB.Recordset'Dim DBS As DataBase'Dim RST As RecordsetDim ErrorCount As IntegerErrorCount = 0On Error GoTo ErrorOpenDB'Set DBS = OpenDatabase("Historie.mdb")'=================================================================================='Switch from DAO to ADO, otherwise inserts and edits will always fail!'Connection string from DAO is used for ADO!!!!'=================================================================================='ConnString = "driver={SQL Server};server=localhost;database=datataker;uid=datataker;pwd=datataker"DBS.CursorLocation = adUseServerDBS.ConnectionString = SQLconnectionstringDBS.Mode = adModeShareExclusiveDBS.OpenRetryUpdate:On Error GoTo ErrorOpenRec'Set RST = DBS.OpenRecordset("Blokinfo", dbOpenTable)Set RST.ActiveConnection = DBSRST.Open "select * from Blokinfo", DBS, adOpenKeyset, adLockPessimistic, adCmdTextWith RST.AddNew.Fields("PERS").Value = Slave.Fields("DATUM_TIJD").Value = Datum + " " + Tijd.Fields("HOOGTE").Value = Hoogte.Fields("GEWICHT").Value = Gewicht.Fields("TEMP").Value = Temp.Fields("ANODETELLER").Value = NummerOn Error GoTo ErrorUpdateRec.UpdateOn Error GoTo ErrorCloseRec'.CloseEnd With'update record countOn Error GoTo ErrorOpenRec'Set RST = DBS.OpenRecordset("SELECT * FROM Blokinfo", dbOpenDynaset, dbReadOnly)With RST.MoveFirst.MoveLastHistorieAantal.Text = .RecordCountOn Error GoTo ErrorCloseRec.CloseEnd WithSet RST = NothingOn Error GoTo ErrorCloseDBDBS.CloseSet DBS = NothingExit SubErrorOpenDB:ErrorOpenDB = ErrorOpenDB + 1ErrorText.Text = "#" + Str(ErrorOpenDB) + " errors in open db: " + Str(Err.Number)Exit SubErrorOpenRec:ErrorOpenRec = ErrorOpenRec + 1ErrorText.Text = "#" + Str(ErrorOpenRec) + " errors in open rec: " + Str(Err.Number)On Error Resume NextDBS.CloseSet DBS = NothingExit SubErrorUpdateRec:ErrorUpdateRec = ErrorUpdateRec + 1ErrorCount = ErrorCount + 1ErrorText.Text = "#" + Str(ErrorUpdateRec) + "(" + Str(ErrorUpdateCrit) + ") errors in update rec: " + Str(Err.Number)If (Err.Number <> 3051) And (Err.Number <> 3260) ThenErrorCount = ErrorCount + 5End If'sta een herhaling van 5 maal toe!If ErrorCount <= 5 ThenOn Error Resume NextSet RST = NothingSleep 500 'wacht een halve seconde en probeer opnieuwGoTo RetryUpdateEnd IfErrorUpdateCrit = ErrorUpdateCrit + 1ErrorText.Text = "#" + Trim(Str(ErrorUpdateRec)) + "(" + Trim(Str(ErrorUpdateCrit)) + ") errors in update rec: " + Str(Err.Number)On Error Resume NextSet RST = NothingDBS.CloseSet DBS = NothingExit SubErrorCloseRec:ErrorCloseRec = ErrorCloseRec + 1ErrorText.Text = "#" + Str(ErrorCloseRec) + " errors in close rec: " + Str(Err.Number)On Error Resume NextSet RST = NothingDBS.CloseSet DBS = NothingExit SubErrorCloseDB:ErrorCloseDB = ErrorCloseDB + 1ErrorText.Text = "#" + Str(ErrorCloseDB) + " errors in close db: " + Str(Err.Number)Set RST = NothingSet DBS = NothingExit SubEnd SubPrivate Sub Timer1_Timer()If BlokContinu ThenCall Blok_ClickEnd IfEnd Sub