995 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			QBasic
		
	
	
	
	
	
			
		
		
	
	
			995 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			QBasic
		
	
	
	
	
	
| Option Compare Database
 | |
| Option Explicit
 | |
| 
 | |
| Dim tcpConnectionKeepAlive As Boolean
 | |
| Dim tcpConnectionOpen As Boolean
 | |
| 
 | |
| Sub WiegenInitialisieren()
 | |
| 
 | |
| tcpConnectionOpen = False
 | |
| tcpConnectionKeepAlive = True
 | |
| 
 | |
| End Sub
 | |
| 
 | |
| Sub WiegenBeenden()
 | |
| 
 | |
| If tcpConnectionOpen = True Then
 | |
|  EndWinSocket
 | |
|  tcpConnectionOpen = False
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Sub
 | |
|   
 | |
| Function Wiegen(Optional Datum As Date, Optional zeit As Date, Optional Gewicht As Long, Optional Waagentext As String, Optional KeineIdentNummernErhöhung As Boolean) As Long
 | |
| 
 | |
| Dim waagentyp1
 | |
| 
 | |
| waagentyp1 = GetParameter("WAAGENTYP")
 | |
| 
 | |
| Wiegen = -1
 | |
| 
 | |
| If waagentyp1 = "TOLEDO" Then
 | |
|  Wiegen = WiegenToledo
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "GASSNER" Then
 | |
|  Wiegen = WiegenGassner(Datum, zeit, Gewicht, Waagentext)
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "SCHEMBER" Then
 | |
|  Wiegen = WiegenSchember
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "SYSTEC" Then
 | |
|  Wiegen = WiegenSystec
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "IT3000" Then
 | |
|  Wiegen = WiegenIt3000(Datum, zeit, Gewicht)
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "IT3000A" Then
 | |
|  Wiegen = WiegenIt3000a(Datum, zeit, Gewicht, Waagentext, KeineIdentNummernErhöhung)
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "L320" Then
 | |
|  Wiegen = L320(Datum, zeit, Gewicht, Waagentext)
 | |
| End If
 | |
| 
 | |
| If waagentyp1 = "L246" Then
 | |
|  Wiegen = L246(Datum, zeit, Gewicht, Waagentext, KeineIdentNummernErhöhung)
 | |
| End If
 | |
| 
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function WiegenToledo() As Long
 | |
| ' Wolkersdorf, Haugsdorf
 | |
| 
 | |
| Dim buff(0 To 11) As Integer
 | |
| Dim i, c As Integer
 | |
| Dim str1 As String
 | |
| 
 | |
| ' Send command "netto weight": "CP"
 | |
| Forms!FÜbernahme.send (Asc("C"))
 | |
| Forms!FÜbernahme.TheEvent = 0
 | |
| While Forms!FÜbernahme.TheEvent < 1
 | |
|  DoEvents
 | |
| Wend
 | |
| Forms!FÜbernahme!XComm.InBufferCount = 0
 | |
| Forms!FÜbernahme.send (Asc("P"))
 | |
| 
 | |
| ' Read whole response word: 12 Bytes
 | |
| While i < 12 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  buff(i) = c
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| If c = -1 Then
 | |
|  WiegenToledo = -1
 | |
|  Exit Function
 | |
| Else
 | |
| 'Number of read bytes OK
 | |
|  
 | |
|  'Check if format is OK
 | |
|  
 | |
|  'First byte: 02
 | |
|  If buff(0) <> 2 Then
 | |
|   WiegenToledo = -2
 | |
|   Exit Function
 | |
|  End If
 | |
|  'Bytes 9 and 10: 'kg'
 | |
|  If buff(8) <> Asc("k") Then
 | |
|   WiegenToledo = -3
 | |
|   Exit Function
 | |
|  End If
 | |
|  If buff(9) <> Asc("g") Then
 | |
|   WiegenToledo = -3
 | |
|   Exit Function
 | |
|  End If
 | |
|  'Bytes 11 and 12: 0D 0A (CRLF)
 | |
|  If buff(10) <> &HD Then
 | |
|   WiegenToledo = -4
 | |
|   Exit Function
 | |
|  End If
 | |
|  If buff(11) <> &HA Then
 | |
|   WiegenToledo = -5
 | |
|   Exit Function
 | |
|  End If
 | |
|  
 | |
|  'Convert weight to long value
 | |
|  str1 = ""
 | |
|  For i = 1 To 7
 | |
|   str1 = str1 + Chr(buff(i))
 | |
|  Next i
 | |
|  c = CLng(str1)
 | |
|  
 | |
|  WiegenToledo = c
 | |
|  
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| 
 | |
| Function WiegenGassner(Datum As Variant, zeit As Variant, Gewicht As Long, Waagentext As Variant) As Long
 | |
| 'im Moment nirgends
 | |
| 
 | |
| Dim buff(0 To 99) As Integer
 | |
| Dim i, c As Integer
 | |
| Dim str1 As String
 | |
| Dim str2 As String
 | |
| Dim waagennummer As Long
 | |
| Dim speichernummer As Long
 | |
| 
 | |
| ' Send command "ENQ": 05h
 | |
| Forms!FÜbernahme!XComm.InBufferCount = 0
 | |
| Forms!FÜbernahme.send (&H5)
 | |
| Forms!FÜbernahme.TheEvent = 0
 | |
| 
 | |
| ' Read whole response word: 25 Bytes
 | |
| While i < 47 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  buff(i) = c
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| 'str1 = ""
 | |
| 'For i = 0 To 46
 | |
| ' str1 = str1 + Hex(buff(i)) + " "
 | |
| ' str2 = str2 + Chr(buff(i))
 | |
| 'Next i
 | |
| 'MsgBox (str1 + Chr(10) + Chr(13) + str2)
 | |
| 
 | |
| If c = -1 Then
 | |
|  WiegenGassner = -1
 | |
|  Exit Function
 | |
| Else
 | |
| 'Number of read bytes OK
 | |
|  
 | |
|  'Check if format is OK
 | |
|  
 | |
|  'First byte: 02
 | |
|  If buff(0) <> 2 Then
 | |
|   WiegenGassner = -2
 | |
|   Exit Function
 | |
|  End If
 | |
|  
 | |
|  'Second byte: "E"/"S"  (" "..OK, "E" for Error)
 | |
|  If buff(1) <> Asc(" ") Then
 | |
|   WiegenGassner = -3
 | |
|   Exit Function
 | |
|  End If
 | |
|  
 | |
|  'Third byte: "S"/"M"
 | |
|  If buff(2) <> Asc("S") Then
 | |
|   WiegenGassner = -4
 | |
|   Exit Function
 | |
|  End If
 | |
|  
 | |
|  'Convert weight to long value
 | |
|  str1 = ""
 | |
|  For i = 0 To 6
 | |
|   str1 = str1 + Chr(buff(i + 17))
 | |
|  Next i
 | |
|  c = CLng(str1)
 | |
|  Gewicht = c
 | |
|  WiegenGassner = c
 | |
|  
 | |
|  'Convert weight to long value
 | |
|  str1 = ""
 | |
|  For i = 0 To 6
 | |
|   str1 = str1 + Chr(buff(i + 17))
 | |
|  Next i
 | |
|  c = CLng(str1)
 | |
|  Gewicht = c
 | |
|  WiegenGassner = c
 | |
|  
 | |
|  'Convert Waagennummer
 | |
|  str1 = ""
 | |
|  For i = 0 To 1
 | |
|   str1 = str1 + Chr(buff(i + 24))
 | |
|  Next i
 | |
|  c = CLng(str1)
 | |
|  waagennummer = c
 | |
|  
 | |
|  'Convert Speichernummer
 | |
|  str1 = ""
 | |
|  For i = 0 To 5
 | |
|   str1 = str1 + Chr(buff(i + 26))
 | |
|  Next i
 | |
|  c = CLng(str1)
 | |
|  speichernummer = c
 | |
|  
 | |
|  'Convert Datum
 | |
|  str1 = ""
 | |
|  For i = 0 To 7
 | |
|   str1 = str1 + Chr(buff(i + 32))
 | |
|  Next i
 | |
|  If IsDate(Mid(str1, 7, 2) + "." + Mid(str1, 5, 2) + "." + Mid(str1, 1, 4)) Then
 | |
|   Datum = DateValue(Mid(str1, 7, 2) + "." + Mid(str1, 5, 2) + "." + Mid(str1, 1, 4))
 | |
|  End If
 | |
|  
 | |
|  'Convert Zeit
 | |
|  str1 = ""
 | |
|  For i = 0 To 5
 | |
|   str1 = str1 + Chr(buff(i + 40))
 | |
|  Next i
 | |
|  If IsDate(Mid(str1, 1, 2) + ":" + Mid(str1, 3, 2) + ":" + Mid(str1, 5, 2)) Then
 | |
|   zeit = TimeValue(Mid(str1, 1, 2) + ":" + Mid(str1, 3, 2) + ":" + Mid(str1, 5, 2))
 | |
|  End If
 | |
|  Waagentext = "Waagennummer: " + Format(waagennummer) + "  Speichernummer: " + Format(speichernummer)
 | |
|  
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| Function WiegenGassnerAlt() As Long
 | |
| 'im Moment nirgends
 | |
| 
 | |
| Dim buff(0 To 24) As Integer
 | |
| Dim i, c As Integer
 | |
| Dim str1 As String
 | |
| 
 | |
| ' Send command "ENQ": 05h
 | |
| Forms!FÜbernahme!XComm.InBufferCount = 0
 | |
| Forms!FÜbernahme.send (&H5)
 | |
| Forms!FÜbernahme.TheEvent = 0
 | |
| 
 | |
| ' Read whole response word: 25 Bytes
 | |
| While i < 25 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  buff(i) = c
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| If c = -1 Then
 | |
|  WiegenGassnerAlt = -1
 | |
|  Exit Function
 | |
| Else
 | |
| 'Number of read bytes OK
 | |
|  
 | |
|  'Check if format is OK
 | |
|  
 | |
|  'First byte: 02
 | |
|  If buff(0) <> 2 Then
 | |
|   WiegenGassnerAlt = -2
 | |
|   Exit Function
 | |
|  End If
 | |
|  
 | |
|  'Second byte: "E"/"S"  (" "..OK, "E" for Error)
 | |
|  If buff(1) <> " " Then
 | |
|   WiegenGassnerAlt = -3
 | |
|   Exit Function
 | |
|  End If
 | |
|  
 | |
|  'Third byte: "S"/"M"
 | |
|  If buff(2) <> "S" Then
 | |
|   WiegenGassnerAlt = -4
 | |
|   Exit Function
 | |
|  End If
 | |
|   
 | |
|  'Byte 25
 | |
|  'If buff(24) <> &H3 Then
 | |
|  ' WiegenGassner = -5
 | |
|  ' Exit Function
 | |
|  'End If
 | |
|  
 | |
|  'Convert weight to long value
 | |
|  str1 = ""
 | |
|  For i = 0 To 6
 | |
|   str1 = str1 + Chr(buff(i + 17))
 | |
|  Next i
 | |
|  c = CLng(str1)
 | |
|  
 | |
|  WiegenGassnerAlt = c
 | |
|  
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| 
 | |
| Function WiegenSchember() As Long
 | |
| 
 | |
| ' Matzen
 | |
| 
 | |
| Dim buff(0 To 24) As Integer
 | |
| Dim i, c As Integer
 | |
| Dim str1 As String
 | |
| 
 | |
| ' Send command "27,62"
 | |
| Forms!FÜbernahme.send (27)
 | |
| Forms!FÜbernahme.TheEvent = 0
 | |
| While Forms!FÜbernahme.TheEvent < 1
 | |
|  DoEvents
 | |
| Wend
 | |
| Forms!FÜbernahme.XComm.InBufferCount = 0
 | |
| Forms!FÜbernahme.send (62)
 | |
| 
 | |
| ' Read whole response word: 12 Bytes
 | |
| While i < 25 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  buff(i) = c
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| If c = -1 Then
 | |
|  WiegenSchember = -1
 | |
|  Exit Function
 | |
| Else
 | |
| 'Number of read bytes OK
 | |
|  
 | |
|  'Check if format is OK
 | |
|  
 | |
|  'First byte: 02
 | |
|  If buff(0) <> 2 Then
 | |
|   WiegenSchember = -2
 | |
|   Exit Function
 | |
|  End If
 | |
| 
 | |
|  'Bytes 11 and 12: 0D 0A (CRLF)
 | |
|  If buff(24) <> 3 Then
 | |
|   WiegenSchember = -4
 | |
|   Exit Function
 | |
|  End If
 | |
| 
 | |
|  'Convert weight to long value
 | |
|  str1 = ""
 | |
|  For i = 16 To 19
 | |
|   str1 = str1 + Chr(buff(i))
 | |
|  Next i
 | |
|  str1 = str1 + ","
 | |
|  str1 = str1 + Chr(buff(20))
 | |
|  c = CDbl(str1)
 | |
|  
 | |
|  
 | |
|  WiegenSchember = c
 | |
|  
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function WiegenSystec() As Long
 | |
| 
 | |
| ' Matzen
 | |
| 
 | |
| Dim buff(0 To 50) As Integer
 | |
| Dim i, c As Integer
 | |
| Dim str1 As String
 | |
| 
 | |
| 
 | |
| Forms!FÜbernahme.XComm.InBufferCount = 0
 | |
| 
 | |
| 'Wait for STX
 | |
| Do
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
| Loop Until c = 2
 | |
| buff(0) = c
 | |
| 
 | |
| i = 1
 | |
| While i < 17 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  buff(i) = c
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| If c = -1 Then
 | |
|  WiegenSystec = -1
 | |
|  Exit Function
 | |
| Else
 | |
| 
 | |
| 'Number of read bytes OK
 | |
|  
 | |
| 'Check if format is OK
 | |
|  
 | |
|  'First byte: 02
 | |
|  If buff(0) <> 2 Then
 | |
|   WiegenSystec = -2
 | |
|   Exit Function
 | |
|  End If
 | |
| 
 | |
|  'Convert weight to long value
 | |
|  str1 = ""
 | |
|  For i = 4 To 9
 | |
|   str1 = str1 + Chr(buff(i))
 | |
|  Next i
 | |
|  c = CDbl(str1)
 | |
|  
 | |
|  WiegenSystec = c
 | |
|  
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function WiegenIt3000(Datum As Date, zeit As Date, Gewicht As Long) As Long
 | |
| ' Röschitz
 | |
| 
 | |
| Dim c As Integer
 | |
| Dim recordcount As Integer
 | |
| Dim record(0 To 20) As String
 | |
| 
 | |
| 'Receive STX
 | |
| While c <> 2 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
| Wend
 | |
| If c = -1 Then
 | |
|  WiegenIt3000 = -1
 | |
|  Forms!FÜbernahme.send (&H15) 'NAK
 | |
|  Exit Function
 | |
| End If
 | |
| 'Receive Buffer and terminating ETX
 | |
| recordcount = 0
 | |
| record(recordcount) = ""
 | |
| While c <> -1 And c <> 3 'ETX
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  If c = Asc(";") Or c = 3 Then
 | |
|   recordcount = recordcount + 1
 | |
|   record(recordcount) = ""
 | |
|  Else
 | |
|   If c <> -1 Then
 | |
|    record(recordcount) = record(recordcount) + Chr(c)
 | |
|   End If
 | |
|  End If
 | |
| Wend
 | |
| If c = -1 Then
 | |
|  WiegenIt3000 = -2
 | |
|  Forms!FÜbernahme.send (&H15) 'NAK
 | |
|  Exit Function
 | |
| End If
 | |
| 
 | |
| 'interpret records
 | |
| If recordcount < 4 Then
 | |
|  'too less records
 | |
|  WiegenIt3000 = -3
 | |
|  Forms!FÜbernahme.send (&H15) 'NAK
 | |
|  Exit Function
 | |
| End If
 | |
| 'record(0) is waagennummer
 | |
| Datum = DateValue(record(1))
 | |
| zeit = TimeValue(record(2))
 | |
| Gewicht = Val(record(3))
 | |
| 
 | |
| 'send acknowledge
 | |
| Forms!FÜbernahme.send (6) 'ACK
 | |
| 
 | |
| Forms!FÜbernahme!XComm.InBufferCount = 0
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| Function WiegenIt3000a(Datum As Date, zeit As Date, Gewicht As Long, Waagentext As String, KeineIdentNummernErhöhung As Boolean) As Long
 | |
| ' Matzen, Wolkersdorf
 | |
| 
 | |
| Dim c As Integer
 | |
| Dim i As Integer
 | |
| Dim Data As String
 | |
| Dim record As String
 | |
| Dim waagennummer As Long
 | |
| Dim speichernummer As Long
 | |
| 
 | |
| Forms!FÜbernahme.XComm.InBufferCount = 0
 | |
| Forms!FÜbernahme.TheEvent = 0
 | |
| 
 | |
| If KeineIdentNummernErhöhung = True Then
 | |
| 'Send command
 | |
|  Forms!FÜbernahme.send (Asc("<"))
 | |
|  Forms!FÜbernahme.send (Asc("R"))
 | |
|  Forms!FÜbernahme.send (Asc("M"))
 | |
|  Forms!FÜbernahme.send (Asc(">"))
 | |
| Else
 | |
| 'Send command
 | |
|  Forms!FÜbernahme.send (Asc("<"))
 | |
|  Forms!FÜbernahme.send (Asc("R"))
 | |
|  Forms!FÜbernahme.send (Asc("N"))
 | |
|  Forms!FÜbernahme.send (Asc(">"))
 | |
| End If
 | |
| 
 | |
| 'Receive record
 | |
| i = 0
 | |
| Data = ""
 | |
| While i < 64 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  If c <> -1 Then
 | |
|   Data = Data + Chr(c)
 | |
|  End If
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| 'MsgBox (data)
 | |
| 
 | |
| 'skip < and >
 | |
| Data = Mid(Data, 2, 62)
 | |
| 
 | |
| 
 | |
| If c = -1 Then
 | |
|  WiegenIt3000a = -1
 | |
|  Exit Function
 | |
| End If
 | |
| 
 | |
| 'interpret data
 | |
| '1. Fehlercode, Waagenstatus
 | |
| record = Left(Data, 4)
 | |
| Data = Mid(Data, 5)
 | |
| If record <> "0000" Then
 | |
|  WiegenIt3000a = -2
 | |
|  Exit Function
 | |
| End If
 | |
| '2. Date
 | |
| record = Left(Data, 8)
 | |
| Data = Mid(Data, 9)
 | |
| If IsDate(record) Then
 | |
|  Datum = DateValue(record)
 | |
| Else
 | |
|  WiegenIt3000a = -3
 | |
|  Exit Function
 | |
| End If
 | |
| '2. Time
 | |
| record = Left(Data, 5)
 | |
| record = record + ":00"
 | |
| Data = Mid(Data, 6)
 | |
| If IsDate(record) Then
 | |
|  zeit = TimeValue(record)
 | |
| Else
 | |
|  WiegenIt3000a = -4
 | |
|  Exit Function
 | |
| End If
 | |
| '4. Identnr
 | |
| record = Left(Data, 4)
 | |
| Data = Mid(Data, 5)
 | |
| speichernummer = Val(record)
 | |
| '5. Waagennr
 | |
| record = Left(Data, 1)
 | |
| Data = Mid(Data, 2)
 | |
| waagennummer = Val(record)
 | |
| '6. Brutto
 | |
| record = Left(Data, 8)
 | |
| Data = Mid(Data, 9)
 | |
| '7. Tara
 | |
| record = Left(Data, 8)
 | |
| Data = Mid(Data, 9)
 | |
| '8. Netto
 | |
| record = Left(Data, 8)
 | |
| Data = Mid(Data, 9)
 | |
| If IsNumeric(record) Then
 | |
|  Gewicht = Val(record)
 | |
| Else
 | |
|  WiegenIt3000a = -5
 | |
|  Exit Function
 | |
| End If
 | |
| '9. kg
 | |
| record = Left(Data, 2)
 | |
| Data = Mid(Data, 3)
 | |
| If record <> "kg" Then
 | |
|  WiegenIt3000a = -6
 | |
|  Exit Function
 | |
| End If
 | |
| 
 | |
| 'rest wird nicht ausgewertet
 | |
|  
 | |
| Waagentext = "Waagenr: " + Format(waagennummer) + "  ID: " + Format(speichernummer)
 | |
| 
 | |
| WiegenIt3000a = Gewicht
 | |
| 
 | |
| End Function
 | |
| 
 | |
| Sub testl320()
 | |
| 
 | |
| Dim Datum As Date
 | |
| Dim zeit As Date
 | |
| Dim Gewicht As Long
 | |
| Dim Waagentext As String
 | |
| Dim chk As String
 | |
| Dim Data As String
 | |
| 
 | |
| Data = " 17.04.14 12:58    2        72kg" + Chr(10)
 | |
| 
 | |
| Data = Mid(Data, 2)
 | |
| Datum = CDate(Left(Data, 8))
 | |
| Data = Mid(Data, 10)
 | |
| zeit = CDate(Left(Data, 5))
 | |
| Data = Mid(Data, 7)
 | |
| Waagentext = Left(Data, 4)
 | |
| Data = Mid(Data, 6)
 | |
| Gewicht = CLng(Left(Data, 9))
 | |
| Data = Mid(Data, 11)
 | |
| chk = Left(Data, 2)
 | |
| 
 | |
| MsgBox (Datum)
 | |
| MsgBox (zeit)
 | |
| MsgBox (Gewicht)
 | |
| MsgBox (Waagentext)
 | |
| 
 | |
| End Sub
 | |
| 
 | |
| 
 | |
| Function L320(Datum As Date, zeit As Date, Gewicht As Long, Waagentext As String) As Long
 | |
| 
 | |
| Dim c As Long
 | |
| Dim Data As String
 | |
| Dim chk As String
 | |
| Dim i As Integer
 | |
| Dim str1 As String
 | |
| 'Receive record
 | |
| str1 = ""
 | |
| 
 | |
| Data = ""
 | |
| 
 | |
| c = Forms!FÜbernahme.Receive()
 | |
| str1 = Format(c)
 | |
| 'Forms!FÜbernahme!XComm.InBufferCount
 | |
| If c = 32 Then
 | |
|  i = 1
 | |
|  Data = Data + Chr(c)
 | |
| Else
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  str1 = str1 + "," + Format(c)
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  str1 = str1 + "," + Format(c)
 | |
|  'MsgBox (str1)
 | |
|  L320 = -9
 | |
|  Exit Function
 | |
| End If
 | |
| 
 | |
| While i < 33 And c <> -1
 | |
|  c = Forms!FÜbernahme.Receive()
 | |
|  If c <> -1 Then
 | |
|   Data = Data + Chr(c)
 | |
|  End If
 | |
|  str1 = str1 + "," + Format(c)
 | |
|  i = i + 1
 | |
| Wend
 | |
| 
 | |
| '1: 0x20
 | |
| '2-9: Date 17.04.14
 | |
| '10 0x20
 | |
| '11-15: Time 12:58
 | |
| '16: 0x20
 | |
| '17-20: wiegenr
 | |
| '21: 0x20
 | |
| '22-30: gewicht
 | |
| '31-32: kg
 | |
| '33: 0x0A
 | |
| 'MsgBox (str1 + ":" + Format(Len(data)) + ":" & data)
 | |
| If Len(Data) >= 33 Then
 | |
|     Data = Mid(Data, 2)
 | |
|     Datum = CDate(Left(Data, 8))
 | |
|     Data = Mid(Data, 10)
 | |
|     zeit = CDate(Left(Data, 5))
 | |
|     Data = Mid(Data, 7)
 | |
|     Waagentext = Left(Data, 4)
 | |
|     Data = Mid(Data, 6)
 | |
|     Gewicht = CLng(Left(Data, 9))
 | |
|     Data = Mid(Data, 10)
 | |
|     chk = Left(Data, 2)
 | |
|     If chk <> "kg" Then
 | |
|      'MsgBox ("Fehler! Waagenrecord nicht korrekt")
 | |
|      L320 = -1
 | |
|     Else
 | |
|      L320 = Gewicht
 | |
|     End If
 | |
| Else
 | |
|  L320 = -9
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function L246(Datum As Date, zeit As Date, Gewicht As Long, Waagentext As String, KeineIdentNummernErhöhung As Boolean) As Long
 | |
| 
 | |
| ' 1. open tcp port
 | |
| Dim host As String
 | |
| Dim tcpport As Long
 | |
| Dim result As Long
 | |
| 
 | |
| If tcpConnectionOpen = False Then
 | |
|     host = GetParameter("WAAGEHOST")
 | |
|     tcpport = GetParameter("WAAGETCPPORT")
 | |
|     StartWinSocket
 | |
|     result = ConnectToServer(host, tcpport)
 | |
|     If result > 0 Then
 | |
|      tcpConnectionOpen = True
 | |
|     End If
 | |
| End If
 | |
| 
 | |
| If tcpConnectionOpen = True Then
 | |
|      ' 2. send command
 | |
|      If (KeineIdentNummernErhöhung) Then
 | |
|       SendData "<RM1>"
 | |
|      Else
 | |
|       SendData "<RN1>"
 | |
|      End If
 | |
|     
 | |
|     ' 3. receive data
 | |
|     Dim response As String
 | |
|     
 | |
|     response = ReceiveString(65)
 | |
|     
 | |
|     ' 4. parse message
 | |
|     'MsgBox (response)
 | |
|     'Dim fehlerS As String
 | |
|     Dim datumS As String
 | |
|     Dim zeitS As String
 | |
|     Dim identNrS As String
 | |
|     Dim nettoS As String
 | |
|     Dim waagennummerS As String
 | |
|     Dim fehlerS As String
 | |
|     
 | |
|     fehlerS = Mid(response, 2, 2)
 | |
|     datumS = Mid(response, 6, 8)
 | |
|     zeitS = Mid(response, 14, 5)
 | |
|     identNrS = Mid(response, 19, 4)
 | |
|     waagennummerS = Mid(response, 23, 1)
 | |
|     nettoS = Mid(response, 40, 8)
 | |
|     
 | |
|     
 | |
|     If fehlerS <> "00" Then
 | |
|      MsgBox "Fehlermeldung Waage", vbCritical
 | |
|     End If
 | |
|     
 | |
|     Datum = CDate(datumS)
 | |
|     zeit = CDate(zeitS)
 | |
|     Waagentext = "Waagenr: " + Format(waagennummerS) + "  ID: " + Format(identNrS)
 | |
|     Gewicht = CLng(nettoS)
 | |
|     
 | |
|     'MsgBox (datum)
 | |
|     'MsgBox (zeit)
 | |
|     'MsgBox (waagentext)
 | |
|     'MsgBox (Gewicht)
 | |
|     
 | |
|     
 | |
|     ' 5. close port
 | |
|     If tcpConnectionKeepAlive = False Then
 | |
|      EndWinSocket
 | |
|      tcpConnectionOpen = False
 | |
|     End If
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| Function KippenL246(onoff As Boolean)
 | |
| 
 | |
| Dim host As String
 | |
| Dim tcpport As Long
 | |
| Dim result As Long
 | |
| If tcpConnectionOpen = False Then
 | |
|     host = GetParameter("WAAGEHOST")
 | |
|     tcpport = GetParameter("WAAGETCPPORT")
 | |
|     StartWinSocket
 | |
|     result = ConnectToServer(host, tcpport)
 | |
|     If result > 0 Then
 | |
|      tcpConnectionOpen = True
 | |
|     End If
 | |
| End If
 | |
| 
 | |
| If tcpConnectionOpen = True Then
 | |
|     ' 2. send command
 | |
|     If onoff Then
 | |
|      SendData "<OS02>"
 | |
|     Else
 | |
|      SendData "<OC02>"
 | |
|     End If
 | |
|     
 | |
|     ' 3. receive data
 | |
|     Dim response As String
 | |
|     
 | |
|     response = ReceiveString(5)
 | |
|     
 | |
|     ' 4. parse message
 | |
|     If Left(response, 4) <> "<00>" Then
 | |
|      MsgBox "Fehler beim Ansteuern des digitalen Ausganges", vbCritical
 | |
|     End If
 | |
| 
 | |
|     ' 5. close port
 | |
|     If tcpConnectionKeepAlive = False Then
 | |
|      EndWinSocket
 | |
|      tcpConnectionOpen = False
 | |
|     End If
 | |
|     
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function FreigabeL246(onoff As Boolean)
 | |
| 
 | |
| Dim host As String
 | |
| Dim tcpport As Long
 | |
| Dim result As Long
 | |
| 
 | |
| If tcpConnectionOpen = False Then
 | |
|     host = GetParameter("WAAGEHOST")
 | |
|     tcpport = GetParameter("WAAGETCPPORT")
 | |
|     StartWinSocket
 | |
|     result = ConnectToServer(host, tcpport)
 | |
|     If result > 0 Then
 | |
|      tcpConnectionOpen = True
 | |
|     End If
 | |
| End If
 | |
| 
 | |
| If tcpConnectionOpen = True Then
 | |
|     ' 2. send command
 | |
|     If onoff Then
 | |
|      SendData "<OS01>"
 | |
|     Else
 | |
|      SendData "<OC01>"
 | |
|     End If
 | |
|     
 | |
|     ' 3. receive data
 | |
|     Dim response As String
 | |
|     
 | |
|     response = ReceiveString(5)
 | |
|     
 | |
|     ' 4. parse message
 | |
|     If Left(response, 4) <> "<00>" Then
 | |
|      MsgBox "Fehler beim Ansteuern des digitalen Ausganges", vbCritical
 | |
|     End If
 | |
|     
 | |
|     ' 5. close port
 | |
|     If tcpConnectionKeepAlive = False Then
 | |
|      EndWinSocket
 | |
|      tcpConnectionOpen = False
 | |
|     End If
 | |
| End If
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Sub TestL246()
 | |
| 
 | |
| Dim Datum As Date
 | |
| Dim zeit As Date
 | |
| Dim Gewicht As Long
 | |
| Dim Waagentext As String
 | |
| 
 | |
| WiegenInitialisieren
 | |
| L246 Datum, zeit, Gewicht, Waagentext, True
 | |
| L246 Datum, zeit, Gewicht, Waagentext, True
 | |
| L246 Datum, zeit, Gewicht, Waagentext, True
 | |
| KippenL246 (True)
 | |
| KippenL246 (False)
 | |
| WiegenBeenden
 | |
| 
 | |
| 
 | |
| End Sub
 | |
| 
 | |
| 
 | |
| 
 | |
| Function Kippen(onoff As Boolean)
 | |
| 
 | |
| Dim steuerungtyp1
 | |
| Dim extbefehl
 | |
| 
 | |
| steuerungtyp1 = GetParameter("STEUERUNGTYP")
 | |
| 
 | |
| If steuerungtyp1 = "SERIELL" Then
 | |
|  KippenSeriell (onoff)
 | |
| End If
 | |
| 
 | |
| If steuerungtyp1 = "PARALLEL" Then
 | |
|  KippenParallel (onoff)
 | |
| End If
 | |
| 
 | |
| 
 | |
| If steuerungtyp1 = "L246" Then
 | |
|  KippenL246 (onoff)
 | |
| End If
 | |
| 
 | |
| If steuerungtyp1 = "EXTERN" Then
 | |
|  extbefehl = GetParameter("STEUERUNGEXTERN")
 | |
|  If Not IsNull(extbefehl) And onoff = True Then
 | |
|   Shell extbefehl, vbMinimizedFocus
 | |
|  Else
 | |
|   MsgBox "Externes Programm nicht gefunden!", vbCritical
 | |
|  End If
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| 
 | |
| Function KippenSeriell(onoff As Boolean)
 | |
| 
 | |
| ' Kippen: RTS Signal von COMx der Steuerung (i.a. COM2)
 | |
| ' SubD 25: Pin 4, SubD 9: 7
 | |
| 
 | |
|  Forms!FÜbernahme.XCommSteuerung.RTSEnable = onoff
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function KippenParallel(onoff As Boolean)
 | |
| 
 | |
| ' Kippen: Über Datenleitungen des Ports
 | |
| 
 | |
| 
 | |
| Dim port1
 | |
| Dim tport1
 | |
| Dim databyte As Byte
 | |
| 
 | |
| port1 = GetParameter("STEUERUNGPORT")
 | |
| 
 | |
| If Not IsNull(port1) Then
 | |
| 
 | |
|  Select Case port1
 | |
|  
 | |
|  Case "1": tport1 = "LPT1"
 | |
| 
 | |
|  Case "2": tport1 = "LPT2"
 | |
|  
 | |
|  Case "3": tport1 = "LPT3"
 | |
| 
 | |
|  End Select
 | |
|  
 | |
| End If
 | |
| 
 | |
| If onoff = True Then
 | |
|   databyte = 255
 | |
| Else
 | |
|   databyte = 0
 | |
| End If
 | |
| 
 | |
| Open tport1 For Binary Access Write As #1
 | |
| Put #1, , databyte
 | |
| 
 | |
| Close #1
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Function Freigabe(onoff As Boolean)
 | |
| 
 | |
| Dim steuerungtyp1
 | |
| Dim extbefehl
 | |
| 
 | |
| steuerungtyp1 = GetParameter("STEUERUNGTYP")
 | |
| 
 | |
| If steuerungtyp1 = "L246" Then
 | |
|  FreigabeL246 (onoff)
 | |
| End If
 | |
| 
 | |
| 
 | |
| End Function
 | |
| 
 | |
| 
 | |
| Sub testkippen()
 | |
| 
 | |
| KippenParallel (True)
 | |
| KippenParallel (False)
 | |
| 
 | |
| End Sub |