Seite 2 von 4
Verfasst: 15.03.2006 13:56
von Sven
In a$? Die Daten werden mit ReadString() vom Port gelesen (wenn was da ist) und in a$ abgelegt. dann mit PrintN(a$) ausgegeben.
Kann aber sein, dass ReadString() nur geht, wenn die Waage die Daten mit einem CR+LF (ASCII 13 + 10) abschließt. Sonst probier mal
a$ = a$ + Char(ReadByte()), dann werden die Zeichen einzeln gelesen.
Oder nimm endlich die MVCOM-Library, die ist genau für sowas gemacht, und es sind Beispiele dabei.
Sven
Verfasst: 15.03.2006 14:25
von Then
Oder nimm endlich die MVCOM-Library...
Was glaubst Du womit ichs versucht habe ???
btw:
Mirt MVCOM komm ich an gar nix !

[/code]
Verfasst: 15.03.2006 14:53
von HeX0R
So sollte es funzen:
Code: Alles auswählen
Repeat
a$ = ""
Repeat
b = ReadByte()
If b
a$ + Chr(b & $FF)
EndIf
Until b = $0A
PrintN(a$)
Delay(500)
zahl+1
Until zahl=1000
Verfasst: 15.03.2006 17:01
von Then
nö... auch nix !
Code: Alles auswählen
Chaine.s = Hex(5)
Port.s = "com3:4800,e,7,1"
Handshake.l = 1
Buffer.l = 1024
Car.s
e.s
HCom.l = ComOpen(Port, Handshake,Buffer,Buffer)
If HCom > 0 ; Communication port is open
If ComOutput(HCom,Chaine) ; Send data
Delay(1000) ; Or other action
NbCar.l = ComInputBufferCount(HCom) > 0
While NbCar > 0
Car = Space(NbCar) ;Adjust the size of Car
If ComInputAll(HCom,Car,NbCar)
e$+ Car
EndIf
Wend
ComClose(HCom) ; Close the communication port
EndIf
EndIf
MessageRequester("",e$)
gibt auch nix von sich.... es ist zum ......
Verfasst: 15.03.2006 17:16
von HeX0R
Was ist das denn :
?
Das hatte ich aber nicht geschrieben...
Das würde das hier senden:
$35 $0D $0A
und das hat rein gar nix mit Strg+E zutun...
[Edit]und bleib endlich mal bei einer Version. Dieses ständige zwischen API und MVCOM hin- und herschalten ist nur verwirrend.
Ausserdem brauchst für den Pipifax keine MVCOM, das wäre mit Kanonen auf Spatzen geschossen...
Verfasst: 15.03.2006 17:38
von Then
Wem soll ichs denn recht machen ??

Der eine schreibt
Oder nimm endlich die MVCOM...
und der andere
[Edit]und bleib endlich mal bei einer Version...
Nun, ich probiere alles aus und habe derzeit 34 Codeschnipsel, welche ich nacheinander getestet habe - per API und per MVCOM ! Habe nun wirklich alles versucht, aber es kommt nichts an. Daß da jetzt der Fehler mit dem HEX(5) war ist klar, habs mal eben so zusammen geschustert Sorry !
Ausserdem brauchst für den Pipifax keine MVCOM, das wäre mit Kanonen auf Spatzen geschossen...
nun, dann zeig mir mal ne Lösung für den "Pipifax" ?

Verfasst: 15.03.2006 17:59
von HeX0R
Würde ich ja gerne, aber ich krieg irgendwie sogut wie keine Infos, ausser einem "Es geht nicht".
Was genau passiert hier z.B.:
Code: Alles auswählen
OpenConsole()
If Open_Com(3, 4800, 1024, 1024, #EVENPARITY, 7, #ONESTOPBIT, $2018, 50)
WriteByte(5) ;<- This should be Strg+E ... Play with it...
Repeat
a$ = ""
Repeat
b = ReadByte()
If b
Debug b
a$ + Chr(b & $FF)
EndIf
Until b = $0A
PrintN(a$)
Delay(500)
zahl+1
Until zahl=1000
Close_Com(3)
Else
PrintN("Error!, Can't open Com3")
Input()
EndIf
CloseConsole()
End
etwa gar nix ?
Aber mit deinem Com-Überwacher siehst du das vom Screenshot ?
Verfasst: 15.03.2006 18:12
von Then
ist etwas komplizierter....
Also erstmal danke für den Code. Ich generiere daraus ne EXE uns schicke diese an meinen bekannten (in Bochum) der die Waage hat. Der wiederum startet das Programm und sagt seinem Administrator bescheid, daß das Programm gestartet wurde und der kann per Monitor schauen, ob was passiert (bzw was gesendet oder empfangen wird).
Ist halt über 5 Ecken... Es handelt sich um eine Waage für LKWs ! Soviel weiß ich ! Mein Bekannter will aucheinen Code raussuchen und mir diesen mal zukommen lassen. Ich habe dem jetzt mal die EXE geschickt !
Sobald ich mehr weiß schreib ichs rein, okay ?
Verfasst: 15.03.2006 18:15
von HeX0R
Hmm... als Exe sehen wir aber den Debug nicht...
Versuch mal das hier:
Code: Alles auswählen
If Open_Com(3, 4800, 1024, 1024, #EVENPARITY, 7, #ONESTOPBIT, $2018, 50)
WriteByte(5) ;<- This should be Strg+E ... Play with it...
*Buffer = AllocateMemory(32)
TimeOUT = ElapsedMilliseconds() + 3000
If *Buffer
Repeat
Delay(20)
UseFile(3)
L + ReadData(*Buffer + L, 14 - L)
If TimeOUT < ElapsedMilliseconds()
Break
EndIf
Until L = 14
MessageRequester("Info", "Es kamen " + Str(L) + " Zeichen an :" + PeekS(*Buffer, L))
Close_Com(3)
FreeMemory(*Buffer)
EndIf
Else
MessageRequester("Error!", "Can't open Com3")
EndIf
End
Verfasst: 17.03.2006 11:11
von Then
So, nun habe ichs nochmal testen lassen, aber wir kamen auf kein Ergebnis.
Kennt jemand "NerBasic" ??
Habe da einen Quellcode bekommen, vielleicht hat jemand ne Idee den umzusetzen ?!
Code: Alles auswählen
...
30000 REM INIT STEUERZEICHEN WAAGE
30001 REM BEACHTE, NULL AHNUNG WAS und WIEVIEL šBER die LEITUNK KOMMT
30040 LET G3$="_205_" ; ENQ ( GUCKEN OB WAAGE DA )
30041 LET N3$=G3$
30042 CALL 20,2,G3$,0
30050 LET G4$="_206_" ; ACK ( VERSTANDEN)
30051 LET N4$=G4$
30052 CALL 20,2,G4$,0
30060 LET G5$="u" ; NAK ( nicht VERSTANDEN )
30061 LET N5$=G5$
30062 CALL 20,2,G5$,0
30070 LET G6$="_212_" ; 'LF'
30071 LET N6$=G6$
30072 CALL 20,2,G6$,0
30080 LET G7$="_215_" ; 'CR'
30082 CALL 20,2,G7$,0
30090 LET G8$="_202_" ; STX
30091 LET N8$=G8$
30092 CALL 20,2,G8$,0
30100 LET G9$="_203_" ; ETX
30101 LET N9$=G9$
30102 CALL 20,2,G9$,0
30190 Return
---------------------------------------------------------------------------------
;- ab hier wirds interesant !!
---------------------------------------------------------------------------------
40000 If ESC Goto 40200 ; Abbruch, Nochmal versuchen ??
40005 If ERR 0 Goto 40200 ; Abbruch, Nochmal versuchen ??
40010 LET D(1)= SPC 3 ; Zeit in 10-tel Sekunden
40020 LET D(2)=0 ; noch Kein Versuch gestartet
40030 WRITE #13;G3$ ; Sende ENQ
40040 SIGNAL 3,20
40050 If LKY 0=256 Goto 40200
40060 LET D(2)=D(2)+1
40065 If D(2)>3 Goto 40200
40070 CLEAR W$,W9$
40071 LET D(3)=0 ; Z„hler Leseversuche
40080 Read #13;W$;
40090 LET W9$( LEN W9$+1)=W$
40100 CALL 23,N6$,W9$,1,A
40110 If A>0 Goto 40152 ; Fertig !
40120 LET D(3)=D(3)+1
40125 If D(3)>10 Goto 40200
40130 SIGNAL 3,4
40135 Goto 40080 ; Nächste Daten lesen
40150 REM
...
#13 ist die Waage !!
ist nur ein Ausschnitt, aber NUR in diesem Bereich wird gelesen !