Vampire Geschrieben 6. März 2005 Geschrieben 6. März 2005 Also, dass ist jetzt was ziemlich spezielles, ich habe hier eine Ringlesemaschine (RLM) von DISAG stehen. Die kann ich per Seriell oder USB an PC hängen. Die ganzen Programme für die Auswertmaschinen sind entweder sauteuer, oder entsprechen nicht den anforderungen. Ich habe mir bereits ein Tutorial für die COM angeguckt, aber ich komme damit nicht weiter. Hier gibts die Informationen vom Hersteller (http://www.knestel.de/deutsch/protokol.htm). Ich weiß nicht, wie ich die Daten da hin hin schicken muss. Aber bei mir sendet die Maschine nichts wenn ich da was hinschicke. Hat schon mal einer was mit diesem MS Comm Control gemacht??? Zitieren
Manfred.Becker Geschrieben 7. März 2005 Geschrieben 7. März 2005 Hi Vampire, auf der Seite, die du oben angegeben hast, gibt's auch eine Download-Seite Dort wird beschrieben, wie Daten zu senden sin. Nämlich über ein sogenanntes BSSB - Protokoll für SAM 4000: BSSB - Protokoll für SAM 4000 Parameter der Schnittstelle : 9600 Baud, 8 Datenbits, 1 Startbit, 1 Stopbit, no Parity Mit der Adresse wird das PC-Protokoll ausgewählt. Adresse 0xB1 : Auswertung mit Barcode Adresse 0xB2 : Auswertung ohne Barcode PC SAM 4000 ------------------------------------- 1. ENQ -> <- NAK wenn keine Ergebnisse 2. ENQ -> <- STX wenn Ergebnisse vorhanden Daten ETB Checksumme XOR ( von STX bis ETB ) $ ACK -> wenn Daten richtig empfangen oder NAK -> Datensatz wird wiederholt Daten : Barcode ( ASCII 8 Stellen : nur Ziffern '0' - '9' ) CR Manueller Code ( ASCII 8 Stellen : nur Ziffern '0' - '9' ) CR Scheibentyp ( ASCII 2 Stellen : 'LG', 'LP', 'KK' oder 'ZS' ) CR Anzahl Scheiben ( ASCII 2 Stellen : XX ) CR Teiler-Teilerfaktor ( ASCII 3 Stellen : X.X ) CR Anzahl Einschüsse ( ASCII 2 Stellen : XX ) CR Einschüsse : Ringwert ( ASCII 4 Stellen : XX.X ) CR Teiler ( ASCII 6 Stellen : XXXX.X ) CR X-Abstand ( ASCII 4 Stellen : ±XXXX ) CR Y-Abstand ( ASCII 4 Stellen : ±XXXX ) CR Fehlerhafte oder fehlende Werte werden als ? übertragen. Alle Zahlenwerte werden mit Vornullen gefüllt. Nach jeder Zeile wird ein Carriage Return ( CR ) übertragen. Die Teiler, X-Abstand und Y-Abstand sind 1/100 mm vom Scheibenmittelpunkt. STX = 0x02, ENQ = 0x05, ACK = 0x06, CR = 0x0D, NAK = 0x15 Du musst also zuerst ein einzelnen Zeichen (ENQ = 0x02) senden, um von der Hardware zu erfahren, ob sie zur Zeit Daten senden kann (Antwort = STX) oder nicht (Antwort =NAK). Konnten diese Daten erfolgreich gelesen werden, musst du abschliessen noch ein ACK senden. Reicht das? Zitieren
Vampire Geschrieben 7. März 2005 Autor Geschrieben 7. März 2005 Hab mich schlecht ausgedrückt, die Seite hatte ich auch gefunden, aber meine Versuche das mit VB zu senden waren nicht erfolgreich. Da steht ja, zum anmelden muss man 0xB2 senden. Das hab ich dann als HEX(&HB2) und als CHR(&HB2) versucht, aber nichts wollte klappen. Und die ganzen beispiele für die COM-Schnittstelle in VB senden immer nur einfachen Text, kann ich nichts mit anfangen. Zitieren
Manfred.Becker Geschrieben 7. März 2005 Geschrieben 7. März 2005 Hi Vampire, also wenn's nur das ist. Kontrolliere folgende Eigenschaften von deinem MSComm-Objekt: 1.) CommPort=1 2.) InputLen=1 3.) InputMode=1 (commInputModeText) 4.) RThreshold=1 5.) Settings=9600,n,8,1 Dann muss noch die EreignisRoutine OnComm() ausprogrammiert sein (Doppelclick auf dein MSComm-Objekt. Sende das Zeichen ENQ: MSComm1.Output = Chr(&H5&) Die Antwortdaten landen in: MSComm1.Input Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.