AW: zu Martin Beck
02.03.2005 21:45:44
Sergej
lieber Martin es tut mir leid, dass ich nicht gleich geantwortet habe..
ich musste mein Arbeitsplatz verlassen
Ich habe deine Hilfe sehr zu schätzen!
Nun zu meinem Code:
'ich benutze RSAPI.DLL von Herrn B. Kainka zur Ansteuerung eines Gerätes über seriellen Schnittstelle.
Declare
Function READSTRING Lib "RSAPI.DLL" (ByVal $S As String) As Integer
Declare
Sub READSTRING Lib "RSAPI.DLL"(ByVal $S As String)
'#### mit Hilfe dieser Funktion kann man eine Zeichenkette über serielle Schnittstelle empfangen.########
'Hier folgen noch andere Declarationen
Sub cmdSenden()
OPENCOM "COM1:9600,N,8,1"
SENDSTRING "kmh,g"+chr$(13) '##Sende ein Commando, um Daten vom Gerät anzufordern
A$ = Space$(20) 'reserviere 20 bytes für die eingelesene Zeichenkette
i = READSTRING(A$) 'i steht für die Länge der eingelesenen Zeichenkette
RTS 1 'Ausschalten von RTS-Leitung, ist vom Endgerät abhängig, es kann auch z.B DRS sein
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, i)
End Sub
Nun wie gesagt
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, i-2)' bringt mir das was ich will, aber wird nach ein paar mal mit Fehlermeldung zurückgemeldet.
Ich habe an der zelle "F13" die Funktion LÄNGE(F13) ausprobiert und sie zeigt mir das Wert 20...obwohl in der Zelle stand 12.2334# (# steht für das Kästchen)
Nun entspricht dieser Wert genau diesen in A$ reservierten bytes
zur Erinnerung A$ = Space$(20)
Wenn ich der Inhalt der Zelle genau anschaue steht da nämlich folgendes .(das was in "")
"12.345 "nach dem Kästchen noch Leerzeichen und mit dem Komma
habe ich falsch gesagt da steht nähmlich ein Punkt
Dein Vorshlag habe ich mit
Mid$(A$, 1, Len(A$) - 2)
und mit
Left(A$, Len(A$) - 2) ausprobiert leider hat das nicht's gebracht, werde dann trozdem Morgen nochmal versuchen
trozdem vielen Dank für deine Hilfsbereitschaft und aktive Teilnahme!!!